Prófaðu viðskiptavin TON (Telegram Open Network) og nýtt Fift tungumál fyrir snjalla samninga

Fyrir meira en ári síðan varð vitað um áætlanir Telegram boðberans um að gefa út sitt eigið dreifða net Telegram Open Network. Þá varð fyrirferðarmikið tækniskjal aðgengilegt, sem var að sögn skrifað af Nikolai Durov og lýsti uppbyggingu framtíðarnetsins. Fyrir þá sem misstu af því mæli ég með því að þið lesið endursögn mína af þessu skjali (Part 1, Part 2; þriðji hlutinn, því miður, er enn að safna ryki í drögum).

Síðan þá hafa engar marktækar fréttir borist um stöðu TON þróunar fyrr en fyrir nokkrum dögum (í einum af óopinberar rásir) tengillinn á síðuna birtist ekki https://test.ton.org/download.html, hvar eru staðsettar:
tonn-próf-liteclient-full.tar.xz — uppsprettur ljósbiðlara fyrir TON prófunarnetið;
ton-lite-client-test1.config.json — stillingarskrá fyrir tengingu við prófunarnetið;
README — upplýsingar um byggingu og ræsingu viðskiptavinarins;
HVERNIG Á AÐ — skref-fyrir-skref leiðbeiningar um að búa til snjallsamning með því að nota viðskiptavin;
tonn.pdf — uppfært skjal (dagsett 2. mars 2019) með tæknilegu yfirliti yfir TON netið;
tvm.pdf — tæknilýsing á TVM (TON sýndarvél, TON sýndarvél);
tblkch.pdf - tæknilýsing á TON blockchain;
fifthbase.pdf — lýsing á nýju Fift tungumáli, hannað til að búa til snjalla samninga í TON.

Ég endurtek, það var engin opinber staðfesting á síðunni og öllum þessum skjölum frá Telegram, en magn þessara efna gerir þau nokkuð trúverðug. Ræstu útgefna viðskiptavininn á eigin ábyrgð.

Að byggja upp prófunarviðskiptavin

Fyrst skulum við reyna að byggja upp og keyra prófunarviðskiptavin - sem betur fer, README lýsir þessu einfalda ferli í smáatriðum. Ég mun gera þetta með því að nota macOS 10.14.5 sem dæmi; ég get ekki ábyrgst árangur af smíði á öðrum kerfum.

  1. Sækja og taka upp heimildasafn. Það er mikilvægt að hlaða niður nýjustu útgáfunni þar sem afturábak eindrægni er ekki tryggð á þessu stigi.

  2. Gakktu úr skugga um að nýjustu útgáfur af make, cmake (útgáfa 3.0.2 eða nýrri), OpenSSL (þar á meðal C hausskrár), g++ eða clang séu settar upp á kerfinu. Ég þurfti ekki að setja neitt upp, allt kom strax saman.

  3. Gerum ráð fyrir að heimildunum sé pakkað niður í möppu ~/lite-client. Aðskilið frá því skaltu búa til tóma möppu fyrir samsetta verkefnið (til dæmis, ~/liteclient-build), og úr því (cd ~/liteclient-build) hringdu í skipanirnar:

    cmake ~/lite-client
    cmake --build . --target test-lite-client

    Prófaðu viðskiptavin TON (Telegram Open Network) og nýtt Fift tungumál fyrir snjalla samninga

    Til að byggja upp Fift tungumálatúlkinn fyrir snjalla samninga (meira um það hér að neðan), hringjum við líka

    cmake --build . --target fift

  4. Sækja núverandi stillingarskrá til að tengjast prófunarnetinu og setja það í möppuna með samsettum biðlara.

  5. Lokið, þú getur ræst viðskiptavininn:

    ./test-lite-client -C ton-lite-client-test1.config.json

Ef allt er gert rétt ættirðu að sjá eitthvað á þessa leið:

Prófaðu viðskiptavin TON (Telegram Open Network) og nýtt Fift tungumál fyrir snjalla samninga

Eins og við sjáum eru fáar skipanir tiltækar:
help — birta þennan lista yfir skipanir;
quit - Farðu út;
time - sýna núverandi tíma á þjóninum;
status — sýna tenginguna og staðbundna gagnagrunnsstöðu;
last - uppfærðu stöðu blockchain (halaðu niður síðustu blokkinni). Það er mikilvægt að keyra þessa skipun fyrir allar beiðnir til að vera viss um að þú sjáir núverandi stöðu netsins.
sendfile <filename> - hladdu upp staðbundinni skrá á TON netið. Þetta er hvernig samskipti við netið eiga sér stað - þar á meðal, til dæmis, gerð nýrra snjallsamninga og beiðnir um að flytja fjármuni á milli reikninga;
getaccount <address> - sýna strauminn (á þeim tíma sem skipunin var framkvæmd) last) stöðu reikningsins með tilgreint heimilisfang;
privkey <filename> — hlaðið einkalyklinum úr staðbundinni skrá.

Ef þú flytur möppu í hann þegar þú ræsir biðlarann ​​með því að nota valkostinn -D, þá mun hann bæta síðustu blokkinni af masterchain inn í það:

./test-lite-client -C ton-lite-client-test1.config.json -D ~/ton-db-dir

Núna getum við haldið áfram að áhugaverðari hlutum - lærðu Fift tungumálið, reyndu að setja saman snjallsamning (til dæmis búa til prufuveski), hlaða því upp á netið og reyndu að flytja fjármuni á milli reikninga.

Tungumál Fift

Úr skjalinu fifthbase.pdf þú getur komist að því að Telegram teymið hefur búið til nýtt staflatungumál til að búa til snjalla samninga Fimmtu (sýnilega út frá tölunum fimmta, svipað og Forth, tungumál sem Fifth á margt sameiginlegt með).

Skjalið er nokkuð fyrirferðarmikið, 87 blaðsíður, og ég mun ekki endursegja innihald þess í smáatriðum innan ramma þessarar greinar (að minnsta kosti vegna þess að ég hef ekki lokið við að lesa það sjálfur :). Ég mun einbeita mér að aðalatriðum og gefa nokkur kóðadæmi á þessu tungumáli.

Á grunnstigi er setningafræði Fift frekar einföld: kóðinn hans samanstendur af orð, venjulega aðskilin með bilum eða línuskilum (sértilvik: sum orð þurfa ekki skilrúm eftir sig). Einhver orðið er hástafanæm röð stafa sem samsvarar ákveðnu ákvörðun um (í grófum dráttum, hvað túlkurinn ætti að gera þegar hann rekst á þetta orð). Ef það er engin skilgreining á orði reynir túlkurinn að flokka það sem tölu og setja það á staflann. Við the vegur, tölurnar hér eru - skyndilega - 257 bita heiltölur, og það eru engin brot - nánar tiltekið, þær breytast strax í par af heiltölum, sem mynda teljara og nefnara skynsamlegs brots.

Orð hafa tilhneigingu til að hafa samskipti við gildi efst í staflanum. Sérstök tegund orða - forskeyti — notar ekki staflan, heldur síðari stafi úr frumskránni. Til dæmis er þetta hvernig strengjabókstafir eru útfærðir - tilvitnunarstafurinn (") er forskeyti orð sem leitar að næstu (lokandi) tilvitnun, og ýtir strengnum á milli þeirra á stafla. Oneliners haga sér á sama hátt (//) og marglína (/*) athugasemdir.

Þar lýkur nánast allri innri uppbyggingu tungumálsins. Allt annað (þar á meðal stjórnsmíði) er skilgreint sem orð (annaðhvort innra, eins og reikniaðgerðir og skilgreining á nýjum orðum; eða skilgreint í "staðlaða bókasafninu" Fift.fif, sem er í möppunni crypto/fift í heimildum).

Einfalt dæmi um forrit í Fift:

{ dup =: x dup * =: y } : setxy
3 setxy x . y . x y + .
7 setxy x . y . x y + .

Fyrsta línan skilgreinir nýtt orð setxy (takið eftir forskeytinu {, sem býr til blokk fyrir lokunina } og forskeyti :, sem í raun skilgreinir orðið). setxy tekur tölu efst í staflanum, skilgreinir (eða endurskilgreinir) hana sem alþjóðlega fastur x, og veldi þessarar tölu sem fasta y (Í ljósi þess að hægt er að endurskilgreina gildi fasta, myndi ég frekar kalla þær breytur, en ég fylgi nafnareglunni í tungumálinu).

Næstu tvær línur setja númer á stafla og hringja setxy, þá birtast gildi fastanna x, y (orðið er notað fyrir úttak .), eru báðir fastarnir settir á staflann, teknir saman og niðurstaðan er einnig prentuð. Fyrir vikið munum við sjá:

3 9 12 ok
7 49 56 ok

(Línan „ok“ er prentuð af túlknum þegar hann lýkur vinnslu núverandi línu í gagnvirkri innsláttarham)

Jæja, dæmi um fullt kóða:

"Asm.fif" include

-1 constant wc  // create a wallet in workchain -1 (masterchain)

// Create new simple wallet
<{  SETCP0 DUP IFNOTRET INC 32 THROWIF  // return if recv_internal, fail unless recv_external
    512 INT LDSLICEX DUP 32 PLDU   // sign cs cnt
    c4 PUSHCTR CTOS 32 LDU 256 LDU ENDS  // sign cs cnt cnt' pubk
    s1 s2 XCPU            // sign cs cnt pubk cnt' cnt
    EQUAL 33 THROWIFNOT   // ( seqno mismatch? )
    s2 PUSH HASHSU        // sign cs cnt pubk hash
    s0 s4 s4 XC2PU        // pubk cs cnt hash sign pubk
    CHKSIGNU              // pubk cs cnt ?
    34 THROWIFNOT         // signature mismatch
    ACCEPT
    SWAP 32 LDU NIP 
    DUP SREFS IF:<{
      8 LDU LDREF         // pubk cnt mode msg cs
      s0 s2 XCHG SENDRAWMSG  // pubk cnt cs ; ( message sent )
    }>
    ENDS
    INC NEWC 32 STU 256 STU ENDC c4 POPCTR
}>c
// code
<b 0 32 u, 
   newkeypair swap dup constant wallet_pk 
   "new-wallet.pk" B>file
   B, 
b> // data
// no libraries
<b b{00110} s, rot ref, swap ref, b>  // create StateInit
dup ."StateInit: " <s csr. cr
dup hash dup constant wallet_addr
."new wallet address = " wc . .": " dup x. cr
wc over 7 smca>$ type cr
256 u>B "new-wallet.addr" B>file
<b 0 32 u, b>
dup ."signing message: " <s csr. cr
dup hash wallet_pk ed25519_sign_uint rot
<b b{1000100} s, wc 8 i, wallet_addr 256 u, b{000010} s, swap <s s, b{0} s, swap B, swap <s s, b>
dup ."External message for initialization is " <s csr. cr
2 boc+>B dup Bx. cr
"new-wallet-query.boc" tuck B>file
."(Saved to file " type .")" cr

Þessi ógnvekjandi skrá er til að búa til snjöllan samning - hún verður sett í skrá new-wallet-query.boc eftir aftöku. Vinsamlegast athugaðu að annað samsetningartungumál er notað hér fyrir TON sýndarvél (ég mun ekki dvelja við það í smáatriðum), leiðbeiningarnar um það verða settar á blockchain.

Þannig er assembler fyrir TVM skrifað í Fift - heimildir þessa assembler eru í skránni crypto/fift/Asm.fif og eru tengdir í upphafi ofangreinds kóðastykkis.

Hvað get ég sagt, greinilega elskar Nikolai Durov að búa til ný forritunarmál :)

Að búa til snjöllan samning og hafa samskipti við TON

Svo við skulum gera ráð fyrir að við höfum sett saman TON viðskiptavininn og Fift túlkann eins og lýst er hér að ofan og kynnst tungumálinu. Hvernig á að búa til snjöllan samning núna? Þessu er lýst í skránni HVERNIG Á AÐ, fylgir heimildunum.

Reikningar í TON

Eins og ég lýsti í TON endurskoðun, þetta net inniheldur fleiri en eina blockchain - það er eitt algengt, svokallað. „meistarakeðja“, svo og handahófskenndan fjölda „vinnukeðja“ til viðbótar, auðkennd með 32 bita númeri. Aðalkeðjan hefur auðkennið -1, auk þess er einnig hægt að nota „grunn“ vinnukeðju með auðkenninu 0. Hver vinnukeðja getur haft sína eigin uppsetningu. Innbyrðis er hverri vinnukeðju skipt í shardchains, en þetta er útfærsluatriði sem ekki þarf að hafa í huga.

Innan einnar vinnukeðju eru margir reikningar geymdir sem hafa sín eigin account_id auðkenni. Fyrir aðalkeðjuna og núllvinnukeðjuna eru þær 256 bitar langar. Þannig er auðkenni reikningsins skrifað, til dæmis, svona:

-1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Þetta er „hrátt“ sniðið: fyrst vinnukeðjuauðkennið, síðan tvípunktur og reikningskennið í sextándatali.

Að auki er stytt snið - vinnukeðjunúmerið og reikningsfangið eru kóðað á tvöfalt formi, eftirlitsummu er bætt við þau og allt þetta er umritað í Base64:

Ef+BVndbeTJeXWLnQtm5bDC2UVpc0vH2TF2ksZPAPwcODSkb

Með því að þekkja þetta skráarsnið getum við beðið um núverandi stöðu reiknings í gegnum prófunarviðskiptavin með því að nota skipunina

getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Við fáum eitthvað á þessa leið:

[ 3][t 2][1558746708.815218925][test-lite-client.cpp:631][!testnode]    requesting account state for -1:8156775B79325E5D62E742D9B96C30B6515A5CD2F1F64C5DA4B193C03F070E0D
[ 3][t 2][1558746708.858564138][test-lite-client.cpp:652][!testnode]    got account state for -1:8156775B79325E5D62E742D9B96C30B6515A5CD2F1F64C5DA4B193C03F070E0D with respect to blocks (-1,8000000000000000,72355):F566005749C1B97F18EDE013EBA7A054B9014961BC1AD91F475B9082919A2296:1BD5DE54333164025EE39D389ECE2E93DA2871DA616D488253953E52B50DC03F and (-1,8000000000000000,72355):F566005749C1B97F18EDE013EBA7A054B9014961BC1AD91F475B9082919A2296:1BD5DE54333164025EE39D389ECE2E93DA2871DA616D488253953E52B50DC03F
account state is (account
  addr:(addr_std
    anycast:nothing workchain_id:-1 address:x8156775B79325E5D62E742D9B96C30B6515A5CD2F1F64C5DA4B193C03F070E0D)
  storage_stat:(storage_info
    used:(storage_used
      cells:(var_uint len:1 value:3)
      bits:(var_uint len:2 value:539)
      public_cells:(var_uint len:0 value:0)) last_paid:0
    due_payment:nothing)
  storage:(account_storage last_trans_lt:74208000003
    balance:(currencies
      grams:(nanograms
        amount:(var_uint len:7 value:999928362430000))
      other:(extra_currencies
        dict:hme_empty))
    state:(account_active
      (
        split_depth:nothing
        special:nothing
        code:(just
          value:(raw@^Cell 
            x{}
             x{FF0020DDA4F260D31F01ED44D0D31FD166BAF2A1F80001D307D4D1821804A817C80073FB0201FB00A4C8CB1FC9ED54}
            ))
        data:(just
          value:(raw@^Cell 
            x{}
             x{0000000D}
            ))
        library:hme_empty))))
x{CFF8156775B79325E5D62E742D9B96C30B6515A5CD2F1F64C5DA4B193C03F070E0D2068086C000000000000000451C90E00DC0E35B7DB5FB8C134_}
 x{FF0020DDA4F260D31F01ED44D0D31FD166BAF2A1F80001D307D4D1821804A817C80073FB0201FB00A4C8CB1FC9ED54}
 x{0000000D}

Við sjáum uppbygginguna sem er geymd í DHT tilgreindrar vinnukeðju. Til dæmis á sviði storage.balance er viðskiptajöfnuður, í storage.state.code - snjall samningskóði, og inn storage.state.data - núverandi gögn þess. Vinsamlegast athugaðu að TON gagnageymslan - klefi, frumur - er trjálík, hver klefi getur bæði haft sín eigin gögn og undirfrumur. Þetta er sýnt sem inndráttur í síðustu línum.

Að byggja upp klár samning

Nú skulum við búa til slíka uppbyggingu sjálf (það heitir BOC - poka af frumum) með því að nota Fift tungumálið. Sem betur fer þarftu ekki að skrifa klár samning sjálfur - í möppunni crypto/block það er skrá úr upprunaskjalasafninu new-wallet.fif, sem mun hjálpa okkur að búa til nýtt veski. Við skulum afrita það í möppuna með samsetta viðskiptavininum (~/liteclient-build, ef þú fylgdir leiðbeiningunum hér að ofan). Ég vitnaði í innihald þess hér að ofan sem dæmi um kóða á Fift.

Keyrðu þessa skrá sem hér segir:

./crypto/fift -I"<source-directory>/crypto/fift" new-wallet.fif

Hér <source-directory> verður að skipta út fyrir slóðina að ópakkuðu heimildunum („~“ táknið, því miður, er ekki hægt að nota hér, fulla slóðina er nauðsynleg). Í stað þess að nota lykil -I þú getur skilgreint umhverfisbreytu FIFTPATH og setja þessa leið inn í það.

Síðan við ræstum Fift með skráarnafninu new-wallet.fif, það mun framkvæma það og hætta. Ef þú sleppir skráarnafninu geturðu spilað með túlknum gagnvirkt.

Eftir framkvæmd ætti eitthvað eins og þetta að birtast í stjórnborðinu:

StateInit: x{34_}
 x{FF0020DDA4F260810200D71820D70B1FED44D0D31FD3FFD15112BAF2A122F901541044F910F2A2F80001D31F3120D74A96D307D402FB00DED1A4C8CB1FCBFFC9ED54}
 x{0000000055375F730EDC2292E8CB15C42E8036EE9C25AA958EE002D2DE48A205E3A3426B}

new wallet address = -1 : 4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2 
0f9PzVILj8yglrVn1zS-NSjtxr7QBfaTCp7JrBqnFPIR8nhZ
signing message: x{00000000}

External message for initialization is x{89FEE120E20C7E953E31546F64C23CD654002C1AA919ADD24DB12DDF85C6F3B58AE41198A28AD8DAF3B9588E7A629252BA3DB88F030D00BC1016110B2073359EAC3C13823C53245B65D056F2C070B940CDA09789585935C7ABA4D2AD4BED139281CFA1200000001_}
 x{FF0020DDA4F260810200D71820D70B1FED44D0D31FD3FFD15112BAF2A122F901541044F910F2A2F80001D31F3120D74A96D307D402FB00DED1A4C8CB1FCBFFC9ED54}
 x{0000000055375F730EDC2292E8CB15C42E8036EE9C25AA958EE002D2DE48A205E3A3426B}

B5EE9C724104030100000000D60002CF89FEE120E20C7E953E31546F64C23CD654002C1AA919ADD24DB12DDF85C6F3B58AE41198A28AD8DAF3B9588E7A629252BA3DB88F030D00BC1016110B2073359EAC3C13823C53245B65D056F2C070B940CDA09789585935C7ABA4D2AD4BED139281CFA1200000001001020084FF0020DDA4F260810200D71820D70B1FED44D0D31FD3FFD15112BAF2A122F901541044F910F2A2F80001D31F3120D74A96D307D402FB00DED1A4C8CB1FCBFFC9ED5400480000000055375F730EDC2292E8CB15C42E8036EE9C25AA958EE002D2DE48A205E3A3426B6290698B
(Saved to file new-wallet-query.boc)

Þetta þýðir að veskið með auðkenni -1:4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2 (eða, hvað er það sama, 0f9PzVILj8yglrVn1zS-NSjtxr7QBfaTCp7JrBqnFPIR8nhZ) búið til. Samsvarandi kóði verður í skránni new-wallet-query.boc, heimilisfangið hans er í new-wallet.addr, og einkalykillinn er í new-wallet.pk (farið varlega - að keyra skriftuna aftur mun skrifa yfir þessar skrár).

Auðvitað veit TON netið ekki enn um þetta veski; það er aðeins geymt í formi þessara skráa. Nú þarf að hlaða því upp á netið. Hins vegar er vandamálið að til að búa til snjöllan samning þarftu að greiða þóknun og reikningsstaða þín er enn núll.

Í vinnuham verður þetta vandamál leyst með því að kaupa grömm á kauphöllinni (eða flytja úr öðru veski). Jæja, í núverandi prófunarham hefur verið búið til sérstakur snjallsamningur, sem þú getur beðið um allt að 20 grömm bara svona.

Búa til beiðni um snjallsamning einhvers annars

Við gerum beiðni um snjallsamning sem dreifir grömmum til vinstri og hægri eins og þetta. Í sömu möppu crypto/block finna skrá testgiver.fif:

// "testgiver.addr" file>B 256 B>u@ 
0x8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d
dup constant wallet_addr ."Test giver address = " x. cr

0x4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2
constant dest_addr

-1 constant wc
0x00000011 constant seqno

1000000000 constant Gram
{ Gram swap */ } : Gram*/

6.666 Gram*/ constant amount

// b x --> b'  ( serializes a Gram amount )
{ -1 { 1+ 2dup 8 * ufits } until
  rot over 4 u, -rot 8 * u, } : Gram, 

// create a message (NB: 01b00.., b = bounce)
<b b{010000100} s, wc 8 i, dest_addr 256 u, amount Gram, 0 9 64 32 + + 1+ 1+ u, "GIFT" $, b>
<b seqno 32 u, 1 8 u, swap ref, b>
dup ."enveloping message: " <s csr. cr
<b b{1000100} s, wc 8 i, wallet_addr 256 u, 0 Gram, b{00} s,
   swap <s s, b>
dup ."resulting external message: " <s csr. cr
2 boc+>B dup Bx. cr
"wallet-query.boc" B>file

Við munum einnig vista það í möppunni með samsettum viðskiptavini, en við munum leiðrétta fimmtu línuna - á undan línunni "constant dest_addr". Við skulum skipta því út fyrir heimilisfang vesksins sem þú bjóst til áður (fullt, ekki skammstafað). Það er engin þörf á að skrifa "-1:" í upphafi, setja í staðinn "0x" í byrjun.

Þú getur líka breytt línunni 6.666 Gram*/ constant amount — þetta er magnið í grömmum sem þú ert að biðja um (ekki meira en 20). Jafnvel ef þú tilgreinir heila tölu skaltu skilja eftir aukastafinn.

Að lokum þarftu að leiðrétta línuna 0x00000011 constant seqno. Fyrsta númerið hér er núverandi raðnúmer, sem er geymt í reikningnum sem gefur út. Hvaðan get ég fengið það? Eins og fram kemur hér að ofan, ræstu viðskiptavininn og keyrðu:

last
getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Í lokin munu snjallsamningsgögnin innihalda

...
x{FF0020DDA4F260D31F01ED44D0D31FD166BAF2A1F80001D307D4D1821804A817C80073FB0201FB00A4C8CB1FC9ED54}
 x{0000000D}

Talan 0000000D (þín verður stærri) er raðnúmerið sem þarf að skipta út í testgiver.fif.

Það er það, vistaðu skrána og keyrðu (./crypto/fift testgiver.fif). Úttakið verður skrá wallet-query.boc. Þetta er það sem myndast skilaboðin til snjallsamnings einhvers annars - beiðni "flytja svo mörg grömm á svona og svo reikning."

Með því að nota biðlarann ​​hleðum við honum upp á netið:

> sendfile wallet-query.boc
[ 1][t 1][1558747399.456575155][test-lite-client.cpp:577][!testnode]    sending query from file wallet-query.boc
[ 3][t 2][1558747399.500236034][test-lite-client.cpp:587][!query]   external message status is 1

Ef þú hringir núna last, og biðja svo aftur um stöðu reikningsins sem við báðum um grömm af, þá ættum við að sjá að raðnúmer hans hefur hækkað um eitt - þetta þýðir að það sendi peninga á reikninginn okkar.

Síðasta skrefið er eftir - hlaðið niður kóðanum á veskinu okkar (staða þess hefur þegar verið endurnýjuð, en án snjallsamningskóðans getum við ekki stjórnað því). Við framkvæmum sendfile new-wallet-query.boc - og það er það, þú ert með þitt eigið veski á TON netinu (jafnvel þótt það sé aðeins prófunartæki í bili).

Að búa til sendandi viðskipti

Til að flytja peninga af stöðu stofnaðs reiknings er til skrá crypto/block/wallet.fif, sem einnig þarf að setja í möppuna með samsettum viðskiptavini.

Svipað og í fyrri skrefum þarftu að stilla upphæðina sem þú ert að millifæra, heimilisfang viðtakanda (dest_addr) og röð vesksins þíns (það er jafnt og 1 eftir að veskið hefur verið frumstillt og hækkar um 1 eftir hverja sendingu - þú getur sjáðu það með því að biðja um stöðu reikningsins þíns) . Fyrir próf geturðu notað td veskið mitt - 0x4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2.

Við ræsingu (./crypto/fift wallet.fif) handritið mun taka heimilisfang vesksins þíns (þaðan sem þú flytur) og einkalykil þess úr skránum new-wallet.addr и new-wallet.pk, og móttekið skeyti verður skrifað til new-wallet-query.boc.

Eins og áður, til að framkvæma viðskiptin beint, hringdu sendfile new-wallet-query.boc í viðskiptavininum. Eftir þetta, ekki gleyma að uppfæra stöðu blockchain (last) og athugaðu hvort staðan og seqno á veskinu okkar hafi breyst (getaccount <account_id>).

Prófaðu viðskiptavin TON (Telegram Open Network) og nýtt Fift tungumál fyrir snjalla samninga

Það er allt, nú getum við búið til snjalla samninga í TON og sent beiðnir til þeirra. Eins og þú sérð er núverandi virkni nú þegar nóg til að búa til vinalegra veski með grafísku viðmóti (þó er búist við að það verði nú þegar fáanlegt sem hluti af boðberanum).

Aðeins skráðir notendur geta tekið þátt í könnuninni. Skráðu þig inn, takk.

Hefur þú áhuga á að halda áfram greinunum með greiningu á TON, TVM, Fift?

  • Já, ég er að bíða eftir að greinaflokkurinn sé búinn með almennu yfirliti yfir TON

  • Já, það er áhugavert að lesa meira um Fift tungumálið

  • Já, ég vil læra meira um TON sýndarvélina og samsetninguna fyrir hana

  • Nei, ekkert af þessu er áhugavert

39 notendur kusu. 12 notendur sátu hjá.

Hvað finnst þér um áætlanir Telegram um að koma TON á markað?

  • Ég bind miklar vonir við þetta verkefni

  • Ég fylgist bara af áhuga með þróuninni.

  • Ég er efins og efast um árangur þess.

  • Ég hallast að því að telja þetta framtak misheppnað og óþarft fyrir allan fjöldann

47 notendur kusu. 12 notendur sátu hjá.

Heimild: www.habr.com

Bæta við athugasemd