Hlola i-TON (Telegram Open Network) nolimi olusha lwe-Fift ukuze uthole izinkontileka ezihlakaniphile

Esikhathini esingaphezu konyaka odlule, kwaziwa mayelana nezinhlelo zesithunywa seTelegram ukukhulula inethiwekhi yaso ehlakazekile. Vula i-telegraph yocingo. Khona-ke idokhumenti yobuchwepheshe enamandla yatholakala, okwakusolwa ukuthi ibhalwe nguNikolai Durov futhi yachaza isakhiwo senethiwekhi yesikhathi esizayo. Kulabo abaphuthelwe, ngincoma ukuthi ufunde ukuphinda ngikuxoxele lo mbhalo (ingxenye 1, ingxenye 2; ingxenye yesithathu, maye, isaqoqa uthuli emidwebeni).

Kusukela lapho, akubanga khona izindaba ezibalulekile mayelana nesimo sokuthuthuka kwe-TON kuze kube yizinsuku ezimbalwa ezedlule (kwenye ye iziteshi ezingekho emthethweni) isixhumanisi esiya ekhasini asizange sivele https://test.ton.org/download.htmllapho atholakala khona:
i-ton-test-liteclient-full.tar.xz - Imithombo yeklayenti ekhanyayo yenethiwekhi yokuhlola ye-TON;
ton-lite-client-test1.config.json - ifayela lokumisa lokuxhuma kunethiwekhi yokuhlola;
README - ulwazi mayelana nomhlangano kanye nokwethulwa kweklayenti;
KANJANI — imiyalelo yesinyathelo ngesinyathelo sendlela yokwenza inkontileka ehlakaniphile usebenzisa iklayenti;
ithoni.pdf - idokhumenti ebuyekeziwe (yamhla zi-2 kuNdasa, 2019) enombono wezobuchwepheshe wenethiwekhi ye-TON;
tvm.pdf - Incazelo yobuchwepheshe ye-TVM (Umshini Ongokoqobo we-TON, umshini we-TON virtual);
tblkch.pdf - Incazelo yezobuchwepheshe ye-TON blockchain;
i-fiftbase.pdf — incazelo yolimi olusha lwe-Fift, oludizayinelwe ukudala izinkontileka ezihlakaniphile ku-TON.

Ngiyaphinda, kwakungekho ukuqinisekiswa okusemthethweni kwekhasi kanye nayo yonke le mibhalo evela kuTelegram, kodwa umthamo walezi zinto uzenza zibe sobala. Yethula iklayenti elishicilelwe ngokuzifaka engozini.

Ukwakha iklayenti lokuhlola

Okokuqala, ake sizame ukwakha nokusebenzisa iklayenti lokuhlola - ngenhlanhla, README ichaza le nqubo elula ngokuningiliziwe. Ngizokwenza lokhu ngisebenzisa i-macOS 10.14.5 njengesibonelo; angikwazi ukufakazela impumelelo yokwakhiwa kwamanye amasistimu.

  1. Landa futhi ukhiphe ingobo yomlando yomthombo. Kubalulekile ukulanda inguqulo yakamuva njengoba ukuhambisana nokubuyela emuva akuqinisekisiwe kulesi sigaba.

  2. Qiniseka ukuthi izinguqulo zakamuva ze-make, i-cmake (inguqulo 3.0.2 noma ngaphezulu), i-OpenSSL (okuhlanganisa namafayela enhlokweni engu-C), i-g++ noma i-clang ifakiwe kusistimu. Bekungadingeki ngifake lutho, konke kwahlangana khona manjalo.

  3. Ake sicabange ukuthi imithombo ikhishwe kufolda ~/lite-client. Ngokuhlukana kwayo, dala ifolda engenalutho yephrojekthi eqoqiwe (isibonelo, ~/liteclient-build), futhi kusukela kuyo (cd ~/liteclient-build) shayela imiyalo:

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

    Hlola i-TON (Telegram Open Network) nolimi olusha lwe-Fift ukuze uthole izinkontileka ezihlakaniphile

    Ukwakha umtoliki wolimi we-Fift wezinkontileka ezihlakaniphile (okuningi mayelana nakho ngezansi), siphinde sishayele

    cmake --build . --target fift

  4. Landa yamanje ifayela lokumisa ukuze uxhume kunethiwekhi yokuhlola bese uyibeka kufolda neklayenti elihlanganisiwe.

  5. Kwenziwe, ungaqala iklayenti:

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

Uma konke kwenziwa ngendlela efanele, kufanele ubone okufana nalokhu:

Hlola i-TON (Telegram Open Network) nolimi olusha lwe-Fift ukuze uthole izinkontileka ezihlakaniphile

Njengoba singabona, kukhona imiyalo embalwa etholakalayo:
help — veza lolu hlu lwemiyalo;
quit - Phuma;
time — khombisa isikhathi samanje kuseva;
status — khombisa ukuxhumana kanye nesimo sesizindalwazi sendawo;
last - buyekeza isimo se-blockchain (landa ibhulokhi yokugcina). Kubalulekile ukusebenzisa lo myalo ngaphambi kwanoma yiziphi izicelo ukuze uqiniseke ukuthi ubona isimo samanje senethiwekhi.
sendfile <filename> - layisha ifayela lendawo kunethiwekhi ye-TON. Yile ndlela ukusebenzelana nenethiwekhi okwenzeka ngayo - okuhlanganisa, isibonelo, ukudalwa kwezinkontileka ezintsha ezihlakaniphile kanye nezicelo zokudlulisa izimali phakathi kwama-akhawunti;
getaccount <address> - bonisa okwamanje (ngesikhathi kukhishwa umyalo) last) isimo se-akhawunti enekheli elishiwo;
privkey <filename> — layisha ukhiye oyimfihlo efayeleni lendawo.

Uma, lapho uqala iklayenti, udlulisela ifolda kulo usebenzisa inketho -D, khona-ke uzofaka ibhulokhi yokugcina ye-masterchain kuyo:

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

Manje singadlulela ezintweni ezithakazelisayo kakhulu - funda ulimi lwe-Fift, zama ukuhlanganisa inkontileka ehlakaniphile (isibonelo, dala isikhwama sokuhlola), silayishe kunethiwekhi bese uzama ukudlulisa izimali phakathi kwama-akhawunti.

Ulimi lwesihlanu

Kusuka kudokhumenti i-fiftbase.pdf ungathola ukuthi ithimba le-Telegram lidale ulimi olusha lwesitaki ukuze lidale izinkontileka ezihlakaniphile Ezinhlanu (ngokusobala kusukela kunombolo yesihlanu, elifana nelithi Forth, ulimi elesihlanu elifana ngalo okuningi).

Lo mbhalo unamandla kakhulu, amakhasi angama-87, futhi ngeke ngiphinde ngichaze okuqukethwe kwawo ngokuningiliziwe ngaphakathi kohlaka lwalesi sihloko (okungenani ngoba angikaqedi ukuyifunda mina :). Ngizogxila emaphuzwini abalulekile futhi nginikeze izibonelo ezimbalwa zekhodi kulolu limi.

Ezingeni eliyisisekelo, i-syntax ye-Fift ilula kakhulu: ikhodi yayo iqukethe amagama, ngokuvamile ihlukaniswa yizikhala noma ukunqamuka kwemigqa (isimo esikhethekile: amanye amagama awadingi isihlukanisi ngemva kwawo). Noma yikuphi igama iwukulandelana kwezinhlamvu okuzwela icala okuhambisana nokuthile nencazelo (cishe, lokho umhumushi okufanele akwenze lapho ehlangana naleli gama). Uma ingekho incazelo yegama, umhumushi uzama ukulihlaziya njengenombolo futhi alibeke esitakini. Ngendlela, izinombolo lapha - ngokuzumayo - izinombolo ezingu-257-bit, futhi azikho nhlobo izingxenyana - ngokuqondile, ziphenduka ngokushesha zibe izinombolo eziphelele, zakha inombolo kanye ne-denominator yengxenye enengqondo.

Amagama ajwayele ukusebenzisana namanani phezulu kwesitaki. Uhlobo oluhlukile lwamagama - isiqalo — ayisebenzisi isitaki, kodwa izinhlamvu ezilandelayo ezivela efayelini elingumthombo. Isibonelo, le yindlela ama-string literals asetshenziswa ngayo - uhlamvu lokucaphuna (") igama eliyisiqalo elibheka isicaphuni esilandelayo (esivalayo), bese liphusha umucu phakathi kwazo esitakini. Ama-One-liners aziphatha ngendlela efanayo (//) kanye ne-multiline (/*) imibono.

Yilapho cishe sonke isakhiwo sangaphakathi solimi siphelela khona. Konke okunye (okuhlanganisa nokwakhiwa kokulawula) kuchazwa njengamagama (kungaba ngaphakathi, njengokusebenza kwezibalo kanye nencazelo yamagama amasha; noma kuchazwe "kumtapo wezincwadi ojwayelekile" Fift.fif, ekufolda crypto/fift emithonjeni).

Uhlelo olulula lwesibonelo ku-Fift:

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

Umugqa wokuqala uchaza igama elisha setxy (qaphela isiqalo {, okudala ibhulokhi ngaphambi kokuvala } kanye nesiqalo :, okuyiyona echaza igama). setxy ithatha inombolo phezulu kwesitaki, iyichaze (noma iyichaze kabusha) njengendawo yomhlaba wonke njalo x, kanye nesikwele sale nombolo njengokungashintshi y (Ngokubheka ukuthi amanani ama-constants angachazwa kabusha, ngingamane ngiwabize ngokuguquguqukayo, kodwa ngilandela umhlangano wokuqamba ngolimi).

Imigqa emibili elandelayo ibeka inombolo esitakini bese ishaya ucingo setxy, bese kuboniswa amanani ama-constants x, y (igama lisetshenziselwa okukhiphayo .), womabili ama-constants abekwa esitakini, afingqwe, futhi umphumela nawo uyaphrintwa. Ngenxa yalokho sizobona:

3 9 12 ok
7 49 56 ok

(Umugqa othi “ok” uphrintwa umhumushi lapho eqeda ukucubungula umugqa wamanje ngemodi yokufaka esebenzisanayo)

Yebo, isibonelo sekhodi esigcwele:

"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

Leli fayela elibukeka ngokwesabekayo elokudala inkontileka ehlakaniphile - lizofakwa efayelini new-wallet-query.boc ngemva kokubulawa. Sicela uqaphele ukuthi olunye ulimi lomhlangano lusetshenziswa lapha ku-TON Virtual Machine (ngeke ngihlale kuyo ngokuningiliziwe), imiyalelo ezofakwa ku-blockchain.

Ngakho-ke, i-assembler ye-TVM ibhalwe ku-Fift - imithombo yalesi sihlanganisi isefayela crypto/fift/Asm.fif futhi axhunywe ekuqaleni kocezu lwekhodi olungenhla.

Ngingathini, ngokusobala u-Nikolai Durov uthanda nje ukudala izilimi ezintsha zokuhlela :)

Ukudala inkontileka ehlakaniphile nokuxhumana ne-TON

Ngakho-ke, ake sicabange ukuthi sihlanganise iklayenti le-TON kanye nomhumushi we-Fift njengoba kuchazwe ngenhla futhi sijwayelane nolimi. Ungayakha kanjani inkontileka ehlakaniphile manje? Lokhu kuchazwe efayeleni KANJANI, enamathiselwe emithonjeni.

Ama-akhawunti ku-TON

Njengoba ngichazile ku Ukubuyekezwa kwe-TON, le nethiwekhi iqukethe i-blockchain engaphezu kweyodwa - kukhona eyodwa evamile, okuthiwa. "i-master chain", kanye nenombolo engafanele yokwengeza "amaketanga omsebenzi", ahlonzwe ngenombolo ye-32-bit. I-masterchain inesikhombi sika -1; ngaphezu kwalokho, iketango lomsebenzi "eliyisisekelo" elinenkomba engu-0 lingasetshenziswa. Iqoqo lomsebenzi ngalinye lingaba nokucushwa kwalo. Ngaphakathi, i-workchain ngayinye ihlukaniswe ngama-shardchains, kodwa lena imininingwane yokuqaliswa okungadingeki ukuthi igcinwe engqondweni.

Ngaphakathi kochungechunge lomsebenzi olulodwa, ama-akhawunti amaningi agcinwa anezihlonzi zawo ze-akhawunti_id. Ochungechungeni oluyinhloko kanye neketango lomsebenzi elinguziro, angamabhithi angu-256 ubude. Ngakho-ke, isihlonzi se-akhawunti sibhaliwe, isibonelo, kanje:

-1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Lena ifomethi “eluhlaza”: okokuqala i-ID ye-workchain, bese kuba ikholoni, kanye ne-ID ye-akhawunti ku-hexadecimal notation.

Ngaphezu kwalokho, kukhona ifomethi efushanisiwe - inombolo ye-workchain nekheli le-akhawunti libhalwe ngekhodi kanambambili, isheke yengezwa kubo, futhi konke lokhu kufakwe ikhodi ku-Base64:

Ef+BVndbeTJeXWLnQtm5bDC2UVpc0vH2TF2ksZPAPwcODSkb

Ngokwazi le fomethi yerekhodi, singacela isimo samanje se-akhawunti ngeklayenti lokuhlola sisebenzisa umyalo

getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Sizothola okuthile okufana nalokhu:

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

Sibona isakhiwo esigcinwe ku-DHT yochungechunge lomsebenzi olushiwo. Ngokwesibonelo, ensimini storage.balance ibhalansi ye-akhawunti yamanje, ku storage.state.code - Ikhodi yenkontileka ehlakaniphile, futhi ku storage.state.data - idatha yayo yamanje. Sicela uqaphele ukuthi isitoreji sedatha ye-TON - Iseli, amaseli - ifana nesihlahla, iseli ngalinye lingaba nakho kokubili idatha yalo kanye namaseli engane. Lokhu kuboniswa njengokuhlehlisa emigqeni yokugcina.

Ukwakha inkontileka ehlakaniphile

Manje ake sakhe isakhiwo esinjalo ngokwethu (sibizwa nge-BOC - isikhwama samaseli) usebenzisa ulimi lwesiHlanu. Ngenhlanhla, asikho isidingo sokuthi uzibhalele inkontileka ehlakaniphile - kufolda crypto/block kukhona ifayela elivela kungobo yomlando yomthombo new-wallet.fif, okuzosisiza ukuthi sakhe isikhwama semali esisha. Masiyikopishele kufolda eneklayenti elihlanganisiwe (~/liteclient-build, uma ulandele imiyalelo engenhla). Ngicaphune okuqukethwe kwayo ngenhla njengesibonelo sekhodi ku-Fift.

Yenza leli fayela ngale ndlela elandelayo:

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

kuyinto <source-directory> kufanele kushintshwe indlela eya emithonjeni engapakiwe (uphawu “~”, ngeshwa, alukwazi ukusetshenziswa lapha, indlela egcwele iyadingeka). Esikhundleni sokusebenzisa ukhiye -I ungachaza i-variable yemvelo FIFTPATH bese ufaka lendlela kuyo.

Njengoba sethule i-Fift ngegama lefayela new-wallet.fif, izolenza futhi iphume. Uma ushiya igama lefayela, ungadlala notolika ngokuhlanganyela.

Ngemuva kokubulawa, into enjengale kufanele iboniswe kukhonsoli:

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)

Lokhu kusho ukuthi isikhwama esine-ID -1:4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2 (noma, yini efanayo, 0f9PzVILj8yglrVn1zS-NSjtxr7QBfaTCp7JrBqnFPIR8nhZ) idalwe ngempumelelo. Ikhodi ehambisanayo izoba sefayelini new-wallet-query.boc, ikheli lakhe lingaphakathi new-wallet.addr, futhi ukhiye oyimfihlo ungaphakathi new-wallet.pk (qaphela - ukusebenzisa iskripthi futhi kuzokhipha lawa mafayela).

Kunjalo, inethiwekhi ye-TON ayazi okwamanje ngalesi sikhwama; sigcinwa kuphela ngendlela yalawa mafayela. Manje idinga ukulayishwa kunethiwekhi. Kodwa-ke, inkinga ukuthi ukuze wakhe inkontileka ehlakaniphile udinga ukukhokha ikhomishini, futhi ibhalansi ye-akhawunti yakho isenguziro.

Kumodi yokusebenza, le nkinga izoxazululwa ngokuthenga amagremu ku-exchange (noma ukudlulisa kusuka kwesinye isikhwama). Yebo, kumodi yokuhlola yamanje, inkontileka ekhethekile ehlakaniphile yenziwe, lapho ungacela khona amagremu angu-20 kanjalo nje.

Ukudala isicelo kwinkontileka ehlakaniphile yomunye umuntu

Senza isicelo kwinkontileka ehlakaniphile esabalalisa amagremu kwesokunxele nakwesokudla kanje. Kufolda efanayo crypto/block thola ifayela 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

Sizophinde siyigcine kufolda neklayenti elihlangene, kodwa sizolungisa umugqa wesihlanu - ngaphambi komugqa "constant dest_addr". Asimiselenise nekheli lesikhwama osilidale ngaphambilini (ligcwele, alifushanisiwe). Asikho isidingo sokubhala “-1:" ekuqaleni, esikhundleni salokho faka u-“0x” ekuqaleni.

Ungakwazi futhi ukushintsha umugqa 6.666 Gram*/ constant amount - lena inani lamagremu olicelayo (akukho ngaphezu kwama-20). Ngisho noma ucacise inombolo yonke, shiya iphoyinti ledesimali.

Ekugcineni, udinga ukulungisa umugqa 0x00000011 constant seqno. Inombolo yokuqala lapha inombolo yamanje yokulandelana, egcinwa ku-akhawunti ekhipha amagremu. Ngingayithola kuphi? Njengoba kushiwo ngenhla, qala iklayenti bese uqalisa:

last
getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Ekugcineni, idatha yenkontileka ehlakaniphile izoqukatha

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

Inombolo 0000000D (eyakho izoba nkulu) inombolo yokulandelana okufanele kufakwe esikhundleni sayo. testgiver.fif.

Yilokho kuphela, gcina ifayela bese ugijima (./crypto/fift testgiver.fif). Okukhiphayo kuzoba ifayela wallet-query.boc. Yilokhu okwakhiwa сообщение kwinkontileka ehlakaniphile yomunye umuntu - isicelo "dlulisela amagremu amaningi ku-akhawunti enjalo."

Sisebenzisa iklayenti, siyilayisha kunethiwekhi:

> 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

Uma manje ufona last, bese uphinda ucela isimo se-akhawunti esicele kuyo amagremu, khona-ke kufanele sibone ukuthi inombolo yayo yokulandelana ikhuphuke ngomunye - lokhu kusho ukuthi ithumele imali ku-akhawunti yethu.

Isinyathelo sokugcina sisele - landa ikhodi yesikhwama sethu semali (ibhalansi yayo isivele igcwalisiwe, kodwa ngaphandle kwekhodi yenkontileka ehlakaniphile ngeke sikwazi ukuyiphatha). Siyaqhuba sendfile new-wallet-query.boc - futhi yilokho, unesikhwama sakho semali kunethiwekhi ye-TON (ngisho noma kuyisivivinyo esisodwa okwamanje).

Ukudala ukuthengiselana okuphumayo

Ukudlulisa imali ebhalansi ye-akhawunti edaliwe, kunefayela crypto/block/wallet.fif, nayo edinga ukubekwa kufolda neklayenti elihlanganisiwe.

Ngokufanayo nezinyathelo zangaphambilini, udinga ukulungisa inani olidluliselayo, ikheli lomamukeli (dest_addr), kanye ne-seqno yesikhwama sakho semali (ilingana no-1 ngemva kokuqala isikhwama semali futhi inyuke ngo-1 ngemva kokuthenga ngakunye okuphumayo - ungakwazi ibone ngokucela isimo se-akhawunti yakho) . Ukuhlola, ungasebenzisa, isibonelo, isikhwama sami semali - 0x4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2.

Ekuqaleni (./crypto/fift wallet.fif) umbhalo uzothatha ikheli lesikhwama sakho semali (lapho udlulisela khona) kanye nokhiye waso oyimfihlo kumafayela new-wallet.addr и new-wallet.pk, futhi umyalezo owamukelwe uzobhalelwa new-wallet-query.boc.

Njengangaphambili, ukwenza umsebenzi ngqo, shayela sendfile new-wallet-query.boc kuklayenti. Ngemuva kwalokhu, ungakhohlwa ukubuyekeza isimo se-blockchain (last) futhi uhlole ukuthi ibhalansi kanye ne-seqno yesikhwama sethu semali kushintshile (getaccount <account_id>).

Hlola i-TON (Telegram Open Network) nolimi olusha lwe-Fift ukuze uthole izinkontileka ezihlakaniphile

Yilokho kuphela, manje sesingakwazi ukudala izinkontileka ezihlakaniphile e-TON futhi sithumele izicelo kubo. Njengoba ubona, ukusebenza kwamanje sekwanele kakade, ukwenza isibonelo, ukwenza isikhwama semali enobungane nge-graphical interface (noma kunjalo, kulindeleke ukuthi isivele itholakale njengengxenye yesithunywa).

Abasebenzisi ababhalisiwe kuphela abangabamba iqhaza kuhlolovo. Ngena ngemvume, wamukelekile.

Ingabe ungathanda ukuqhubeka nezindatshana ngokuhlaziywa kwe-TON, TVM, Fift?

  • Yebo, ngilindele ukuqedwa kochungechunge lwezihloko ngokubuka jikelele kwe-TON

  • Yebo, kuyajabulisa ukufunda okwengeziwe ngolimi lwesi-Fift

  • Yebo, ngifuna ukufunda okwengeziwe nge-TON Virtual Machine kanye nesihlanganisi sayo

  • Cha, akukho kulokhu okuthakazelisayo

Bangu-39 abasebenzisi abavotile. Abasebenzisi abangu-12 bagobile.

Ucabangani ngezinhlelo zeTelegram zokwethula i-TON?

  • Nginethemba elikhulu ngale phrojekthi

  • Ngilandela intuthuko yayo ngentshisekelo.

  • Ngiyakungabaza futhi ngiyangabaza impumelelo yayo.

  • Ngithanda ukuthatha lesi sinyathelo njengesehluleki futhi esingadingeki kubantu abaningi

Bangu-47 abasebenzisi abavotile. Abasebenzisi abangu-12 bagobile.

Source: www.habr.com

Engeza amazwana