Yesani kasitomala TON (Telegram Open Network) ndi chinenero chatsopano cha Fift kuti mupeze makontrakitala anzeru

Kupitilira chaka chapitacho, zidadziwika za mapulani a messenger wa Telegraph kuti amasule maukonde ake omwe adakhazikitsidwa. Tsegulani Network telegraph. Kenako chikalata chaumisiri chochuluka chidapezeka, chomwe akuti chidalembedwa ndi Nikolai Durov ndikulongosola mawonekedwe a network yamtsogolo. Kwa iwo omwe adachiphonya, ndikupangira kuti muwerenge zomwe ndalembanso za chikalatachi (gawo 1, gawo 2; gawo lachitatu, tsoka, akali kusonkhanitsa fumbi mu drafts).

Kuyambira pamenepo, sipanakhale nkhani yofunikira yokhudzana ndi chitukuko cha TON mpaka masiku angapo apitawo (m'modzi wa mayendedwe osavomerezeka) ulalo watsamba sunawonekere https://test.ton.org/download.html, komwe kuli:
β—¦ ton-test-liteclient-full.tar.xz - magwero a kasitomala wopepuka pa netiweki yoyeserera ya TON;
β—¦ ton-lite-client-test1.config.json - Fayilo yosinthira yolumikizira netiweki yoyeserera;
β—¦ YERENGANI - zambiri zomanga ndi kuyambitsa kasitomala;
β—¦ MMENE - malangizo a pang'onopang'ono pakupanga mgwirizano wanzeru pogwiritsa ntchito kasitomala;
β—¦ tani.pdf - chikalata chosinthidwa (cha Marichi 2, 2019) ndi chithunzithunzi chaukadaulo cha netiweki ya TON;
β—¦ tvm.pdf - Kufotokozera kwaukadaulo kwa TVM (TON Virtual Machine, TON pafupifupi makina);
β—¦ tblkch.pdf - Kufotokozera kwaukadaulo kwa TON blockchain;
β—¦ chisanubase.pdf - Kufotokozera kwa chilankhulo chatsopano cha Fift, chopangidwira kupanga makontrakitala anzeru ku TON.

Ndikubwerezanso, panalibe chitsimikiziro chovomerezeka cha tsamba ndi zolemba zonsezi kuchokera ku Telegalamu, koma kuchuluka kwa zidazi kumapangitsa kuti zikhale zomveka. Yambitsani kasitomala wosindikizidwa pa ngozi yake.

Kumanga kasitomala woyezetsa

Choyamba, tiyeni tiyese kupanga ndi kuyendetsa kasitomala woyesa - mwamwayi, YERENGANI akufotokoza njira yosavuta imeneyi mwatsatanetsatane. Ndichita izi pogwiritsa ntchito macOS 10.14.5 monga chitsanzo; Sindingatsimikizire kuti ntchito yomangayi ikuyenda bwino pamakina ena.

  1. Koperani ndi kumasula source archive. Ndikofunikira kutsitsa mtundu waposachedwa chifukwa kuyanjana kwa m'mbuyo sikutsimikizika pakadali pano.

  2. Onetsetsani kuti makina aposachedwa a make, cmake (mtundu 3.0.2 kapena apamwamba), OpenSSL (kuphatikiza mafayilo amutu C), g++ kapena clang ayikidwa pakompyuta. Sindinayenera kukhazikitsa chilichonse, zonse zidabwera nthawi yomweyo.

  3. Tiyerekeze kuti magwero achotsedwa mufoda ~/lite-client. Mosiyana ndi izo, pangani chikwatu chopanda kanthu cha polojekiti yomwe yasonkhanitsidwa (mwachitsanzo, ~/liteclient-build), ndipo (cd ~/liteclient-build) kuitana malamulo:

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

    Yesani kasitomala TON (Telegram Open Network) ndi chinenero chatsopano cha Fift kuti mupeze makontrakitala anzeru

    Kuti mupange wotanthauzira chinenero chachisanu kuti apange makontrakitala anzeru (zambiri za izo pansipa), timayimbanso

    cmake --build . --target fift

  4. Tsitsani yamakono configuration file kuti mulumikizane ndi netiweki yoyeserera ndikuyiyika mufoda ndi kasitomala wosonkhanitsidwa.

  5. Wachita, mutha kuyambitsa kasitomala:

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

Ngati zonse zachitika bwino, muyenera kuwona chonga ichi:

Yesani kasitomala TON (Telegram Open Network) ndi chinenero chatsopano cha Fift kuti mupeze makontrakitala anzeru

Monga tikuonera, pali malamulo ochepa omwe alipo:
β—¦ help - onetsani mndandanda wa malamulo awa;
β—¦ quit - Pitani kokayenda;
β—¦ time - onetsani nthawi yomwe ilipo pa seva;
β—¦ status - onetsani kulumikizidwa ndi mawonekedwe ankhokwe;
β—¦ last - sinthani mkhalidwe wa blockchain (tsitsani chipika chomaliza). Ndikofunikira kuyendetsa lamuloli musanapemphe chilichonse kuti muwonetsetse kuti mukuwona momwe intaneti ilili.
β—¦ sendfile <filename> - kwezani fayilo yakwanuko ku netiweki ya TON. Umu ndi momwe kuyanjana ndi maukonde kumachitikira - kuphatikiza, mwachitsanzo, kupanga makontrakitala atsopano anzeru ndi zopempha kutumiza ndalama pakati pa akaunti;
β—¦ getaccount <address> - onetsani zapano (panthawi yomwe lamulo lidaperekedwa) last) udindo wa akaunti ndi adilesi yotchulidwa;
β—¦ privkey <filename> - tsegulani kiyi yachinsinsi kuchokera pafayilo yapafupi.

Ngati, poyambitsa kasitomala, mumasamutsa chikwatucho pogwiritsa ntchito njirayo -D, ndiye adzawonjezera chipika chomaliza cha masterchain mkati mwake:

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

Tsopano titha kupita kuzinthu zosangalatsa kwambiri - phunzirani chilankhulo cha Fift, yesetsani kupanga mgwirizano wanzeru (mwachitsanzo, pangani chikwama choyesera), lowetsani pa intaneti ndikuyesa kusamutsa ndalama pakati pa akaunti.

Chinenero Chachisanu

Kuchokera pachikalata chisanubase.pdf mutha kudziwa kuti gulu la Telegraph lapanga chilankhulo chatsopano chopanga ma contract anzeru Chasanu (mwachiwonekere kuchokera ku nambala chachisanu, mofanana ndi Forth, chinenero chimene Chachisanu chili nacho chofanana kwambiri).

Chikalatacho ndi chochuluka kwambiri, masamba 87, ndipo sindifotokozanso mwatsatanetsatane zomwe zili mkati mwa nkhaniyi (osachepera chifukwa sindinamalize kuwerenga ndekha :). Ndiyang'ana pa mfundo zazikulu ndikupereka zitsanzo zingapo za code m'chinenerochi.

Pamlingo woyambira, mawu a Fift ndi osavuta: khodi yake imakhala ndi mawu, nthawi zambiri amalekanitsidwa ndi mipata kapena kusweka kwa mizere (mwapadera: mawu ena safuna olekanitsa pambuyo pawo). Aliyense mawu ndi mndandanda wa zilembo zomwe zimagwirizana ndi zina tanthauzo (pafupifupi, zomwe womasulira ayenera kuchita akakumana ndi mawu awa). Ngati palibe tanthauzo la liwu, womasulira amayesa kuligawa ngati nambala ndikuyiyika pamtengowo. Mwa njira, ziwerengero pano - mwadzidzidzi - 257-bit integers, ndipo palibe tizigawo tating'ono - ndendende, iwo nthawi yomweyo kusanduka awiri integers, kupanga manambala ndi denominator wa kachigawo zomveka.

Mawu amatha kulumikizana ndi zikhalidwe zomwe zili pamwamba pamtengo. Mtundu wosiyana wa mawu - chiyambi - sagwiritsa ntchito stack, koma zilembo zotsatiridwa kuchokera ku fayilo yoyambira. Mwachitsanzo, umu ndi momwe string literals imagwiritsidwira ntchito - quote character (") ndi mawu oyamba omwe amayang'ana mawu otsatirawa (otseka), ndikukankhira chingwe pakati pawo pamtengowo. Omwe ali ndi mzere amachita chimodzimodzi (//) ndi multiline (/*) ndemanga.

Apa ndi pamene pafupifupi zonse za mkati mwa chinenero zimathera. Zina zonse (kuphatikiza zowongolera) zimatanthauzidwa ngati mawu (mwina amkati, monga masamu ndi tanthauzo la mawu atsopano; kapena kufotokozedwa mu "laibulale yokhazikika" Fift.fif, yomwe ili mufoda crypto/fift m'magwero).

Pulogalamu yachitsanzo yosavuta mu Fift:

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

Mzere woyamba umatanthauzira mawu atsopano setxy (onani mawu oyamba {, zomwe zimapanga chipika chisanatseke } ndi prefix :, zomwe zimatanthauzira mawuwo). setxy amatenga nambala kuchokera pamwamba pa muluwo, kutanthauzira (kapena kutanthauziranso) ngati yapadziko lonse lapansi mosalekeza x, ndi masikweya a nambala iyi ngati chokhazikika y (Popeza kuti zikhalidwe zokhazikika zimatha kufotokozedwanso, ndikanakonda kuzitcha zosintha, koma ndimatsatira kutchula dzina mchilankhulocho).

Mizere iwiri yotsatirayi imayika nambala pamtengo ndikuyimba setxy, ndiye zikhalidwe za zokhazikika zimawonetsedwa x, y (mawuwa amagwiritsidwa ntchito kutulutsa .), zokhazikika zonse zimayikidwa pamtengo, mwachidule, ndipo zotsatira zake zimasindikizidwanso. Chifukwa chake tiwona:

3 9 12 ok
7 49 56 ok

(Mzere "chabwino" umasindikizidwa ndi womasulira akamaliza kukonza mzere wapano munjira yolumikizirana)

Chabwino, chitsanzo chonse cha code:

"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

Fayilo yowoneka yowopsa iyi ndiyopanga mgwirizano wanzeru - idzayikidwa mufayilo new-wallet-query.boc pambuyo pa kuphedwa. Chonde dziwani kuti chinenero china cha msonkhano chikugwiritsidwa ntchito pano kwa TON Virtual Machine (sindikhalapo mwatsatanetsatane), malangizo omwe adzaikidwa pa blockchain.

Chifukwa chake, chophatikiza cha TVM chalembedwa mu Fift - magwero a assembler uyu ali mufayilo crypto/fift/Asm.fif ndipo amalumikizidwa kumayambiriro kwa kachidutswa kakang'ono ka code.

Kodi ndinganene chiyani, zikuwoneka kuti Nikolai Durov amakonda kupanga zilankhulo zatsopano zamapulogalamu :)

Kupanga mgwirizano wanzeru ndikulumikizana ndi TON

Chifukwa chake, tiyeni tiyerekeze kuti tasonkhanitsa kasitomala wa TON ndi womasulira Wachisanu monga tafotokozera pamwambapa ndikudziwa bwino chilankhulocho. Momwe mungapangire mgwirizano wanzeru tsopano? Izi zikufotokozedwa mu fayilo MMENE, zolumikizidwa ku magwero.

Akaunti mu TON

Monga ndafotokozera mu Ndemanga ya TON, maukondewa ali ndi blockchain yopitilira imodzi - pali imodzi wamba, yomwe imatchedwa. "master chain", komanso nambala yosasinthika ya "maketani ogwira ntchito", odziwika ndi nambala ya 32-bit. Masterchain ali ndi chizindikiritso cha -1; kuphatikiza apo, "base" chain yokhala ndi chizindikiritso cha 0. Unyolo uliwonse wantchito ukhoza kukhala ndi masinthidwe ake. Mkati, ntchito iliyonse imagawidwa kukhala shardchains, koma iyi ndi ndondomeko yoyendetsera ntchito yomwe sikuyenera kukumbukiridwa.

Pantchito imodzi, maakaunti ambiri amasungidwa omwe ali ndi zizindikiritso zawo za akaunti_id. Kwa master chain ndi zero work chain, ndi 256 bits kutalika. Chifukwa chake, chizindikiritso cha akaunti chimalembedwa, mwachitsanzo, motere:

-1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Ili ndiye mtundu wa "raw": choyamba ID yantchito, kenako colon, ndi ID ya akaunti mu hexadecimal notation.

Kuphatikiza apo, pali mawonekedwe ofupikitsidwa - nambala yantchito ndi adilesi yaakaunti imayikidwa mu mawonekedwe a binary, cheke imawonjezedwa kwa iwo, ndipo zonsezi zimayikidwa mu Base64:

Ef+BVndbeTJeXWLnQtm5bDC2UVpc0vH2TF2ksZPAPwcODSkb

Podziwa mawonekedwe a rekodiyi, titha kufunsa momwe akaunti ilili panopa kudzera mwa kasitomala woyeserera pogwiritsa ntchito lamulo

getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Tipeza chonchi:

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

Tikuwona kapangidwe kamene kamasungidwa mu DHT ya mndandanda wantchito womwe watchulidwa. Mwachitsanzo, m'munda storage.balance ndi akaunti yomwe ilipo, mu storage.state.code - smart contract code, and in storage.state.data - deta yake yamakono. Chonde dziwani kuti TON yosungirako deta - Cell, cell - ndi mtengo, selo iliyonse ikhoza kukhala ndi deta yake komanso maselo a ana. Izi zikuwonetsedwa ngati kulowera m'mizere yomaliza.

Kupanga mgwirizano wanzeru

Tsopano tiyeni tipange dongosolo lotere (lotchedwa BOC - thumba la ma cell) pogwiritsa ntchito chinenero chachisanu. Mwamwayi, simuyenera kulemba mgwirizano wanzeru nokha - mufoda crypto/block pali fayilo yochokera ku source archive new-wallet.fif, zomwe zingatithandize kupanga chikwama chatsopano. Tiyeni tiyikopere ku chikwatu ndi kasitomala osonkhana (~/liteclient-build, ngati mutatsatira malangizo omwe ali pamwambapa). Ndinatchula zomwe zili pamwambapa monga chitsanzo cha code pa Fift.

Pangani fayiloyi motere:

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

ndi <source-directory> iyenera kusinthidwa ndi njira yopita kumalo osatsegulidwa (chizindikiro cha "~", mwatsoka, sichingagwiritsidwe ntchito pano, njira yonse ikufunika). M'malo mogwiritsa ntchito kiyi -I mukhoza kutanthauzira chilengedwe variable FIFTPATH ndi kuika njira iyi mmenemo.

Popeza tinayambitsa Fift ndi dzina la fayilo new-wallet.fif, idzachita ndi kutuluka. Ngati mwasiya dzina la fayilo, mutha kusewera ndi womasulira molumikizana.

Pambuyo pa kuphedwa, chinthu chonga ichi chiyenera kuwonetsedwa mu 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)

Izi zikutanthauza kuti chikwama chokhala ndi ID -1:4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2 (kapena, chofanana ndi chiyani, 0f9PzVILj8yglrVn1zS-NSjtxr7QBfaTCp7JrBqnFPIR8nhZ) adapangidwa bwino. Khodi yofananira idzakhala mu fayilo new-wallet-query.boc, adilesi yake ili mkati new-wallet.addr, ndipo kiyi yachinsinsi ili mkati new-wallet.pk (samalani - kuyendetsa script kudzachotsanso mafayilowa).

Zachidziwikire, netiweki ya TON sinadziwebe za chikwama ichi; imasungidwa mu mawonekedwe a mafayilowa. Tsopano iyenera kukwezedwa ku netiweki. Komabe, vuto ndilakuti kuti mupange mgwirizano wanzeru muyenera kulipira komishoni, ndipo akaunti yanu ikadali ziro.

Pogwira ntchito, vutoli lidzathetsedwa pogula magalamu pakusinthana (kapena kusamutsa kuchokera ku chikwama china). Chabwino, mumayendedwe apano, mgwirizano wapadera wanzeru wapangidwa, womwe mutha kufunsa mpaka magalamu 20 monga choncho.

Kupanga pempho ku mgwirizano wanzeru wa munthu wina

Timapanga pempho ku mgwirizano wanzeru womwe umagawa magalamu kumanzere ndi kumanja monga chonchi. Mu chikwatu chomwecho crypto/block pezani fayilo 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

Tidzasunganso mufoda ndi kasitomala wosonkhana, koma tidzakonza mzere wachisanu - mzere usanachitike "constant dest_addr". Tiyeni tisinthe ndi adilesi ya chikwama chomwe mudapanga kale (chodzaza, osati chidule). Palibe chifukwa cholembera "-1:" poyambira, m'malo mwake ikani "0x" poyambira.

Mukhozanso kusintha mzere 6.666 Gram*/ constant amount - ichi ndi kuchuluka kwa magalamu omwe mukupempha (osapitirira 20). Ngakhale mutatchula nambala yonse, siyani decimal.

Pomaliza, muyenera kukonza mzere 0x00000011 constant seqno. Nambala yoyamba apa ndi nambala yotsatizana, yomwe imasungidwa mu akaunti yotulutsa magalamu. Kodi ndingachitenge kuti? Monga tafotokozera pamwambapa, yambani kasitomala ndikuyendetsa:

last
getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Pamapeto pake, deta yanzeru ya mgwirizano idzakhala ndi

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

Nambala 0000000D (yanu idzakhala yayikulu) ndi nambala yotsatizana yomwe iyenera kusinthidwa kukhala testgiver.fif.

Ndiye, sungani fayilo ndikuyendetsa (./crypto/fift testgiver.fif). Chotsatiracho chidzakhala fayilo wallet-query.boc. Izi ndi zomwe zimapangidwira uthenga ku mgwirizano wanzeru wa munthu wina - pempho "kusamutsa magalamu ochuluka ku akaunti yoteroyo."

Pogwiritsa ntchito kasitomala, timayika pa netiweki:

> 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

Ngati mukuyimba foni last, ndiyeno funsaninso udindo wa akaunti yomwe tinapempha magalamu, ndiye tiyenera kuwona kuti chiwerengero chake chawonjezeka ndi chimodzi - izi zikutanthauza kuti idatumiza ndalama ku akaunti yathu.

Gawo lomaliza litsalira - tsitsani khodi ya chikwama chathu (ndalama zake zawonjezeredwa kale, koma popanda code yanzeru sitingathe kuiwongolera). Timachita sendfile new-wallet-query.boc - ndipo ndizomwezo, muli ndi chikwama chanu pa intaneti ya TON (ngakhale itakhala yoyesera yokha).

Kupanga zotuluka

Kusamutsa ndalama kuchokera ku akaunti yomwe idapangidwa, pali fayilo crypto/block/wallet.fif, yomwe iyeneranso kuyikidwa mufoda ndi kasitomala wosonkhanitsidwa.

Mofanana ndi masitepe am'mbuyomu, muyenera kusintha ndalama zomwe mukusamutsa, adilesi ya wolandila (dest_addr), ndi seqno ya chikwama chanu (ndichofanana ndi 1 mutayambitsa chikwama ndikuwonjezeka ndi 1 pakatha ntchito iliyonse yotuluka - mutha onani pofunsa momwe akaunti yanu ilili) . Kuyesa, mutha kugwiritsa ntchito, mwachitsanzo, chikwama changa - 0x4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2.

Poyambira (./crypto/fift wallet.fif) script itenga adilesi ya chikwama chanu (kuchokera komwe mumasamutsa) ndi kiyi yake yachinsinsi kuchokera pamafayilo new-wallet.addr ΠΈ new-wallet.pk, ndipo uthenga wolandiridwa udzalembedwera new-wallet-query.boc.

Monga kale, kuti mugwiritse ntchito mwachindunji, imbani sendfile new-wallet-query.boc mu kasitomala. Pambuyo pa izi, musaiwale kusintha mawonekedwe a blockchain (last) ndikuwona kuti ndalama ndi seqno za chikwama chathu zasintha (getaccount <account_id>).

Yesani kasitomala TON (Telegram Open Network) ndi chinenero chatsopano cha Fift kuti mupeze makontrakitala anzeru

Ndizo zonse, tsopano titha kupanga makontrakitala anzeru ku TON ndikutumiza zopempha kwa iwo. Monga mukuwonera, magwiridwe antchito apano ndi okwanira kale, mwachitsanzo, kupanga chikwama chochezeka chokhala ndi mawonekedwe owonetsera (komabe, zikuyembekezeka kuti ipezeka kale ngati gawo la mthenga).

Ogwiritsa ntchito olembetsedwa okha ndi omwe angatenge nawo gawo pa kafukufukuyu. Lowani muakauntichonde.

Kodi mukufuna kupitiliza zolembazo ndikuwunika kwa TON, TVM, Fift?

  • Inde, ndikuyembekezera kukwaniritsidwa kwa mndandanda wa zolembazo ndi kufotokozera mwachidule za TON

  • Inde, ndizosangalatsa kuwerenga zambiri za chilankhulo chachisanu

  • Inde, ndikufuna kuphunzira zambiri za TON Virtual Machine ndi chophatikizira chake

  • Ayi, palibe chilichonse mwa izi chomwe chili chosangalatsa

Ogwiritsa 39 adavota. Ogwiritsa ntchito 12 adakana.

Mukuganiza bwanji za mapulani a Telegraph kuyambitsa TON?

  • Ndili ndi chiyembekezo chachikulu cha polojekitiyi

  • Ndikungotsatira chitukuko chake ndi chidwi.

  • Ndikukayika ndikukayikira kupambana kwake.

  • Ndimakonda kuganiza kuti izi ndizolephera komanso zosafunikira kwa anthu ambiri

Ogwiritsa 47 adavota. Ogwiritsa ntchito 12 adakana.

Source: www.habr.com

Kuwonjezera ndemanga