Pulogalamu ya ProHoster > Blog > Ulamuliro > Yesani kasitomala TON (Telegram Open Network) ndi chinenero chatsopano cha Fift kuti mupeze makontrakitala anzeru
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.
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 mosalekezax, 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:
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.
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:
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
[ 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.
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.