TON (Telegram Open Network) klien test lan basa Fift anyar kanggo kontrak pinter

Luwih saka setahun kepungkur, dikenal babagan rencana utusan Telegram kanggo ngeculake jaringan desentralisasi dhewe. Bukak telegram Jaringan. Banjur kasedhiya dokumen teknis sing akeh banget, sing diduga ditulis dening Nikolai Durov lan nggambarake struktur jaringan mangsa ngarep. Kanggo sing ora kejawab, aku nyaranake sampeyan maca maneh babagan dokumen iki (bagean 1, bagean 2; bagean katelu, sayangΓ©, isih ngumpulake bledug ing konsep).

Wiwit kuwi, ora ana kabar sing penting babagan status pangembangan TON nganti sawetara dina kepungkur (ing salah siji saka saluran ora resmi) pranala menyang kaca ora katon https://test.ton.org/download.html, ing ngendi panggonane:
β—¦ ton-test-liteclient-full.tar.xz - sumber saka klien cahya kanggo jaringan test TON;
β—¦ ton-lite-client-test1.config.json - file konfigurasi kanggo nyambung menyang jaringan test;
β—¦ README - informasi babagan mbangun lan ngluncurake klien;
β—¦ CARANE - instruksi langkah-langkah kanggo nggawe kontrak pinter nggunakake klien;
β—¦ ton.pdf - dokumen sing dianyari (tanggal 2 Maret 2019) kanthi ringkesan teknis jaringan TON;
β—¦ tvm.pdf - deskripsi teknis TVM (Mesin Virtual TON, mesin virtual TON);
β—¦ tblkch.pdf - gambaran teknis saka TON blockchain;
β—¦ fifthbase.pdf - gambaran saka basa Fift anyar, dirancang kanggo nggawe kontrak pinter ing TON.

Aku mbaleni, ora ana konfirmasi resmi saka kaca lan kabeh dokumen kasebut saka Telegram, nanging volume bahan kasebut ndadekake dheweke bisa dipercaya. Bukak klien sing diterbitake kanthi resiko dhewe.

Nggawe klien test

Pisanan, ayo nyoba mbangun lan mbukak klien uji - untunge, README njlèntrèhaké proses prasaja iki ing rinci. Aku bakal nindakake iki nggunakake macOS 10.14.5 minangka conto; Aku ora bisa njamin sukses mbangun ing sistem liyane.

  1. Ngundhuh lan unpack arsip sumber. Penting kanggo ndownload versi paling anyar amarga kompatibilitas mundur ora dijamin ing tahap iki.

  2. Priksa manawa versi paling anyar saka make, cmake (versi 3.0.2 utawa luwih), OpenSSL (kalebu file header C), g ++ utawa clang diinstal ing sistem. Aku ora kudu nginstal apa-apa, kabeh langsung teka.

  3. Ayo nganggep sumber kasebut dibongkar menyang folder ~/lite-client. Kanthi kapisah, gawe folder kosong kanggo proyek sing dirakit (contone, ~/liteclient-build), lan saka iku (cd ~/liteclient-build) nelpon perintah:

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

    TON (Telegram Open Network) klien test lan basa Fift anyar kanggo kontrak pinter

    Kanggo mbangun interpreter basa Lima kanggo kontrak pinter (liyane babagan ing ngisor iki), kita uga nelpon

    cmake --build . --target fift

  4. Download sing saiki file konfigurasi kanggo nyambung menyang jaringan test lan sijine iku ing folder karo klien nglumpuk.

  5. Wis rampung, sampeyan bisa miwiti klien:

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

Yen kabeh wis rampung kanthi bener, sampeyan kudu ndeleng kaya iki:

TON (Telegram Open Network) klien test lan basa Fift anyar kanggo kontrak pinter

Minangka kita bisa ndeleng, ana sawetara printah sing kasedhiya:
β—¦ help - nampilake dhaptar printah iki;
β—¦ quit - metu;
β—¦ time - nuduhake wektu saiki ing server;
β—¦ status - nuduhake sambungan lan status database lokal;
β—¦ last - nganyari negara blockchain (download blok pungkasan). Penting kanggo mbukak printah iki sadurunge panjalukan kanggo mesthekake yen sampeyan ndeleng kahanan jaringan saiki.
β—¦ sendfile <filename> - upload file lokal menyang jaringan TON. Iki carane interaksi karo jaringan dumadi - kalebu, contone, nggawe kontrak pinter anyar lan panjalukan kanggo transfer dana antarane akun;
β—¦ getaccount <address> - nuduhake saiki (ing wektu printah dieksekusi) last) status akun kanthi alamat sing ditemtokake;
β—¦ privkey <filename> - mbukak kunci pribadi saka file lokal.

Yen, nalika miwiti klien, sampeyan nransfer folder menyang nggunakake pilihan -D, banjur bakal nambah blok pungkasan saka masterchain menyang:

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

Saiki kita bisa nerusake menyang bab sing luwih menarik - sinau basa Fift, nyoba kanggo ngumpulake kontrak pinter (contone, nggawe dompet test), upload menyang jaringan lan nyoba nransfer dana antarane akun.

Basa Lima

Saka dokumen fifthbase.pdf sampeyan bisa ngerteni manawa tim Telegram wis nggawe basa tumpukan anyar kanggo nggawe kontrak cerdas lima (katon saka angka kalima, padha karo Forth, basa karo Fifth akeh sing padha).

Dokumen kasebut cukup akeh, 87 kaca, lan aku ora bakal nyritakake maneh isine kanthi rinci sajrone kerangka artikel iki (paling ora amarga aku durung rampung maca dhewe :). Aku bakal fokus ing TCTerms utama lan menehi saperangan conto kode ing basa iki.

Ing tingkat dhasar, sintaksis Fift cukup prasaja: kode kasebut kalebu tembung, biasane dipisahake dening spasi utawa garis break (kasus khusus: sawetara tembung ora mbutuhake pamisah sawise dhewe). Sembarang tembung kasebut minangka urutan karakter sing sensitif huruf cilik sing cocog karo tartamtu definisi (kira-kira, apa sing kudu ditindakake juru basa nalika nemoni tembung iki). Yen ora ana definisi tembung, interpreter nyoba ngurai minangka nomer lan sijine ing tumpukan. Miturut cara, nomer kene - dumadakan - 257-dicokot integer, lan ora ana pecahan - luwih tepat, padha langsung dadi pasangan wilangan bulat, mbentuk numerator lan denominator saka pecahan rasional.

Tembung cenderung sesambungan karo nilai ing ndhuwur tumpukan. Jinis tembung sing kapisah - ater-ater - ora nggunakake tumpukan, nanging karakter sakteruse saka file sumber. Contone, iki carane string literals diterapake - karakter kutipan (") yaiku tembung ater-ater sing nggoleki kutipan sabanjure (panutup), lan nyurung senar ing antarane menyang tumpukan. One-liners tumindak kanthi cara sing padha (//) lan multiline (/*) komentar.

Ing kene meh kabeh struktur internal basa rampung. Kabeh liyane (kalebu konstruksi kontrol) ditetepake minangka tembung (salah siji internal, kayata operasi aritmetika lan definisi tembung anyar; utawa ditetepake ing "perpustakaan standar" Fift.fif, sing ana ing folder kasebut crypto/fift ing sumber).

Program conto prasaja ing Fift:

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

Baris pisanan nemtokake tembung anyar setxy (catheten prefiks {, sing nggawe blok sadurunge sing nutup } lan ater-ater :, sing bener nemtokake tembung kasebut). setxy njupuk nomer saka ndhuwur tumpukan, nemtokake (utawa redefines) minangka global pancet x, lan kothak nomer iki minangka konstanta y (Amarga yen nilai-nilai konstanta bisa didefinisikan maneh, aku luwih seneng nyebutake variabel, nanging aku ngetutake konvensi jeneng ing basa kasebut).

Loro baris sabanjurΓ© sijine nomer ing tumpukan lan nelpon setxy, banjur nilai konstanta ditampilake x, y (tembung kasebut digunakake kanggo output .), loro konstanta diselehake ing tumpukan, dijumlah, lan asil uga dicithak. AkibatΓ©, kita bakal weruh:

3 9 12 ok
7 49 56 ok

(Baris "ok" dicithak dening juru nalika rampung ngolah baris saiki ing mode input interaktif)

Inggih, conto kode lengkap:

"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

File sing katon medeni iki kanggo nggawe kontrak cerdas - bakal diselehake ing file new-wallet-query.boc sawise eksekusi. Wigati dimangerteni manawa basa perakitan liyane digunakake ing kene kanggo Mesin Virtual TON (Aku ora bakal njlentrehake kanthi rinci), instruksi kasebut bakal diselehake ing pamblokiran.

Mangkono, assembler kanggo TVM ditulis ing Fift - sumber assembler iki ana ing file crypto/fift/Asm.fif lan disambungake ing wiwitan potongan kode ing ndhuwur.

Apa sing bisa dakkandhakake, ketoke Nikolai Durov mung seneng nggawe basa pamrograman anyar :)

Nggawe kontrak cerdas lan sesambungan karo TON

Dadi, ayo nganggep kita wis nglumpukake klien TON lan juru basa Fift kaya sing kasebut ing ndhuwur lan dadi akrab karo basa kasebut. Kepiye carane nggawe kontrak cerdas saiki? Iki diterangake ing file CARANE, ditempelake ing sumber.

Akun ing TON

Kaya sing dakkandhakake ing review TON, jaringan iki ngemot luwih saka siji pamblokiran - ana siji sing umum, sing diarani. "rantai master", uga nomer tambahan "rantai kerja", sing diidentifikasi kanthi nomer 32-bit. Masterchain duwe pengenal -1; Kajaba iku, rantai kerja "basis" kanthi pengenal 0 uga bisa digunakake. Saben rantai kerja bisa duwe konfigurasi dhewe. Secara internal, saben workchain dipΓ©rang dadi shardchain, nanging iki minangka detail implementasine sing ora perlu dieling-eling.

Ing siji workchain, akeh akun sing disimpen sing duwe account_id pengenal dhewe. Kanggo chain master lan chain karya nul, dawane 256 bit. Dadi, pengenal akun ditulis, contone, kaya iki:

-1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Iki minangka format "mentah": pisanan ID workchain, banjur titik titik, lan ID akun ing notasi heksadesimal.

Kajaba iku, ana format sing disingkat - nomer workchain lan alamat akun dienkode ing wangun binar, checksum ditambahake, lan kabeh iki dienkode ing Base64:

Ef+BVndbeTJeXWLnQtm5bDC2UVpc0vH2TF2ksZPAPwcODSkb

Ngerti format rekaman iki, kita bisa njaluk status akun saiki liwat klien test nggunakake printah

getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Kita bakal entuk kaya iki:

[ 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}

Kita ndeleng struktur sing disimpen ing DHT saka workchain sing ditemtokake. Contone, ing lapangan storage.balance punika saldo akun saiki, ing storage.state.code - kode kontrak pinter, lan ing storage.state.data - data saiki. Elinga yen panyimpenan data TON - Sel, sel - kaya wit, saben sel bisa duwe data lan sel anak dhewe. Iki dituduhake minangka indentasi ing baris pungkasan.

Nggawe kontrak cerdas

Saiki ayo nggawe struktur kasebut dhewe (sing diarani BOC - tas sel) nggunakake basa Lima. Untunge, sampeyan ora kudu nulis kontrak cerdas dhewe - ing folder kasebut crypto/block ana file saka arsip sumber new-wallet.fif, sing bakal mbantu nggawe dompet anyar. Ayo nyalin menyang folder karo klien sing dirakit (~/liteclient-build, yen sampeyan tindakake pandhuan ing ndhuwur). Aku nyebutake isi ing ndhuwur minangka conto kode ing Fift.

Jalanake file iki kaya ing ngisor iki:

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

iku <source-directory> kudu diganti karo path menyang sumber unpacked (simbol "~", sayangΓ©, ora bisa digunakake ing kene, path lengkap dibutuhake). Tinimbang nggunakake tombol -I sampeyan bisa nemtokake variabel lingkungan FIFTPATH lan sijine dalan iki menyang.

Wiwit kita ngluncurake Fift kanthi jeneng file new-wallet.fif, bakal nglakokakΓ© lan metu. Yen sampeyan ngilangi jeneng file, sampeyan bisa muter karo interpreter kanthi interaktif.

Sawise eksekusi, kaya iki kudu ditampilake ing console:

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)

Iki tegese dompet karo ID -1:4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2 (utawa, apa sing padha, 0f9PzVILj8yglrVn1zS-NSjtxr7QBfaTCp7JrBqnFPIR8nhZ) kasil digawe. Kode sing cocog bakal ana ing file kasebut new-wallet-query.boc, alamate nang new-wallet.addr, lan kunci pribadhi ana ing new-wallet.pk (ati-ati - mbukak skrip maneh bakal nimpa file kasebut).

Mesthine, jaringan TON durung ngerti babagan dompet iki, mung disimpen ing bentuk file kasebut. Saiki kudu diunggah menyang jaringan. Nanging, masalahe kanggo nggawe kontrak cerdas sampeyan kudu mbayar komisi, lan imbangan akun sampeyan isih nol.

Ing mode kerja, masalah iki bakal ditanggulangi kanthi tuku gram ing ijol-ijolan (utawa transfer saka dompet liyane). Ya, ing mode tes saiki, kontrak cerdas khusus wis digawe, saka ngendi sampeyan bisa njaluk nganti 20 gram kaya ngono.

Nggawe panjalukan kanggo kontrak pinter wong liya

We nggawe panjalukan kanggo kontrak pinter sing distributes gram kiwa lan tengen kaya iki. Ing folder sing padha crypto/block golek file 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

Kita uga bakal nyimpen ing folder karo klien nglumpuk, nanging kita bakal mbenerake baris kalima - sadurunge baris "constant dest_addr". Ayo diganti karo alamat dompet sing digawe sadurunge (lengkap, ora disingkat). Ora perlu nulis "-1:" ing wiwitan, tinimbang sijine "0x" ing wiwitan.

Sampeyan uga bisa ngganti baris 6.666 Gram*/ constant amount - iki jumlah ing gram sing sampeyan njaluk (ora luwih saka 20). Malah yen sampeyan nemtokake nomer wutuh, ninggalake titik desimal.

Pungkasan, sampeyan kudu mbenerake garis kasebut 0x00000011 constant seqno. Nomer pisanan ing kene yaiku nomer urutan saiki, sing disimpen ing akun sing ngetokake gram. Ngendi aku bisa njaluk saka? Kaya kasebut ing ndhuwur, miwiti klien lan mbukak:

last
getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Ing pungkasan, data kontrak pinter bakal ngemot

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

Angka 0000000D (sampeyan bakal luwih gedhe) minangka nomer urutan sing kudu diganti dadi testgiver.fif.

Iku, simpen file lan mbukak (./crypto/fift testgiver.fif). Output bakal dadi file wallet-query.boc. Iki sing dibentuk pesen menyang kontrak pinter wong liya - panjaluk "transfer akeh gram menyang akun kasebut lan kaya ngono."

Nggunakake klien, kita upload menyang jaringan:

> 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

Yen saiki nelpon last, lan banjur njaluk maneh status akun saka ngendi kita takon gram, banjur kita kudu weruh sing nomer urutan wis tambah siji - iki tegese ngirim dhuwit kanggo akun.

Langkah pungkasan tetep - download kode dompet kita (imbangane wis diisi maneh, nanging tanpa kode kontrak cerdas kita ora bakal bisa ngatur). Kita nindakake sendfile new-wallet-query.boc - lan iku, sampeyan duwe dompet dhewe ing jaringan TON (sanajan mung test siji kanggo saiki).

Nggawe transaksi metu

Kanggo nransfer dhuwit saka saldo akun sing digawe, ana file crypto/block/wallet.fif, sing uga kudu diselehake ing folder karo klien sing dirakit.

Kaya langkah sadurunge, sampeyan kudu nyetel jumlah sing sampeyan transfer, alamat panampa (dest_addr), lan seqno dompet sampeyan (padha karo 1 sawise miwiti dompet lan mundhak 1 sawise saben transaksi metu - sampeyan bisa ndeleng kanthi njaluk status akun sampeyan). Kanggo tes, sampeyan bisa nggunakake, umpamane, dompetku - 0x4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2.

Ing wiwitan (./crypto/fift wallet.fif) skrip bakal njupuk alamat dompet (saka ngendi sampeyan nransfer) lan kunci pribadi saka file new-wallet.addr ΠΈ new-wallet.pk, lan pesen sing ditampa bakal ditulis kanggo new-wallet-query.boc.

Kaya sadurunge, kanggo langsung nindakake transaksi, nelpon sendfile new-wallet-query.boc ing klien. Sawise iki, aja lali nganyari status blockchain (last) lan priksa manawa imbangan lan seqno dompet kita wis diganti (getaccount <account_id>).

TON (Telegram Open Network) klien test lan basa Fift anyar kanggo kontrak pinter

Iku kabeh, saiki kita bisa nggawe kontrak pinter ing TON lan ngirim panjalukan kanggo wong-wong mau. Nalika sampeyan bisa ndeleng, fungsi saiki wis cukup kanggo, contone, nggawe dompet luwih loropaken karo antarmuka grafis (Nanging, iku wis samesthine sing wis kasedhiya minangka bagΓ©an saka utusan).

Mung pangguna pangguna sing bisa melu survey. mlebunggih.

Apa sampeyan kepengin nerusake artikel kanthi analisis TON, TVM, Fift?

  • Ya, aku ngenteni rampunge seri artikel kanthi ringkesan umum TON

  • Ya, iku menarik kanggo maca liyane babagan basa Lima

  • Ya, aku pengin sinau luwih lengkap babagan Mesin Virtual TON lan assembler kasebut

  • Ora, ora ana sing menarik

39 pangguna milih. 12 kedhaftar abstained.

Apa sampeyan mikir babagan rencana Telegram kanggo ngluncurake TON?

  • Aku duwe pangarep-arep dhuwur kanggo proyek iki

  • Aku mung ngetutake perkembangane kanthi minat.

  • Aku mamang lan mangu sukses.

  • Aku cenderung nganggep inisiatif iki minangka gagal lan ora perlu kanggo umume

47 pangguna milih. 12 kedhaftar abstained.

Source: www.habr.com

Add a comment