E ho'āʻo i ka mea kūʻai aku ʻo TON (Telegram Open Network) a me ka ʻōlelo Fift hou no nā ʻaelike akamai

Ma mua o hoʻokahi makahiki i hala aku nei, ua ʻike ʻia e pili ana i nā hoʻolālā o ka Telegram messenger e hoʻokuʻu i kāna pūnaewele decentralized. ʻO ke kelepona kelepona pūnaewele. A laila ua loaʻa kahi palapala loea voluminous, i ʻōlelo ʻia e Nikolai Durov a wehewehe i ke ʻano o ka pūnaewele e hiki mai ana. No ka poʻe i hala, makemake wau e heluhelu ʻoe i kaʻu haʻi hou ʻana i kēia palapala (ʻāpana 1, ʻāpana 2; ʻo ke kolu o ka hapa, auwe, e ʻohi mau ana i ka lepo i nā kikoo).

Mai ia manawa, ʻaʻohe lono koʻikoʻi e pili ana i ke kūlana o ka hoʻomohala ʻana o TON a hiki i kekahi mau lā i hala aku nei (ma kekahi o nā ala kūhelu ʻole) ʻaʻole i ʻike ʻia ka loulou i ka ʻaoʻao https://test.ton.org/download.html, ma hea kahi:
ton-test-liteclient-full.tar.xz - nā kumu o kahi mea kūʻai māmā no ka pūnaewele hōʻike TON;
ton-lite-client-test1.config.json - faila hoʻonohonoho no ka hoʻopili ʻana i ka pūnaewele hoʻāʻo;
README - ʻike e pili ana i ke kūkulu ʻana a me ka hoʻokuʻu ʻana i ka mea kūʻai aku;
HOWTO — nā ʻōlelo aʻo i kēlā me kēia ʻanuʻu i ka hana ʻana i kahi ʻaelike akamai me ka hoʻohana ʻana i kahi mea kūʻai aku;
ton.pdf - palapala hou (i ka lā Malaki 2, 2019) me kahi ʻike loea o ka pūnaewele TON;
tvm.pdf - ka wehewehe ʻenehana o TVM (TON Virtual Machine, TON virtual machine);
tblkch.pdf - ka wehewehe ʻenehana o ka TON blockchain;
fifthbase.pdf - ka wehewehe ʻana o ka ʻōlelo ʻelima hou, i hoʻolālā ʻia no ka hana ʻana i nā ʻaelike akamai ma TON.

Ke haʻi hou aku nei au, ʻaʻohe hōʻoia kūhelu o ka ʻaoʻao a me kēia mau palapala āpau mai Telegram, akā ʻo ka nui o kēia mau mea e hiki ai iā lākou ke kūpono. E hoʻolana i ka mea kūʻai aku i paʻi ʻia ma ka pilikia pono'ī.

Ke kūkulu ʻana i kahi mea kūʻai hoʻāʻo

ʻO ka mea mua, e hoʻāʻo kākou e kūkulu a holo i kahi mea kūʻai hoʻāʻo - pōmaikaʻi, README wehewehe kikoʻī i kēia kaʻina hana maʻalahi. E hana wau i kēia me ka macOS 10.14.5 ma ke ʻano he laʻana; ʻAʻole hiki iaʻu ke hōʻoia i ka kūleʻa o ke kūkulu ʻana ma nā ʻōnaehana ʻē aʻe.

  1. Hoʻoiho a wehe waihona waihona. He mea nui ka hoʻoiho ʻana i ka mana hou loa no ka mea ʻaʻole i hōʻoia ʻia ka hoʻokō ʻana i hope i kēia manawa.

  2. E hōʻoia i ka hoʻokomo ʻia ʻana o nā mana hou o make, cmake (version 3.0.2 a i ʻole), OpenSSL (me nā faila C header), g++ a i ʻole clang ma ka ʻōnaehana. ʻAʻole pono wau e hoʻokomo i kekahi mea, ua hui koke nā mea āpau.

  3. E manaʻo mākou ua wehe ʻia nā kumu i loko o kahi waihona ~/lite-client. Ma kahi kaʻawale mai ia mea, e hana i kahi waihona hakahaka no ka papahana i hui ʻia (no ka laʻana, ~/liteclient-build), a mai ia mea (cd ~/liteclient-build) e kāhea i nā kauoha:

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

    E ho'āʻo i ka mea kūʻai aku ʻo TON (Telegram Open Network) a me ka ʻōlelo Fift hou no nā ʻaelike akamai

    No ke kūkulu ʻana i ka unuhi ʻōlelo ʻelima no nā ʻaelike akamai (e pili ana iā ia ma lalo), kāhea mākou

    cmake --build . --target fift

  4. Hoʻoiho i ka mea i kēia manawa waihona hoʻonohonoho e hoʻohui i ka pūnaewele hoʻāʻo a waiho i loko o ka waihona me ka mea kūʻai aku i ʻākoakoa.

  5. Ua hanaʻia, hiki iā ʻoe ke hoʻomaka i ka mea kūʻai aku:

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

Inā hana pololei nā mea a pau, pono ʻoe e ʻike i kahi mea penei:

E ho'āʻo i ka mea kūʻai aku ʻo TON (Telegram Open Network) a me ka ʻōlelo Fift hou no nā ʻaelike akamai

E like me kā mākou e ʻike ai, liʻiliʻi nā kauoha i loaʻa:
help - hōʻike i kēia papa inoa o nā kauoha;
quit - hele i waho;
time - hōʻike i ka manawa o kēia manawa ma ke kikowaena;
status - hōʻike i ka pilina a me ke kūlana waihona kūloko;
last - hōʻano hou i ke kūlana o ka blockchain (hoʻoiho i ka poloka hope). He mea nui e holo i kēia kauoha ma mua o nā noi e hōʻoia ʻoe e ʻike i ke kūlana o kēia manawa o ka pūnaewele.
sendfile <filename> - hoʻouka i kahi faila kūloko i ka pūnaewele TON. ʻO kēia ke ʻano o ka launa pū ʻana me ka pūnaewele - me ka laʻana, ka hana ʻana i nā ʻaelike akamai hou a me nā noi e hoʻoili kālā ma waena o nā moʻokāki;
getaccount <address> - hōʻike i kēia manawa (i ka manawa i hoʻokō ʻia ai ke kauoha) last) ke kūlana o ka mooolelo me ka helu wahi i kuhikuhi ʻia;
privkey <filename> - hoʻouka i ke kī pilikino mai kahi faila kūloko.

Inā, i ka hoʻomaka ʻana i ka mea kūʻai aku, hoʻololi ʻoe i kahi waihona iā ia me ka hoʻohana ʻana i ke koho -D, a laila e hoʻohui ʻo ia i ka poloka hope o ka masterchain i loko:

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

I kēia manawa hiki iā mākou ke neʻe i nā mea hoihoi - e aʻo i ka ʻōlelo ʻelima, e hoʻāʻo e hōʻuluʻulu i kahi ʻaelike akamai (no ka laʻana, hana i kahi ʻeke hoʻāʻo), hoʻouka iā ia i ka pūnaewele a hoʻāʻo e hoʻoili kālā ma waena o nā moʻokāki.

ʻŌlelo Lima

Mai ka palapala fifthbase.pdf hiki iā ʻoe ke ʻike ua hana ka hui Telegram i kahi ʻōlelo hoʻopaʻa hou e hana i nā ʻaelike akamai ʻElima (ʻike ʻia mai ka helu ka lima, e like me ka Forth, he ʻōlelo i loaʻa i ka Fifth ka nui o nā mea like).

Nui loa ka palapala, 87 mau ʻaoʻao, a ʻaʻole au e haʻi hou i kāna mau mea i loko o ke ʻano o kēia ʻatikala (ma ka liʻiliʻi no ka mea ʻaʻole wau i pau i ka heluhelu ʻana iaʻu iho :). E kālele au i nā manaʻo nui a hāʻawi i ʻelua mau code code ma kēia ʻōlelo.

Ma kahi pae kumu, maʻalahi ka syntax a Fift: aia kāna code nā hua'ōlelo, hoʻokaʻawale pinepine ʻia e nā hakahaka a i ʻole nā ​​laina laina (kahi kūikawā: ʻaʻole pono kekahi mau huaʻōlelo i kahi mea hoʻokaʻawale ma hope o lākou iho). Kekahi ka hua'ōlelo ʻo ia ke kaʻina o nā huaʻōlelo e pili ana i kekahi ʻike (ma ke ʻano, he aha ka mea e hana ai ka mea unuhi ʻōlelo ke hālāwai ʻo ia i kēia huaʻōlelo). Inā ʻaʻohe wehewehe o kahi huaʻōlelo, e hoʻāʻo ka unuhi ʻōlelo e hoʻokaʻawale iā ia ma ke ʻano he helu a kau ma ka waihona. Ma ke ala, ʻo nā helu ma aneʻi - hikiwawe - 257-bit integers, a ʻaʻohe hapa i nā mea a pau - ʻoi aku ka pololei, huli koke lākou i ʻelua mau helu, e hana ana i ka helu a me ka denominator o kahi hakina rational.

Kūlike nā huaʻōlelo me nā waiwai ma ka piko o ka waihona. He ʻano huaʻōlelo ʻokoʻa - prefix - ʻaʻole hoʻohana i ka waihona, akā ʻo nā huaʻōlelo ma hope mai ka faila kumu. No ka laʻana, ʻo kēia ke ʻano o ka hoʻokō ʻana i nā string literals - ke ʻano huaʻōlelo (") he huaʻōlelo prefix e ʻimi ana i ka ʻōlelo aʻe (pani) a hoʻokuʻu i ke kaula ma waena o lākou ma ka waihona. Hoʻokahi ʻano hana o nā laina laina hoʻokahi (//) a me multiline (/*) manaʻo.

ʻO kēia kahi e pau ai ke ʻano o loko o ka ʻōlelo. ʻO nā mea ʻē aʻe a pau (me nā hana hoʻomalu) ua wehewehe ʻia he mau huaʻōlelo (ma loko paha, e like me ka hana helu a me ka wehewehe ʻana o nā huaʻōlelo hou; a i ʻole i wehewehe ʻia ma ka "hale waihona puke" Fift.fif, aia ma ka waihona crypto/fift ma nā kumu).

He papahana laʻana maʻalahi ma Fift:

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

ʻO ka laina mua e wehewehe i kahi huaʻōlelo hou setxy (e nānā i ka prefix {, ka mea e hana i ka poloka ma mua o ka pani } a me ka prefix :, ka mea i wehewehe maoli i ka hua'ōlelo). setxy lawe i kahi helu mai luna o ka waihona, wehewehe (a i ʻole hoʻololi hou) iā ia ma ke ʻano he honua mau x, a me ka huinahalike o keia huina ma ke ano mau y (Ma muli o ka hiki ke hoʻololi hou ʻia nā waiwai o nā mea mau, makemake wau e kapa iā lākou he mau ʻokoʻa, akā hahai wau i ka ʻaha inoa inoa ma ka ʻōlelo).

Hoʻokomo nā laina ʻelua i kahi helu ma ka waihona a kāhea setxy, a laila hōʻike ʻia nā waiwai o nā mea mau x, y (Hoʻohana ʻia ka huaʻōlelo no ka hoʻopuka .), ua kau ʻia nā ʻelua ma luna o ka waihona, hōʻuluʻulu ʻia, a paʻi pū ʻia ka hopena. ʻO ka hopena e ʻike mākou:

3 9 12 ok
7 49 56 ok

(Paʻi ʻia ka laina "ok" e ka mea unuhi ʻōlelo ke hoʻopau ʻo ia i ka hana ʻana i ka laina o kēia manawa ma ke ʻano hoʻokomo pili)

ʻAe, he laʻana code piha:

"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

ʻO kēia faila makaʻu no ka hana ʻana i kahi ʻaelike akamai - e waiho ʻia i kahi faila new-wallet-query.boc mahope o ka hooko ana. E ʻoluʻolu e hoʻohana ʻia kahi ʻōlelo hui ʻē aʻe ma ʻaneʻi no TON Virtual Machine (ʻaʻole wau e noʻonoʻo i ka kikoʻī), e kau ʻia nā ʻōlelo aʻoaʻo ma ka blockchain.

No laila, kākau ʻia ka mea hōʻuluʻulu no TVM ma Fift - aia nā kumu o kēia hui i ka faila crypto/fift/Asm.fif a ua hoʻohui ʻia ma ka hoʻomaka ʻana o ka ʻāpana code ma luna.

He aha kaʻu e ʻōlelo ai, makemake wale ʻo Nikolai Durov i ka hana ʻana i nā ʻōlelo papahana hou :)

Ke hana nei i kahi ʻaelike akamai a me ka launa pū ʻana me TON

No laila, e manaʻo mākou ua ʻākoakoa mākou i ka mea kūʻai aku TON a me ka unuhi ʻōlelo ʻelima e like me ka mea i hōʻike ʻia ma luna nei a kamaʻāina mākou i ka ʻōlelo. Pehea e hana ai i kahi ʻaelike akamai i kēia manawa? Ua wehewehe ʻia kēia ma ka faila HOWTO, pili i na kumu.

Nā moʻokāki ma TON

E like me kaʻu i wehewehe ai ma Nānā TON, aia kēia pūnaewele i ʻoi aku ma mua o hoʻokahi blockchain - aia hoʻokahi mea maʻamau, ka mea i kapa ʻia. "master chain", a me ka helu hoʻopaʻapaʻa o nā "haohao hana" hou, i ʻike ʻia e kahi helu 32-bit. Loaʻa i ka masterchain kahi mea hōʻike o -1, a ma waho aʻe o ia mea, hiki ke hoʻohana ʻia kahi "kumu" workchain me kahi ʻike o 0. Hiki i kēlā me kēia workchain ke loaʻa i kāna hoʻonohonoho ponoʻī. I loko, ua māhele ʻia kēlā me kēia workchain i nā shardchains, akā he kikoʻī hoʻokō kēia ʻaʻole pono e mālama ʻia.

I loko o hoʻokahi papa hana, mālama ʻia nā moʻokāki he nui i loaʻa kā lākou mau ʻike helu_id. No ke kaulahao haku a me ke kaulahao hana ole, he 256 bits ka loa. No laila, kākau ʻia ka ʻike moʻokāki, no ka laʻana, e like me kēia:

-1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

ʻO kēia ke ʻano "raw": ʻo ka mua o ka workchain ID, a laila kahi kolonā, a me ka ID moʻokāki ma ka helu hexadecimal.

Eia kekahi, aia kahi ʻano pōkole - ua hoʻopili ʻia ka helu workchain a me ka helu helu helu ma ke ʻano binary, ua hoʻohui ʻia kahi checksum iā lākou, a ua hoʻopili ʻia kēia mau mea āpau ma Base64:

Ef+BVndbeTJeXWLnQtm5bDC2UVpc0vH2TF2ksZPAPwcODSkb

Ke ʻike nei i kēia ʻano hoʻopaʻa moʻolelo, hiki iā mākou ke noi i ke kūlana o kēia manawa o kahi moʻokāki ma o ka mea kūʻai aku hoʻāʻo e hoʻohana ana i ke kauoha

getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

E loaʻa iā mākou kekahi mea e like me kēia:

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

ʻIke mākou i ke ʻano i mālama ʻia i ka DHT o ka workchain i kuhikuhi ʻia. Eia kekahi laʻana, ma ke kula storage.balance ke koena mooolelo o keia manawa, in storage.state.code - ke code aelike akamai, a ma storage.state.data - kona ʻikepili o kēia manawa. E ʻoluʻolu e hoʻomaopopo i ka waiho ʻana o ka ʻikepili TON - Cell, cell - like me ka lāʻau, hiki i kēlā me kēia cell ke loaʻa i kāna ʻikepili ponoʻī a me nā pūnae keiki. Hōʻike ʻia kēia ma ke ʻano he indentation ma nā laina hope.

Ke kūkulu ʻana i kahi ʻaelike akamai

I kēia manawa e hana mākou i kahi ʻano like ʻole (kapa ʻia ʻo BOC - ʻeke kelepona) me ka hoʻohana ʻana i ka ʻōlelo ʻelima. ʻO ka mea pōmaikaʻi, ʻaʻole pono ʻoe e kākau i kahi ʻaelike akamai iā ʻoe iho - ma ka waihona crypto/block aia kahi waihona mai ka waihona kumu new-wallet.fif, e kōkua iā mākou e hana i kahi ʻeke kālā hou. E kope kāua iā ia i ka waihona me ka mea kūʻai aku i hui ʻia (~/liteclient-build, inā ʻoe i hahai i nā kuhikuhi ma luna). Ua haʻi au i kāna mau mea ma luna ma ke ʻano he laʻana o ke code ma Fift.

E hoʻokō i kēia faila penei:

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

he mea <source-directory> Pono e hoʻololi ʻia me ke ala i nā kumu i wehe ʻole ʻia (ʻo ka hōʻailona "~", ʻaʻole hiki ke hoʻohana ʻia ma aneʻi, pono ke ala piha). Ma kahi o ka hoʻohana ʻana i kahi kī -I hiki iā ʻoe ke wehewehe i kahi ʻano hoʻololi kaiapuni FIFTPATH a hoʻokomo i kēia ala i loko.

Mai ko mākou hoʻokuʻu ʻana iā Fift me ka inoa faila new-wallet.fif, e hoʻokō a puka i waho. Inā haʻalele ʻoe i ka inoa faila, hiki iā ʻoe ke pāʻani me ka unuhi ʻōlelo ma ke ʻano pāʻani.

Ma hope o ka hoʻokō ʻana, pono e hōʻike ʻia kahi mea e like me kēia i ka 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)

ʻO kēia ke ʻano o ka ʻeke me ka ID -1:4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2 (a i ʻole, he aha ka mea like, 0f9PzVILj8yglrVn1zS-NSjtxr7QBfaTCp7JrBqnFPIR8nhZ) ua hana maikaʻi ʻia. Aia ke code pili i ka faila new-wallet-query.boc, aia kona wahi noho ma new-wallet.addr, a aia ke kī pilikino new-wallet.pk (e akahele - e hoʻopau hou i ka palapala i kēia mau faila).

ʻOiaʻiʻo, ʻaʻole ʻike ka pūnaewele TON e pili ana i kēia ʻeke; mālama ʻia ia ma ke ʻano o kēia mau faila. I kēia manawa pono e hoʻouka i ka pūnaewele. Eia naʻe, ʻo ka pilikia, ʻo ka hana ʻana i kahi ʻaelike akamai pono ʻoe e uku i ke kōmike, a ʻaʻole mau ke koena o kāu moʻokāki.

Ma ke ʻano hana, e hoʻopau ʻia kēia pilikia ma ke kūʻai ʻana i nā grams ma ka hoʻololi (a i ʻole ka hoʻololi ʻana mai kahi ʻeke kālā ʻē aʻe). ʻAe, i ke ʻano hoʻāʻo o kēia manawa, ua hana ʻia kahi ʻaelike akamai kūikawā, kahi āu e noi ai a hiki i ka 20 grams e like me ia.

Hoʻopuka i kahi noi i ka ʻaelike akamai a kekahi

Ke noi nei mākou i kahi ʻaelike akamai e puʻunaue ana i nā grams ma ka hema a me ka ʻākau e like me kēia. Ma ka waihona like crypto/block huli i ka faila 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

E mālama pū mākou iā ia i loko o ka waihona me ka mea kūʻai aku i hui ʻia, akā e hoʻoponopono mākou i ka laina ʻelima - ma mua o ka laina "constant dest_addr". E hoʻololi mākou me ka helu wahi o ka ʻeke kālā āu i hana ai ma mua (piha, ʻaʻole i pōkole). ʻAʻohe pono e kākau "-1:" ma ka hoʻomaka, ma kahi o "0x" i ka hoʻomaka.

Hiki iā ʻoe ke hoʻololi i ka laina 6.666 Gram*/ constant amount - ʻo ia ka nui o ka grams āu e noi nei (ʻaʻole ʻoi aku ma mua o 20). ʻOiai ʻoe e kuhikuhi i kahi helu holoʻokoʻa, waiho i ka helu decimal.

ʻO ka hope, pono ʻoe e hoʻoponopono i ka laina 0x00000011 constant seqno. ʻO ka helu mua ma ʻaneʻi ʻo ka helu kaʻina o kēia manawa, i mālama ʻia i loko o ka moʻohelu e hoʻopuka ana i nā grams. Ma hea e loaʻa ai iaʻu? E like me ka mea i ʻōlelo ʻia ma luna, e hoʻomaka i ka mea kūʻai aku a holo:

last
getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Ma ka hope loa, e loaʻa i ka ʻikepili aelike akamai

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

ʻO ka helu 0000000D (ʻoi aku ka nui o kāu) ʻo ia ka helu kaʻina e pono ke hoʻololi ʻia i loko. testgiver.fif.

ʻO ia, mālama i ka faila a holo (./crypto/fift testgiver.fif). ʻO ka hoʻopuka e lilo i faila wallet-query.boc. ʻO kēia ka mea i hana ʻia ka leka i ka ʻaelike akamai a kekahi - he noi "e hoʻololi i ka nui o nā grams i kēlā me kēia moʻokāki."

Ke hoʻohana nei i ka mea kūʻai aku, hoʻouka mākou iā ia i ka pūnaewele:

> 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

Inā ʻoe e kelepona i kēia manawa last, a laila noi hou i ke kūlana o ka mooolelo a mākou i noi ai no ka grams, a laila e ʻike mākou ua hoʻonui ʻia kāna helu helu i hoʻokahi - ʻo ia hoʻi ua hoʻouna ʻo ia i ke kālā i kā mākou moʻokāki.

Ke waiho nei ka hana hope - e hoʻoiho i ke code o kā mākou ʻeke (ua hoʻopiha ʻia kona koena, akā me ka ʻole o ka code contract smart ʻaʻole hiki iā mākou ke hoʻokele). Hoʻokō mākou sendfile new-wallet-query.boc - a ʻo ia, loaʻa iā ʻoe kāu pēke ponoʻī ma ka pūnaewele TON (ʻoiai inā he hoʻāʻo wale nō ia i kēia manawa).

Ke hana ʻana i nā kālepa puka

No ka hoʻoili kālā mai ke koena o ka moʻokāki i hana ʻia, aia kahi faila crypto/block/wallet.fif, pono e waiho ʻia i loko o ka waihona me ka mea kūʻai aku i hui ʻia.

E like me nā ʻanuʻu mua, pono ʻoe e hoʻoponopono i ka nui āu e hoʻoili ai, ka helu o ka mea loaʻa (dest_addr), a me ka seqno o kāu ʻeke (ua like ia me 1 ma hope o ka hoʻomaka ʻana i ka ʻeke a hoʻonui ʻia e 1 ma hope o kēlā me kēia kālepa puka - hiki iā ʻoe ke e ʻike iā ia ma ke noi ʻana i ke kūlana o kāu moʻokāki) . No nā hoʻokolohua, hiki iā ʻoe ke hoʻohana, no ka laʻana, kaʻu ʻeke - 0x4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2.

I ka hoʻomaka ʻana (./crypto/fift wallet.fif) e lawe ka palapala i ka helu wahi o kāu pēke (mai kahi āu e hoʻololi ai) a me kāna kī pilikino mai nā faila new-wallet.addr и new-wallet.pk, a e kākau ʻia ka leka i loaʻa iā new-wallet-query.boc.

E like me ka mea ma mua, e hana pololei i ke kālepa, kelepona sendfile new-wallet-query.boc i ka mea kūʻai aku. Ma hope o kēia, mai poina e hōʻano hou i ke kūlana o ka blockchain (last) a nānā ua loli ke koena a me ka seqno o kā mākou ʻeke (getaccount <account_id>).

E ho'āʻo i ka mea kūʻai aku ʻo TON (Telegram Open Network) a me ka ʻōlelo Fift hou no nā ʻaelike akamai

ʻO ia wale nō, hiki iā mākou ke hana i nā ʻaelike akamai ma TON a hoʻouna i nā noi iā lākou. E like me kāu e ʻike ai, ua lawa ka hana o kēia manawa, no ka laʻana, e hana i kahi ʻeke ʻeke aloha me kahi kiʻi kiʻi (eia naʻe, ua manaʻo ʻia e lilo ia i ʻāpana o ka ʻelele).

Hiki i nā mea hoʻohana i hoʻopaʻa inoa ʻia ke komo i ka noiʻi. Eʻe, e 'oluʻolu.

Makemake ʻoe e hoʻomau i nā ʻatikala me ka nānā ʻana o TON, TVM, Fift?

  • ʻAe, ke kali nei au i ka pau ʻana o ke ʻano o nā ʻatikala me ka ʻike nui o TON

  • ʻAe, hoihoi ka heluhelu hou ʻana e pili ana i ka ʻōlelo ʻelima

  • ʻAe, makemake wau e aʻo hou e pili ana i ka TON Virtual Machine a me ka mea hoʻohui no ia

  • ʻAʻole, ʻaʻohe mea hoihoi

39 mea hoʻohana i koho. Ua hōʻole nā ​​mea hoʻohana 12.

He aha kou manaʻo e pili ana i nā hoʻolālā o Telegram e hoʻolauna iā TON?

  • Nui koʻu manaʻolana no kēia papahana

  • Ke hahai nei au i kona ulu ʻana me ka hoihoi.

  • He kanalua wau a kanalua i kona holomua.

  • Makemake au e noʻonoʻo i kēia hana he hemahema a pono ʻole no ka lehulehu

47 mea hoʻohana i koho. Ua hōʻole nā ​​mea hoʻohana 12.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka