Uji klien TON (Telegram Open Network) sareng basa Fift énggal pikeun kontrak pinter

Langkung ti sataun katukang, janten dipikanyaho ngeunaan rencana utusan Telegram pikeun ngaleupaskeun jaringan desentralisasi sorangan. Telegram Open Network. Lajeng aya hiji dokumen teknis voluminous, nu disangka ditulis ku Nikolai Durov sarta ngajelaskeun struktur jaringan hareup. Pikeun anu sono, kuring nyarankeun anjeun maca ulang kuring ngeunaan dokumén ieu (bagian 1, bagian 2; bagian katilu, Alas, masih ngumpulkeun lebu dina draf).

Ti saprak éta, teu aya béja anu penting ngeunaan status pangembangan TON dugi ka sababaraha dinten ka pengker (dina salah sahiji saluran teu resmi) link ka kaca teu muncul https://test.ton.org/download.html, dimana ayana:
ton-test-liteclient-full.tar.xz - sumber klien lampu pikeun jaringan test TON;
ton-lite-client-test1.config.json - file konfigurasi pikeun nyambungkeun ka jaringan test;
README - inpormasi ngeunaan ngawangun sareng ngaluncurkeun klien;
KUMAHA - parentah hambalan-demi-hambalan dina nyieun kontrak pinter maké klien;
ton.pdf - dokumén anu diropéa (tanggal 2 Maret 2019) kalayan tinjauan téknis jaringan TON;
tvm.pdf - pedaran teknis ngeunaan TVM (TON Virtual Machine, TON mesin virtual);
tblkch.pdf - pedaran teknis ngeunaan TON blockchain;
fifthbase.pdf - pedaran basa Lima anyar, dirancang pikeun nyieun kontrak pinter di TON.

Kuring ngulang, teu aya konfirmasi resmi halaman sareng sadaya dokumén ieu ti Telegram, tapi volume bahan ieu ngajantenkeun aranjeunna lumayan. Ngajalankeun klien diterbitkeun dina resiko sorangan.

Ngawangun klien test

Mimiti, hayu urang coba ngawangun sareng ngajalankeun klien uji - untungna, README ngajelaskeun prosés saderhana ieu sacara rinci. Kuring bakal ngalakukeun ieu nganggo macOS 10.14.5 salaku conto; Abdi henteu tiasa ngajamin kasuksésan ngawangun dina sistem anu sanés.

  1. Unduh sareng bongkar bungkus arsip sumber. Kadé pikeun ngundeur versi panganyarna sakumaha kasaluyuan mundur teu dijamin dina tahap ieu.

  2. Pastikeun yén versi panganyarna tina make, cmake (versi 3.0.2 atawa saluhureuna), OpenSSL (kaasup file lulugu C), g ++ atanapi clang dipasang dina sistem. Abdi henteu kedah masang nanaon, sadayana langsung ngahiji.

  3. Anggap sumberna dibongkar kana polder ~/lite-client. Kapisah ti éta, jieun polder kosong pikeun proyék anu dirakit (contona, ~/liteclient-build), sareng ti éta (cd ~/liteclient-build) nelepon paréntah:

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

    Uji klien TON (Telegram Open Network) sareng basa Fift énggal pikeun kontrak pinter

    Pikeun ngawangun juru basa Lima pikeun kontrak pinter (langkung seueur ngeunaan éta di handap), kami ogé nelepon

    cmake --build . --target fift

  4. Unduh anu ayeuna file konfigurasi pikeun nyambung ka jaringan test teras nahan eta dina folder jeung klien dirakit.

  5. Puguh, anjeun tiasa ngamimitian klien:

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

Upami sadayana dilakukeun leres, anjeun kedah ningali sapertos kieu:

Uji klien TON (Telegram Open Network) sareng basa Fift énggal pikeun kontrak pinter

Sakumaha urang tingali, aya sababaraha paréntah anu sayogi:
help — mintonkeun daptar paréntah ieu;
quit - kaluar;
time - nunjukkeun waktos ayeuna dina server;
status - nunjukkeun sambungan sareng status database lokal;
last - ngamutahirkeun kaayaan blockchain (unduh blok terakhir). Penting pikeun ngajalankeun paréntah ieu sateuacan aya pamundut pikeun mastikeun yén anjeun ningali kaayaan jaringan ayeuna.
sendfile <filename> - unggah file lokal ka jaringan TON. Ieu kumaha interaksi jeung jaringan lumangsung - kaasup, contona, kreasi kontrak pinter anyar jeung requests pikeun mindahkeun dana antara rekening;
getaccount <address> - nunjukkeun arus (dina waktos paréntah dieksekusi) last) status akun sareng alamat anu ditangtukeun;
privkey <filename> - muatkeun konci pribadi tina file lokal.

Upami, nalika ngamimitian klien, anjeun nransper polder ka dinya nganggo pilihan -D, teras anjeunna bakal nambihan blok terakhir tina masterchain kana éta:

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

Ayeuna urang tiasa ngaléngkah ka hal anu langkung narik - diajar basa Fift, cobian nyusun kontrak pinter (contona, ngadamel dompét tés), unggah kana jaringan sareng cobian nransferkeun dana antara rekening.

Basa Lima

Tina dokumén fifthbase.pdf Anjeun tiasa mendakan yén tim Telegram parantos nyiptakeun basa tumpukan énggal pikeun nyiptakeun kontrak pinter Lima (katingalina tina angka kalima, sarupa jeung Forth, basa nu Kalima boga loba di umum).

Dokuménna cukup ageung, 87 halaman, sareng kuring moal nyaritakeun deui eusina sacara rinci dina kerangka tulisan ieu (sahenteuna kusabab kuring henteu acan réngsé maca sorangan :). Kuring baris difokuskeun titik utama jeung masihan sababaraha conto kode dina basa ieu.

Dina tingkat dasar, sintaksis Fift cukup basajan: kode na diwangun ku kecap, biasana dipisahkeun ku spasi atanapi garis putus (kasus husus: sababaraha kecap teu merlukeun pamisah sanggeus sorangan). Sakur kecap mangrupa runtuyan karakter-sénsitip leutik nu pakait jeung tangtu ngartikeun (kira-kira, naon anu kedah dilakukeun ku juru basa nalika mendakan kecap ieu). Mun euweuh harti kecap, juru nyoba parse salaku angka sarta nempatkeun eta dina tumpukan. Ku jalan kitu, angka-angka di dieu - ujug-ujug - wilangan bulat 257-bit, sareng henteu aya pecahan - langkung tepatna, aranjeunna langsung janten pasangan integer, ngabentuk numerator sareng pangbagi fraksi rasional.

Kecap condong berinteraksi sareng nilai di luhur tumpukan. Jenis kecap anu misah - awalan - teu make tumpukan, tapi karakter saterusna ti file sumber. Salaku conto, ieu kumaha string literals dilaksanakeun - karakter kutipan (") nyaéta kecap awalan anu néangan cutatan (panutup) salajengna, sarta nyorong senar antara aranjeunna kana tumpukan. Hiji-liners kalakuanana dina cara nu sarua (//) jeung multiline (/*) koméntar.

Ieu dimana ampir sakabéh struktur internal basa ends. Sagalana sejenna (kaasup konstruksi kontrol) dihartikeun salaku kecap (boh internal, kayaning operasi arithmetic jeung harti kecap anyar; atawa didefinisikeun dina "perpustakaan baku" Fift.fif, anu aya dina polder crypto/fift dina sumber).

Hiji conto program basajan dina Fift:

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

Baris kahiji ngahartikeun kecap anyar setxy (perhatikeun awalan {, nu nyieun blok saméméh hiji nutup } jeung awalan :, nu sabenerna ngahartikeun kecap). setxy nyokot angka ti luhur tumpukan, ngahartikeun (atanapi redefines) salaku global angger x, jeung kuadrat angka ieu salaku konstanta y (Nunjukkeun yén nilai-nilai konstanta tiasa didefinisikeun deui, kuring langkung resep nyauran aranjeunna variabel, tapi kuring nuturkeun konvénsi pangaranan dina basa).

Dua garis salajengna nempatkeun nomer dina tumpukan jeung nelepon setxy, teras nilai konstanta dipintonkeun x, y (kecap dipaké pikeun kaluaran .), duanana konstanta disimpen dina tumpukan, dijumlahkeun, sarta hasilna ogé dicitak. Hasilna urang bakal ningali:

3 9 12 ok
7 49 56 ok

(Garis "ok" dicitak ku juru basa nalika réngsé ngolah jalur ayeuna dina modeu input interaktif)

Nya, conto kode lengkep:

"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 anu katingali pikasieuneun ieu kanggo nyiptakeun kontrak pinter - éta bakal disimpen dina file new-wallet-query.boc sanggeus palaksanaan. Punten dicatet yén basa assembly sejen dipaké di dieu pikeun TON Virtual Machine (Kuring moal Huni di jéntré), parentah nu bakal disimpen dina blockchain nu.

Ku kituna, assembler pikeun TVM ditulis dina Lima - sumber assembler ieu dina file crypto/fift/Asm.fif tur disambungkeun di awal potongan kode luhur.

Naon anu kuring tiasa nyarios, katingalina Nikolai Durov ngan resep nyiptakeun basa pamrograman énggal :)

Nyiptakeun kontrak pinter sareng berinteraksi sareng TON

Ku kituna, hayu urang anggap urang geus dirakit klien TON jeung juru Fift sakumaha ditétélakeun di luhur sarta jadi akrab jeung basa. Kumaha carana ngadamel kontrak pinter ayeuna? Ieu dijelaskeun dina file KUMAHA, napel na sumber.

Rekening di TON

Sakumaha kuring dijelaskeun dina ulasan TON, jaringan ieu ngandung leuwih ti hiji blockchain - aya hiji umum, nu disebut. "rantai master", kitu ogé jumlah sawenang tambahan "ranté gawé", dicirikeun ku angka 32-bit. Masterchain gaduh identifier -1; salian ti éta, workchain "dasar" sareng identifier 0 ogé tiasa dianggo. Unggal workchain tiasa gaduh konfigurasi sorangan. Sacara internal, unggal workchain dibagi kana shardchains, tapi ieu mangrupikeun jéntré palaksanaan anu henteu kedah diémutan.

Dina hiji workchain, loba akun nu disimpen nu boga akun_id identifiers sorangan. Pikeun ranté master sareng ranté kerja enol, panjangna 256 bit. Ku kituna, identifier akun ditulis, contona, kawas kieu:

-1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Ieu mangrupikeun format "atah": mimitina ID workchain, teras titik dua, sareng ID akun dina notasi héksadesimal.

Salaku tambahan, aya format anu disingget - nomer workchain sareng alamat akun disandikeun dina bentuk binér, checksum ditambah ka aranjeunna, sareng sadaya ieu disandikeun dina Base64:

Ef+BVndbeTJeXWLnQtm5bDC2UVpc0vH2TF2ksZPAPwcODSkb

Nyaho format catetan ieu, urang tiasa nyuhunkeun kaayaan akun ayeuna ngalangkungan klien uji nganggo paréntah

getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Kami bakal kéngingkeun sapertos kieu:

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

Kami ningali struktur anu disimpen dina DHT tina workchain anu ditangtukeun. Contona, di sawah storage.balance nyaeta kasaimbangan akun ayeuna, di storage.state.code - kode kontrak pinter, jeung di storage.state.data - data ayeuna na. Punten dicatet yén panyimpen data TON - Sél, sél - sapertos tangkal, unggal sél tiasa gaduh data sareng sél anak sorangan. Ieu ditémbongkeun salaku indentation dina garis panungtungan.

Ngawangun kontrak pinter

Ayeuna hayu urang ngadamel struktur sapertos kitu nyalira (anu disebat BOC - kantong sél) ngagunakeun basa Sunda Lima. Untungna, anjeun teu kudu nulis kontrak pinter sorangan - dina folder crypto/block aya file tina arsip sumber new-wallet.fif, nu bakal nulungan urang nyieun dompét anyar. Hayu urang salin kana polder sareng klien anu dirakit (~/liteclient-build, lamun nuturkeun parentah di luhur). Kuring dicutat eusina di luhur salaku conto kode on Fift.

Laksanakeun file ieu sapertos kieu:

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

Ieu téh <source-directory> kudu diganti ku jalur ka sumber unpacked ("~" simbol, hanjakalna, teu bisa dipaké di dieu, jalur pinuh diperlukeun). Gantina ngagunakeun konci a -I Anjeun tiasa nangtukeun variabel lingkungan FIFTPATH sareng nempatkeun jalan ieu kana éta.

Kusabab urang ngaluncurkeun Fift kalayan nami file new-wallet.fif, éta bakal ngaéksekusi sareng kaluar. Upami anjeun ngaleungitkeun nami file, anjeun tiasa maén sareng juru basa sacara interaktif.

Saatos palaksanaan, hal sapertos kieu kedah dipintonkeun dina konsol:

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)

Ieu ngandung harti yén dompét jeung ID -1:4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2 (atanapi, naon anu sami, 0f9PzVILj8yglrVn1zS-NSjtxr7QBfaTCp7JrBqnFPIR8nhZ) hasil dijieun. Kode anu cocog bakal aya dina file new-wallet-query.boc, alamatna di new-wallet.addr, sareng konci pribadi aya dina new-wallet.pk (ati - ngajalankeun naskah deui bakal nimpa file ieu).

Tangtosna, jaringan TON henteu acan terang ngeunaan dompét ieu; éta ngan ukur disimpen dina bentuk file ieu. Ayeuna kudu diunggah ka jaringan. Nanging, masalahna nyaéta pikeun nyiptakeun kontrak pinter anjeun kedah mayar komisi, sareng kasaimbangan akun anjeun masih nol.

Dina modeu gawe, masalah ieu bakal direngsekeun ku purchasing gram on bursa (atawa mindahkeun tina dompet sejen). Nya, dina modeu uji ayeuna, kontrak pinter khusus parantos didamel, dimana anjeun tiasa naroskeun dugi ka 20 gram sapertos kitu.

Ngahasilkeun pamundut ka kontrak pinter batur

Urang ngadamel pamundut ka kontrak pinter nu distributes gram kénca jeung katuhu kawas kieu. Dina folder sarua crypto/block manggihan 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

Urang ogé bakal nyimpen eta dina folder jeung klien dirakit, tapi urang bakal ngabenerkeun garis kalima - saméméh garis "constant dest_addr". Hayu urang ganti ku alamat dompét anu anjeun damel sateuacanna (pinuh, henteu disingkat). Teu perlu nulis "-1:" di awal, tinimbang nempatkeun "0x" di awal.

Anjeun oge bisa ngarobah garis 6.666 Gram*/ constant amount - ieu jumlah dina gram nu Anjeun requesting (teu leuwih ti 20). Malah lamun nangtukeun sakabeh angka, ninggalkeun titik decimal.

Tungtungna, anjeun kedah ngabenerkeun garis 0x00000011 constant seqno. Nomer kahiji di dieu nyaéta nomer urut ayeuna, anu disimpen dina akun anu ngaluarkeun gram. Dimana abdi tiasa kéngingkeun éta? Sakumaha anu dinyatakeun di luhur, mimitian klien sareng jalankeun:

last
getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Dina tungtungna, data kontrak pinter bakal ngandung

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

Angka 0000000D (anjeun bakal langkung ageung) mangrupikeun nomer urutan anu kedah digentoskeun kana testgiver.fif.

Éta éta, simpen file sareng jalankeun (./crypto/fift testgiver.fif). Kaluaran bakal file wallet-query.boc. Ieu naon kabentuk pesen ka kontrak pinter batur - pamundut "mindahkeun jadi loba gram kana rekening misalna hiji".

Ngagunakeun klien, urang unggah kana 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

Lamun ayeuna nelepon last, lajeng deui menta status akun ti mana kami ménta gram, lajeng urang kudu ningali yén jumlah runtuyan na geus ngaronjat ku hiji - ieu ngandung harti yén éta dikirim duit ka rekening urang.

Léngkah terakhir tetep - unduh kodeu dompét kami (kasaimbanganna parantos dieusi deui, tapi tanpa kode kontrak pinter kami moal tiasa ngatur éta). Urang laksanakeun sendfile new-wallet-query.boc - sareng éta, anjeun gaduh dompét anjeun sorangan dina jaringan TON (sanaos ngan ukur tés pikeun ayeuna).

Nyiptakeun transaksi kaluar

Pikeun mindahkeun duit tina kasaimbangan akun dijieun, aya file crypto/block/wallet.fif, anu ogé kedah disimpen dina polder sareng klien anu dirakit.

Sarupa jeung léngkah saméméhna, anjeun kudu nyaluyukeun jumlah anjeun nransper, alamat panarima (dest_addr), sarta seqno dompét anjeun (éta sarua jeung 1 sanggeus initializing dompét jeung nambahan ku 1 sanggeus unggal urus kaluar - anjeun tiasa tingali ku naroskeun status akun anjeun). Pikeun tés, anjeun tiasa nganggo, contona, dompét kuring - 0x4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2.

Dina ngamimitian (./crypto/fift wallet.fif) skrip bakal nyandak alamat dompét anjeun (ti mana anjeun nransper) sareng konci pribadina tina file new-wallet.addr и new-wallet.pk, sareng pesen anu ditampi bakal diserat new-wallet-query.boc.

Sapertos sateuacanna, pikeun langsung ngalakukeun transaksi, nelepon sendfile new-wallet-query.boc dina klien. Sanggeus ieu, ulah poho pikeun ngapdet kaayaan blockchain (last) jeung pariksa yen kasaimbangan sarta seqno tina dompet urang geus robah (getaccount <account_id>).

Uji klien TON (Telegram Open Network) sareng basa Fift énggal pikeun kontrak pinter

Éta waé, ayeuna urang tiasa nyiptakeun kontrak pinter di TON sareng ngirimkeun pamundut ka aranjeunna. Sakumaha anjeun tiasa tingali, pungsionalitas ayeuna parantos cekap pikeun, contona, ngadamel dompét anu langkung ramah kalayan antarmuka grafis (tapi, diperkirakeun yén éta bakal sayogi salaku bagian tina utusan).

Ngan pamaké nu kadaptar bisa ilubiung dina survey. Daptar, Punten.

Naha anjeun resep neraskeun tulisan sareng analisa TON, TVM, Fift?

  • Leres, kuring ngantosan parantosan séri tulisan kalayan gambaran umum ngeunaan TON

  • Sumuhun, éta metot maca leuwih lengkep ihwal basa Lima

  • Leres, abdi hoyong langkung seueur ngeunaan TON Virtual Machine sareng assembler pikeun éta

  • Taya, euweuh ieu metot

39 pamaké milih. 12 pamaké abstained.

Kumaha saur anjeun ngeunaan rencana Telegram pikeun ngaluncurkeun TON?

  • Kuring boga harepan luhur pikeun proyék ieu

  • Kuring ngan nuturkeun perkembangannya kalayan minat.

  • Kami skeptis jeung ragu kasuksésan na.

  • Kuring condong nganggap inisiatif ieu gagal sareng teu dipikabutuh pikeun massa anu lega

47 pamaké milih. 12 pamaké abstained.

sumber: www.habr.com

Tambahkeun komentar