Rohkem kui aasta tagasi sai teada, et suhtlusvĂ”rk Telegram kavatseb kĂ€ivitada oma detsentraliseeritud vĂ”rgu Telegram Open Network. Toona avaldati mahukas tehniline dokument, mille eeldatavasti kirjutas Nikolai Durov ning mis kirjeldas tulevase vĂ”rgu struktuuri. Neile, kes ei ole kursis â soovitan tutvuda minu kokkuvĂ”ttega sellest dokumendist (, ; kolmas osa, kahjuks, ikka veel kuhjab mustandites).
Sellest ajast ei ole olnud mingeid olulisi uudiseid TONi arenduse seisundi kohta, kuni paar pĂ€eva tagasi (ĂŒhes ) ilmus lingi lehele , kus on avaldatud:
⊠â kerge kliendi lĂ€htekoodid TONi testvĂ”rgule;
⊠â konfigureerimisfail testvĂ”rku ĂŒhendamiseks;
⊠â teave kliendi kogumise ja kĂ€itamise kohta;
⊠â samm-sammuline juhend nutilepingu loomiseks kliendi abil;
⊠â uuendatud dokument (2. mĂ€rts 2019) tehnilise ĂŒlevaatega TONi vĂ”rgust;
⊠â tehniline kirjeldus TVM-ist (TON Virtual Machine, TONi virtuaalne masin);
⊠â tehniline kirjeldus TONi plokiahelast;
⊠â uue keele Fift kirjeldus, mis on mĂ”eldud nutilepingute loomiseks TONis.
Kordan, Telegrami poolt pole ametlikke kinnitusi selle lehe ega nende dokumentide kohta, kuid nende materjalide maht teeb need piisavalt usutavaks. Avaldatud kliendi kÀivitamine toimub oma riski ja vastutusega.
Katse klienti kogumine
Alustame katse kliendi kokkupanekuga ja kĂ€itamisega â Ă”nneks on see lihtne protsess detailselt kirjeldatud. Teen seda macOS 10.14.5 nĂ€itel ning ei garanteeri, et see Ă”nnestub teistel sĂŒsteemidel.
Laadime alla ja pakkime lahti . On oluline alla laadida viimane versioon, kuna tagurpidi ĂŒhilduvust ei tagata.
Veendume, et sĂŒsteemis on installitud viimased versioonid make, cmake (versioonid 3.0.2 vĂ”i kĂ”rgem), OpenSSL (sealhulgas C pealkirjad), g++ vĂ”i clang. Mul ei olnud vaja midagi lisada, kĂ”ik toimis kohe.
Oletame, et allikafailid on lahti pakitud kausta
~/lite-client. Eraldi loome tĂŒhja kausta kogutud projekti jaoks (nĂ€iteks,~/liteclient-build), ja sellest kaustast (cd ~/liteclient-build) kutsume vĂ€lja kĂ€sud:cmake ~/lite-client cmake --build . --target test-lite-client
Fifti keele tĂ”lgendi koostamiseks nutilepingute jaoks (millest allpool), kutsume samuti esilecmake --build . --target fiftLaadime alla kehtiva testvĂ”rguga ĂŒhendamiseks ja paneme selle kogutud kliendi kaustasse.
Valmis, nĂŒĂŒd saab klienti kĂ€ivitada:
./test-lite-client -C ton-lite-client-test1.config.json
Kui kÔik on Ôigesti tehtud, peaksite nÀgema midagi sellist:

Saadaval kÀsud, nagu nÀeme, on vÀhesed:
⊠help â kuvab selle kĂ€su loendi;
⊠quit â vĂ€ljumiseks;
⊠aeg â nĂ€itab serveri praegust aega;
⊠status â nĂ€itab ĂŒhenduse ja kohalikku andmebaasi staatust;
⊠last â uuendab plokiahela seisundit (laadib viimase ploki). Seda kĂ€sku on oluline tĂ€ita enne mistahes pĂ€ringute tegemist, et olla kindel, et nĂ€ete tĂ€pset vĂ”rgu seisundit.
⊠sendfile <filename> â laadib kohaliku faili TON-vĂ”rku. Nii toimub suhtlemine vĂ”rgu vahel â sealhulgas nĂ€iteks uute nutilepingute loomine ja taotlused rahade ĂŒlekandmiseks kontode vahel;
⊠getaccount <address> â nĂ€itab hetke (kĂ€su tĂ€itmise hetkel last) konto seisundit antud aadressiga;
⊠privkey <filename> â laadib privaatvĂ”tme kohalikust failist.
Kui kliendi kÀivitamisel edastada sellele kaust, kasutades valikut -D, siis see lisab sinna viimase blokki meistrikettast:
./test-lite-client -C ton-lite-client-test1.config.json -D ~/ton-db-dirNĂŒĂŒd saame liikuda huvitavamate asjade juurde â uurida Fift keelt, proovida kompileerida nutilepingut (nĂ€iteks luua testrahakott), laadida see vĂ”rku ja proovida teha ĂŒlekandeid kontode vahel.
Fift keel
Dokumendist selgub, et nutilepingute loomiseks on Telegrami meeskond loonud uue virna keele Fift (ilmselt arvunime fifth, sarnaselt Forth'iga â keel, millel on Fiftiga palju ĂŒhist).
Dokument on ĂŒsna mahukas, 87 lehekĂŒlge, ja ma ei hakka selle sisu detailselt ĂŒle rÀÀkima selle artikli raames (vĂ€hemalt, kuna ma ei ole seda isegi lĂ”puni lugenud :). Peatun peamistel punktidel ja toon paar nĂ€idet selle keele koodist.
Alustasast, Fifti sĂŒntaks on piisavalt lihtne: selle kood koosneb sĂ”nadest, mis on tavaliselt eraldatud tĂŒhi ruumide vĂ”i reavahetustega (spetsiifiline juhtum: mĂ”ned sĂ”nad ei nĂ”ua pĂ€rast endale eraldajat). Iga sĂ”na on suuruselt sĂ”ltuv sĂŒmbolite jada, mis vastab mĂ”nele mÀÀratlemisele (raskus öluliselt, mida tĂ”lgendaja peab tegema, kui see sĂ”na esmakordselt kohtab). Kui sĂ”na mÀÀratlust ei ole, pĂŒĂŒab tĂ”lgendaja selle numbrina tĂ”lgendada ja pannakse kuhja. Muide, numbrid on siin â ĂŒllatavalt â 257-bitised tĂ€isarvud, ja murdarve pole ĂŒldse â tegelikult muudetakse need kohe kaheks tĂ€isarvuks, mis moodustavad ratsionaalse murda nominaatori ja nimetaja.
SĂ”nad suhtlevad reeglina vÀÀrtustega, mis on kuhja tipus. Erinev sĂ”naliik â prefiks â ei kasuta kuhja, vaid jĂ€rgmisi sĂŒmboleid lĂ€htefailist. NĂ€iteks rakendatakse nii stringide liitereid â sĂŒmbol âjutumĂ€rkâ (") on prefiksisĂ”na, mis otsib jĂ€rgmist (sulgev) jutumĂ€rki ja paneb nende vahel oleva stringi kuhja. Ăheainsa (//) ja mitme rea (/*) kommentaarid kĂ€ituvad samuti.
Sellega peaaegu kĂ”ik keele sisemine struktuur lĂ”ppeb. KĂ”ik muu (sealhulgas juhtimisstruktuurid) on mÀÀratletud sĂ”nadena (kas sisemised, nagu aritmeetilised toimingud ja uute sĂ”nade mÀÀratlemine; vĂ”i âstandardses teegisâ defineeritud Fift.fif, mis asub kaustas crypto/fift allikates).
Lihtne nÀide Fift-programmist:
{ dup =: x dup * =: y } : setxy
3 setxy x . y . x y + .
7 setxy x . y . x y + .Esimeses real mÀÀratakse uus sĂ”na setxy (pange tĂ€hele, et eesliide {, mis loob ploki enne sulgemist } ja eesliide :, mis sĂ”na defineerib). setxy vĂ”tab numbri huhnast, mÀÀrab (vĂ”i ĂŒmber mÀÀrab) selle globaalseks konstandiks x, ja selle numbri ruut â konstandiks y (arvestades, et konstandi vÀÀrtusi saab ĂŒmber mÀÀrata, nimetaksin ma neid pigem muutujateks, aga ma jĂ€rgnen nimele keeles).
Kahes jÀrgmises real siseneb number kuhja, kutsutakse setxy, seejÀrel vÀljastatakse konstandi vÀÀrtused x, y (vÀljundiks kasutatakse sÔna .), mÔlemad konstandid pannakse kuhja, liidetakse ja tulemusi vÀljastatakse. Tulemuseks nÀeme:
3 9 12 ok
7 49 56 ok(Rea «ok» vĂ€ljastab tĂ”lgendaja, kui see lĂ”petab kĂ€imasoleva rea töötlemise interaktiivses sisestamisreĆŸiimis)
Ja siin on tÀisnÀide koodist:
"Asm.fif" sisaldab
-1 konstant wc // loo rahakott tööaine -1 (põhivõrk)
// Loo uus lihtne rahakott
<{ SETCP0 DUP IFNOTRET INC 32 THROWIF // naase, kui recv_internal, ebaõnnestu, kui recv_external
512 INT LDSLICEX DUP 32 PLDU // allkirjastage cs cnt
c4 PUSHCTR CTOS 32 LDU 256 LDU ENDS // allkirjastage cs cnt cnt' pubk
s1 s2 XCPU // allkirjastage cs cnt pubk cnt' cnt
EQUAL 33 THROWIFNOT // ( seqno lahknevus? )
s2 PUSH HASHSU // allkirjastage cs cnt pubk hash
s0 s4 s4 XC2PU // pubk cs cnt hash allkiri pubk
CHKSIGNU // pubk cs cnt ?
34 THROWIFNOT // allkirja lahknevus
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
// kood
<b 0 32 u, newkeypair swap dup constant wallet_pk "new-wallet.pk" b>fail
B,
b> // andmed
// ei mingeid teeke
<b b{00110} s, rot ref, swap b> // create StateInit
dup ."StateInit: " <s csr. cr
dup hash dup constant wallet_addr
."new wallet address = " wc . .": " x. cr
wc over 7 smca>$ tüüp cr
256 u>B "uus-rahakott.addr" B>fail
<b 0 32 u, b>
dup ."allkirjastamise sõnum: " <s csr. cr
dup hash wallet_pk ed25519_sign_uint rot
<b b{1000100} s, wc 8 i, wallet_addr 256 u, b{000010} swap <s b{0} b, b>
dup ."Väline sõnum initsialiseerimiseks on " <s csr. cr
2 boc+>B dup Bx. cr
"uus-rahakoti-päring.boc" tuck B>fail
."(Salvestatud faili " tüüp .")" crSee hirmutav vĂ€limusega fail on mĂ”eldud nutikonto loomiseks â see paigutatakse faili new-wallet-query.boc pĂ€rast tĂ€itmist. Pange tĂ€hele, et siin kasutatakse veel ĂŒhte assemblerikeelt TON Virtuaalmasinale (millest ma ei hakka pikemalt rÀÀkima), mille kĂ€sklused paigutatakse plokiahelasse.
Seega on TVM-i assembler kirjutatud Fiftis â selle assembleri lĂ€htekood asub failis crypto/fift/Asm.fif ja need on seotud eelmise koodi tĂŒki alguses.
Mis ma can öelda, tundub, et Nikolai Durov lihtsalt armastab luua uusi programmeerimiskeeli đ
Nutika lepingu loomine ja suhtlemine TONiga
Nii et oletame, et oleme kogunud TON kliendi ja Fift interpreteraatori, nagu eespool kirjeldatud, ja tutvunud keele kanssa. Kuidas nĂŒĂŒd luua nutikat lepingut? Selle kohta rÀÀgitakse failis , mis on lisatud lĂ€htekoodile.
Kontod TONis
Kuidas ma kirjeldasin , see vĂ”rk sisaldab rohkem kui ĂŒhte plokiahelat â on olemas ĂŒks ĂŒhine, nn âmeistriahelâ, samuti meelevaldne arv tĂ€iendavaid âtööahelaidâ, mille sildistamiseks kasutatakse 32-bitist numbrit. Meistriahela identifikaator on -1, samuti vĂ”ib kasutada ka âbaasâ tööahelat identifikaatoriga 0. Igal tööahelal vĂ”ib olla oma konfiguratsioon. Sisemiselt jaguneb iga tööahel shard-ahelateks, kuid see on juba teostuse aspekt, mida pole tingimata vaja meeles pidada.
Ăhes tööahelas hoitakse mitmeid kontosid, millel on oma identifikaatorid account_id. Meistriahela ja nulli tööahela puhul on need 256 bitti pikad. Seega salvestatakse konto identifikaator nĂ€iteks nii:
-1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0dSee on âtooresâ formaat: kĂ”igepealt on tööahela identifikaator, seejĂ€rel koolon ja konto identifikaator kuueteistkĂŒmnendas esituses.
Lisaks on lĂŒhenenud formaat â tööahela number ja konto aadress kodeeritakse binaarsetena, neile lisatakse kontrollsumm ja see kĂ”ik kodeeritakse Base64:
Ef+BVndbeTJeXWLnQtm5bDC2UVpc0vH2TF2ksZPAPwcODSkbMÔistes seda salvestusvormingut, saame taotleda mingisuguse konto praegust seisundit testklientide kaudu kÀsuga
getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0dSaame umbes sellise vastuse:
[ 3][t 2][1558746708.815218925][test-lite-client.cpp:631][!testnode] taotlem konto olek -1:8156775B79325E5D62E742D9B96C30B6515A5CD2F1F64C5DA4B193C03F070E0D
[ 3][t 2][1558746708.858564138][test-lite-client.cpp:652][!testnode] saadi kontole oleku -1:8156775B79325E5D62E742D9B96C30B6515A5CD2F1F64C5DA4B193C03F070E0D seoses plokkidega (-1,8000000000000000,72355):F566005749C1B97F18EDE013EBA7A054B9014961BC1AD91F475B9082919A2296:1BD5DE54333164025EE39D389ECE2E93DA2871DA616D488253953E52B50DC03F ja (-1,8000000000000000,72355):F566005749C1B97F18EDE013EBA7A054B9014961BC1AD91F475B9082919A2296:1BD5DE54333164025EE39D389ECE2E93DA2871DA616D488253953E52B50DC03F
konto olek on (konto
addr:(addr_std
anycast:mida töökoormuse_id:-1 aadress:x8156775B79325E5D62E742D9B96C30B6515A5CD2F1F64C5DA4B193C03F070E0D)
storage_stat:(storage_info
used:(storage_used
cells:(var_uint len:1 vÀÀrtus:3)
bits:(var_uint len:2 vÀÀrtus:539)
public_cells:(var_uint len:0 vÀÀrtus:0)) viimane makstud:0
due_payment:mida)
storage:(account_storage last_trans_lt:74208000003
saldo:(currencies
grams:(nanograms
amount:(var_uint len:7 vÀÀrtus:999928362430000))
other:(extra_currencies
dict:hme_empty))
state:(account_active
(
split_depth:mida
special:mida
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}NĂ€eme struktuuri, mis on salvestatud antud töökindla DHT-sse. NĂ€iteks, vĂ€ljas storage.balance on konto praegune saldo, vĂ€ljadel storage.state.code on nutilepingu kood ja storage.state.data on selle praegused andmed. Pange tĂ€hele, et TON-i andmehoidla â Cell, rakud â on puustruktuur, kus igal rakul vĂ”ivad olla oma andmed ja tĂŒtarrakud. Seda nĂ€idatakse viimane ridade sisesektsioonide kaudu.
Nutilepingu koostamine
NĂŒĂŒd loome ise sellise struktuuri (seda nimetatakse BOC â bag of cells) Fift-keele abil. Ănneks ei pea nutilepingut ise kirjutama â kaustas crypto/block allika arhiivist on fail new-wallet.fif, mis aitab meil luua uue rahakoti. Kopeerime selle kokku pandud kliendi kausta (~/liteclient-build, kui olete jĂ€rgnenud eelnevale juhisele). Selle sisu tĂ”in ma varem vĂ€lja Fift-koodi nĂ€itena.
KÀivitame selle faili jÀrgmiselt:
./crypto/fift -I"/crypto/fift" new-wallet.fifSiit <source-directory> tuleb asendada lahtipakitud lĂ€htefailide teega (kahjuks ei saa siin kasutada sĂŒmbolit â~â, vajalik on tĂ€ielik tee). Selle asemel, et kasutada vĂ”tme -I saab mÀÀrata keskkonnamuutuja FIFTPATH ja panna see tee sinna.
Kuna me kĂ€ivitasime Fift failinimega new-wallet.fif, tĂ€idab see seda ja lĂ”petab. Kui failinime ei esita, saab interaktiivses reĆŸiimis tĂ”lgendajaga mĂ€ngida.
Konsolisse peaks pÀrast tÀitmist tulema midagi sellist:
StateInit: x{34_}
x{FF0020DDA4F260810200D71820D70B1FED44D0D31FD3FFD15112BAF2A122F901541044F910F2A2F80001D31F3120D74A96D307D402FB00DED1A4C8CB1FCBFFC9ED54}
x{0000000055375F730EDC2292E8CB15C42E8036EE9C25AA958EE002D2DE48A205E3A3426B}
uus rahakoti aadress = -1 : 4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2
0f9PzVILj8yglrVn1zS-NSjtxr7QBfaTCp7JrBqnFPIR8nhZ
allkirjastamise sÔnum: x{00000000}
VÀlisÔnum algatamiseks on x{89FEE120E20C7E953E31546F64C23CD654002C1AA919ADD24DB12DDF85C6F3B58AE41198A28AD8DAF3B9588E7A629252BA3DB88F030D00BC1016110B2073359EAC3C13823C53245B65D056F2C070B940CDA09789585935C7ABA4D2AD4BED139281CFA1200000001_}
x{FF0020DDA4F260810200D71820D70B1FED44D0D31FD3FFD15112BAF2A122F901541044F910F2A2F80001D31F3120D74A96D307D402FB00DED1A4C8CB1FCBFFC9ED54}
x{0000000055375F730EDC2292E8CB15C42E8036EE9C25AA958EE002D2DE48A205E3A3426B}
B5EE9C724104030100000000D60002CF89FEE120E20C7E953E31546F64C23CD654002C1AA919ADD24DB12DDF85C6F3B58AE41198A28AD8DAF3B9588E7A629252BA3DB88F030D00BC1016110B2073359EAC3C13823C53245B65D056F2C070B940CDA09789585935C7ABA4D2AD4BED139281CFA1200000001001020084FF0020DDA4F260810200D71820D70B1FED44D0D31FD3FFD15112BAF2A122F901541044F910F2A2F80001D31F3120D74A96D307D402FB00DED1A4C8CB1FCBFFC9ED5400480000000055375F730EDC2292E8CB15C42E8036EE9C25AA958EE002D2DE48A205E3A3426B6290698B
(Salvestatud faili new-wallet-query.boc)See tĂ€hendab, et rahakott ID-ga -1:4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2 (vĂ”i, mis on sama, 0f9PzVILj8yglrVn1zS-NSjtxr7QBfaTCp7JrBqnFPIR8nhZ) on edukalt loodud. Vastav kood leiab end failist new-wallet-query.boc, selle aadress on new-wallet.addr, ja privaatne vĂ”ti on failis new-wallet.pk (ole ettevaatlik â skripti uuesti kĂ€ivitamine kirjutab need failid ĂŒle).
Muidugi ei tea TON vĂ”rgustik sellest rahakotist veel midagi, see on salvestatud ainult nende failide kujul. NĂŒĂŒd tuleb see ĂŒles laadida vĂ”rku. Probleem on aga selles, et nutilepingu loomise eest tuleb maksta tasu, ja teie konto saldo on hetkel null.
TöölĂ€hedaselt lahendatakse see probleem grammi ostmisega börsil (vĂ”i teisest rahakotist ĂŒlekandmisega). Praegu on aga testreĆŸiimis loodud spetsiaalne nutileping, milles saab tasuta kĂŒsida kuni 20 grammi.
Pöördumise koostamine teise nutilepingu poole
Teeme pöördumise nutilepingu poole, mis jagab gramme vasakule ja paremale, nii. Samas kaustas crypto/block otsime faili 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+ "gift" $, b>
<b seqno 32 u, 1 8 swap ref, b>
dupli ."katte sõnum: " <s csr. cr
<b b{1000100} s, wc 8 i, wallet_addr 256 u, 0 gram, b{00} s,
swap <s b>
dupli ."tulemuslik väline sõnum: " <s csr. cr
2 boc+>B dupli Bx. cr
"rahakoti-päring.boc" B>failSalvestame selle samuti kokku pandud kliendi kausta, kuid muudame viiendat rida â enne rida «constant dest_addr«. Asendame selle aadressiga, mille lĂ”ite varem (tĂ€ielik, mitte lĂŒhendatud). "-1:" algusesse kirjutama ei pea, selle asemel kirjutage algusesse "0x".
Veel vĂ”ib muuta rida 6.666 Gram*/ konstantne kogus â see on grammi kogus, mida kĂŒsisite (mitte rohkem kui 20). Isegi kui sisestate tĂ€isarvu, jĂ€tke kĂŒmnendkoht.
LĂ”puks tuleb muuta rida 0x00000011 konstantne seqno. Esimene number siin â see on praegune sequence number, mis salvestatakse kontole, mis jagab gramme. Kust seda saada? Nagu eelnevalt mainitud, kĂ€ivitage klient ja tĂ€itke:
last
getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0dLÔpus, nutilepingus, leiate
...
x{FF0020DDA4F260D31F01ED44D0D31FD166BAF2A1F80001D307D4D1821804A817C80073FB0201FB00A4C8CB1FC9ED54}
x{0000000D}Number 0000000D (teil on see suurem) ongi sequence number, mille peate sisestama testgiver.fif.
KĂ”ik, salvestame faili ja kĂ€ivitame (./crypto/fift testgiver.fif). VĂ€ljundina saadakse fail wallet-query.boc. See ongi loodud teate teise nutilepinguga â palve "edasta nii palju grammi sellele kontole".
Kliendi abil laadime selle vÔrku:
> sendfile wallet-query.boc
[ 1][t 1][1558747399.456575155][test-lite-client.cpp:577][!testnode] saatmine kĂŒsimus failist wallet-query.boc
[ 3][t 2][1558747399.500236034][test-lite-client.cpp:587][!query] vĂ€line sĂ”numi olek on 1Kui nĂŒĂŒd kutsuda last, ja seejĂ€rel uuesti kĂŒsida konto staatust, millele me kĂŒsisime gramme, peaksime nĂ€gema, et selle jĂ€rjestuse number on suurenenud ĂŒhe vĂ”rra â see tĂ€hendab, et ta saatis raha meie kontole.
JÀÀnud on viimne samm â laadige ĂŒles oma rahakoti kood (see on juba rahaga tĂ€iendatud, kuid ilma nutilepinguta me ei saa sellega hallata). Teeme sendfile new-wallet-query.boc â ja kĂ”ik, teil on oma rahakott TON vĂ”rgus (kuigi seni vaid testversioon).
VĂ€ljuvate tehingute loomine
Kuna raha saamiseks loodud konto saldolt on fail crypto/block/wallet.fif, mille tuleks samuti paigutada koostatud kliendi kausta.
Sarnaselt eelmistele sammudele tuleb seal parandada summa, mille te ĂŒle kannate, saaja aadress (dest_addr) ja teie rahakoti seqno (see on esimese rahakoti seadistamise jĂ€rel 1 ja suureneb iga vĂ€ljuva tehingu jĂ€rel â saate seda nĂ€ha, kĂŒsides oma konto olekut). Testide jaoks vĂ”ite kasutada nĂ€iteks minu rahakotti â 0x4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2.
KÀivitamisel (./crypto/fift wallet.fif) skript vÔtab teie rahakoti aadressi (kust te edastate) ja selle privaatvÔtme failidest new-wallet.addr ja new-wallet.pk, ning saadud sÔnum salvestatakse new-wallet-query.boc.
Nagu varem, et teha tehingut otse, kutsume sendfile new-wallet-query.boc kliendis. PÀrast seda Àrge unustage vÀrskendada plokiahela olekut (last) ja kontrollida, kas meie rahakoti saldo ja seqno on muutunud (getaccount <account_id>).

Ja kĂ”ik â nĂŒĂŒd oskame luua nutilepinguid TONis ja saata neile pĂ€ringuid. Nagu nĂ€ha, on praegune funktsionaalsus juba piisav, et nĂ€iteks luua sĂ”bralikum rahakott graafilise liidesega (kuigi oodatakse, et see on juba saadaval kui osa messengeri).
Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. , palun.
Kas olete huvitatud artiklite jĂ€tkamisest TONi, TVM-i ja Fifti analĂŒĂŒsiga?
Jah, ootan TONi ĂŒlevaate artiklite tsĂŒkli lĂ”petamist
Jah, oleks huvitav lugeda rohkem Fifti keele kohta
Jah, tahan teada TON Virtuaalmasinast ja assemblerist selle jaoks
Ei, ei huvita sellest midagi
HÀÀletas 39 kasutajat. 12 kasutasid eemaldumist.
Kuidas suhtute Telegrami plaanidesse TONi kÀivitamiseks?
Loodan sellele projektile suuri lootusi
Lihtsalt jÀlgin huvi pÀrast tema arengut
Olen skeptiline, kahtlen tema edus
Kaldun arvama, et see algatus on ebaÔnnestunud ning laiadele massidele tarbetu
HÀÀletas 47 kasutajat. Erakuks jÀi 12 kasutajat.
Allikas: habr.com

