ProHoster > Blogs > AdministrÄcija > Testa klients TON (Telegram Open Network) un jauna Fift valoda viedajiem lÄ«gumiem
Testa klients TON (Telegram Open Network) un jauna Fift valoda viedajiem līgumiem
VairÄk nekÄ pirms gada kļuva zinÄms par Telegram Messenger plÄniem atbrÄ«vot savu decentralizÄto tÄ«klu AtvÄrtÄ tÄ«kla telegramma. Tad kļuva pieejams apjomÄ«gs tehniskais dokuments, kuru it kÄ rakstÄ«jis Nikolajs Durovs un kurÄ aprakstÄ«ta topoÅ”Ä tÄ«kla struktÅ«ra. Tiem, kas palaida garÄm, iesaku izlasÄ«t manu Ŕī dokumenta pÄrstÄstu (1. daļa, 2. daļa; treÅ”Ä daļa, diemžÄl, joprojÄm savÄc putekļus caurvÄjÄ).
KopÅ” tÄ laika nav bijis nekÄdu bÅ«tisku ziÅu par TON attÄ«stÄ«bas statusu vÄl pirms pÄris dienÄm (vienÄ no neoficiÄlie kanÄli) saite uz lapu neparÄdÄ«jÄs https://test.ton.org/download.html, kur atrodas:
ā¦ ton-test-liteclient-full.tar.xz ā gaismas klienta avoti TON testa tÄ«klam;
ā¦ ton-lite-client-test1.config.json ā konfigurÄcijas fails savienojumam ar testa tÄ«klu;
ā¦ README ā informÄcija par klienta izveidi un palaiÅ”anu;
ā¦ KÄ ā soli pa solim instrukcijas viedÄ lÄ«guma izveidoÅ”anai, izmantojot klientu;
ā¦ ton.pdf ā precizÄts dokuments (datÄts ar 2.) ar TON tÄ«kla tehnisko pÄrskatu;
ā¦ tvm.pdf ā TVM (TON Virtual Machine, TON virtuÄlÄ maŔīna) tehniskais apraksts;
ā¦ tblkch.pdf ā TON blokÄ·Ädes tehniskais apraksts;
ā¦ fivebase.pdf ā jaunÄs Fift valodas apraksts, kas paredzÄta viedo lÄ«gumu izveidei TON valodÄ.
Es atkÄrtoju, ka lapai un visiem Å”iem dokumentiem no Telegram oficiÄla apstiprinÄjuma nebija, taÄu Å”o materiÄlu apjoms padara tos diezgan ticamus. Palaidiet publicÄto klientu uz savu risku.
Testa klienta izveide
Vispirms mÄÄ£inÄsim izveidot un palaist testa klientu ā par laimi, README sÄ«ki apraksta Å”o vienkÄrÅ”o procesu. Es to darÄ«Å”u, kÄ piemÄru izmantojot operÄtÄjsistÄmu macOS 10.14.5; es nevaru galvot par veiksmÄ«gu bÅ«vniecÄ«bu citÄs sistÄmÄs.
LejupielÄdÄjiet un izpakojiet avotu arhÄ«vs. Ir svarÄ«gi lejupielÄdÄt jaunÄko versiju, jo atpakaļsaderÄ«ba Å”ajÄ posmÄ netiek garantÄta.
PÄrliecinieties, vai sistÄmÄ ir instalÄtas jaunÄkÄs make, cmake (versija 3.0.2 vai jaunÄka versija), OpenSSL (ieskaitot C galvenes failus), g++ vai clang versijas. Man nekas nebija jÄinstalÄ, viss sanÄca uzreiz.
PieÅemsim, ka avoti ir izpakoti mapÄ ~/lite-client. AtseviŔķi no tÄ izveidojiet tukÅ”u mapi saliktajam projektam (piemÄram, ~/liteclient-build), un no tÄ (cd ~/liteclient-build) izsauc komandas:
Ja viss ir izdarÄ«ts pareizi, jums vajadzÄtu redzÄt kaut ko lÄ«dzÄ«gu:
KÄ redzam, ir pieejamas dažas komandas:
ā¦ help ā parÄdÄ«t Å”o komandu sarakstu;
ā¦ quit - ej ÄrÄ;
ā¦ time ā parÄdÄ«t paÅ”reizÄjo laiku serverÄ«;
ā¦ status ā parÄdÄ«t savienojuma un lokÄlÄs datu bÄzes statusu;
ā¦ last ā atjauninÄt blokÄ·Ädes stÄvokli (lejupielÄdÄt pÄdÄjo bloku). Ir svarÄ«gi palaist Å”o komandu pirms jebkÄdiem pieprasÄ«jumiem, lai pÄrliecinÄtos, ka redzat paÅ”reizÄjo tÄ«kla stÄvokli.
ā¦ sendfile<filename> ā augÅ”upielÄdÄjiet lokÄlo failu TON tÄ«klÄ. TÄdÄ veidÄ notiek mijiedarbÄ«ba ar tÄ«klu ā tostarp, piemÄram, jaunu viedo lÄ«gumu izveide un lÄ«dzekļu pÄrskaitÄ«Å”anas pieprasÄ«jumi starp kontiem;
ā¦ getaccount<address> ā parÄdÄ«t paÅ”reizÄjo (komandas izpildÄ«Å”anas laikÄ) last) konta statuss ar norÄdÄ«to adresi;
ā¦ privkey<filename> ā ielÄdÄjiet privÄto atslÄgu no vietÄjÄ faila.
Ja, startÄjot klientu, pÄrsÅ«tÄt uz to mapi, izmantojot opciju -D, viÅÅ” tam pievienos pÄdÄjo galvenÄs Ä·Ädes bloku:
Tagad varam pÄriet uz interesantÄkÄm lietÄm ā apgÅ«t Fift valodu, mÄÄ£inÄt sastÄdÄ«t viedo lÄ«gumu (piemÄram, izveidot testa maku), augÅ”upielÄdÄt to tÄ«klÄ un mÄÄ£inÄt pÄrskaitÄ«t lÄ«dzekļus starp kontiem.
Valoda Fift
No dokumenta fivebase.pdf jÅ«s varat uzzinÄt, ka Telegram komanda ir izveidojusi jaunu steka valodu, lai izveidotu viedos lÄ«gumus PiektÄ (acÄ«mredzot no cipara piektais, lÄ«dzÄ«gi kÄ Forth, valoda, ar kuru Fifth ir daudz kopÄ«ga).
Dokuments ir diezgan apjomÄ«gs, 87 lappuses, un Ŕī raksta ietvaros tÄ saturu sÄ«kÄk nepÄrstÄstÄ«Å”u (vismaz tÄpÄc, ka pats neesmu pabeidzis lasÄ«t :). Es koncentrÄÅ”os uz galvenajiem punktiem un sniegÅ”u pÄris kodu piemÄrus Å”ajÄ valodÄ.
PamatlÄ«menÄ« Fiftas sintakse ir pavisam vienkÄrÅ”a: tÄ kods sastÄv no vÄrdiem, parasti atdala ar atstarpÄm vai rindiÅu pÄrtraukumiem (Ä«paÅ”s gadÄ«jums: dažiem vÄrdiem aiz sevis nav nepiecieÅ”ams atdalÄ«tÄjs). JebkurÅ” vÄrds ir reÄ£istrjutÄ«ga rakstzÄ«mju secÄ«ba, kas atbilst noteiktai noteikt (aptuveni, kas tulkam bÅ«tu jÄdara, saskaroties ar Å”o vÄrdu). Ja vÄrdam nav definÄ«cijas, tulks mÄÄ£ina to parsÄt kÄ skaitli un ievietot kaudzÄ. Starp citu, skaitļi Å”eit ir - pÄkÅ”Åi - 257 bitu veseli skaitļi, un daļskaitļu nav vispÄr - precÄ«zÄk, tie uzreiz pÄrvÄrÅ”as par veselu skaitļu pÄri, veidojot racionÄlas daļas skaitÄ«tÄju un saucÄju.
VÄrdi mÄdz mijiedarboties ar vÄrtÄ«bÄm kaudzes augÅ”pusÄ. AtseviŔķs vÄrdu veids - priedÄklis ā neizmanto steku, bet nÄkamÄs rakstzÄ«mes no avota faila. PiemÄram, Å”Ädi tiek Ä«stenoti virkÅu literÄļi - pÄdiÅas rakstzÄ«me (") ir prefiksa vÄrds, kas meklÄ nÄkamo (aizveroÅ”o) citÄtu un nospiež virkni starp tÄm uz kaudzÄ«ti. Viena oderÄjums uzvedas tÄpat (//) un daudzrindu (/*) komentÄri.
Å eit beidzas gandrÄ«z visa valodas iekÅ”ÄjÄ struktÅ«ra. Viss pÄrÄjais (tostarp vadÄ«bas konstrukcijas) ir definÄts kÄ vÄrdi (vai nu iekÅ”Äji, piemÄram, aritmÄtiskÄs darbÄ«bas un jaunu vÄrdu definÄ«cija; vai definÄts "standarta bibliotÄkÄ"). Fift.fif, kas atrodas mapÄ crypto/fift avotos).
VienkÄrÅ”s programmas piemÄrs programmÄ Fift:
{ dup =: x dup * =: y } : setxy
3 setxy x . y . x y + .
7 setxy x . y . x y + .
PirmÄ rinda definÄ jaunu vÄrdu setxy (Å emiet vÄrÄ prefiksu {, kas izveido bloku pirms noslÄdzoÅ”Ä } un prefiksu :, kas faktiski definÄ vÄrdu). setxy Åem skaitli no kaudzes augÅ”daļas, definÄ (vai no jauna definÄ) to kÄ globÄlu nemainÄ«gsx, un Ŕī skaitļa kvadrÄts kÄ konstante y (Å emot vÄrÄ, ka konstantu vÄrtÄ«bas var definÄt no jauna, es drÄ«zÄk tos sauktu par mainÄ«gajiem, bet es ievÄroju nosaukÅ”anas konvenciju valodÄ).
NÄkamajÄs divÄs rindÄs ielieciet numuru uz kaudzes un zvaniet setxy, tad tiek parÄdÄ«tas konstantu vÄrtÄ«bas x, y (vÄrds tiek izmantots izvadei .), abas konstantes tiek ievietotas kaudzÄ, summÄtas, un rezultÄts tiek arÄ« izdrukÄts. RezultÄtÄ mÄs redzÄsim:
3 9 12 ok
7 49 56 ok
(Tulks izdrukÄ rindiÅu āokā, kad tas pabeidz paÅ”reizÄjÄs rindas apstrÄdi interaktÄ«vÄs ievades režīmÄ)
Å is biedÄjoÅ”Ä izskata fails ir paredzÄts viedÄ lÄ«guma izveidei ā tas tiks ievietots failÄ new-wallet-query.boc pÄc izpildes. LÅ«dzu, Åemiet vÄrÄ, ka TON virtuÄlajai maŔīnai Å”eit tiek izmantota cita montÄžas valoda (sÄ«kÄk par to nekavÄÅ”os), kuras norÄdÄ«jumi tiks ievietoti blokÄ·ÄdÄ.
TÄdÄjÄdi TVM montÄtÄjs ir rakstÄ«ts Fift ā Ŕī montÄtÄja avoti ir failÄ crypto/fift/Asm.fif un ir savienoti iepriekÅ” minÄtÄ koda sÄkumÄ.
Ko lai saka, acÄ«mredzot Nikolajam Durovam vienkÄrÅ”i patÄ«k radÄ«t jaunas programmÄÅ”anas valodas :)
Vieda līguma izveide un mijiedarbība ar TON
TÄtad, pieÅemsim, ka esam salikuÅ”i TON klientu un Fift tulku, kÄ aprakstÄ«ts iepriekÅ”, un iepazinuÅ”ies ar valodu. KÄ izveidot viedo lÄ«gumu tagad? Tas ir aprakstÄ«ts failÄ KÄ, pievienots avotiem.
Konti TON
KÄ es aprakstÄ«ju TON apskats, Å”ajÄ tÄ«klÄ ir vairÄk nekÄ viena blokÄ·Äde ā ir viena izplatÄ«ta, tÄ sauktÄ. "galvenÄ Ä·Äde", kÄ arÄ« patvaļīgs papildu "darba Ä·Äžu" skaits, kas identificÄtas ar 32 bitu skaitli. Masterchain ir identifikators -1, papildus tam var izmantot arÄ« ābÄzesā darba Ä·Ädi ar identifikatoru 0. Katrai darba Ä·Ädei var bÅ«t sava konfigurÄcija. IekÅ”Äji katra darba Ä·Äde ir sadalÄ«ta shardÄ·ÄdÄs, taÄu tÄ ir ievieÅ”anas detaļa, kas nav jÄpatur prÄtÄ.
VienÄ darba Ä·ÄdÄ tiek glabÄti daudzi konti, kuriem ir savi account_id identifikatori. Galvenajai Ä·Ädei un nulles darba Ä·Ädei tie ir 256 biti gari. TÄdÄjÄdi konta identifikators tiek rakstÄ«ts, piemÄram, Å”Ädi:
Å is ir āneapstrÄdÄtsā formÄts: vispirms darba Ä·Ädes ID, pÄc tam kols un konta ID heksadecimÄlajÄ apzÄ«mÄjumÄ.
TurklÄt ir saÄ«sinÄts formÄts - darba Ä·Ädes numurs un konta adrese tiek kodÄti binÄrÄ formÄ, tiem tiek pievienota kontrolsumma, un tas viss tiek kodÄts Base64:
Ef+BVndbeTJeXWLnQtm5bDC2UVpc0vH2TF2ksZPAPwcODSkb
Zinot Å”o ieraksta formÄtu, mÄs varam pieprasÄ«t konta paÅ”reizÄjo stÄvokli, izmantojot testa klientu, izmantojot komandu
[ 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}
MÄs redzam struktÅ«ru, kas tiek saglabÄta norÄdÄ«tÄs darba Ä·Ädes DHT. PiemÄram, laukÄ storage.balance ir tekoÅ”Ä konta atlikums, in storage.state.code - viedÄ lÄ«guma kods un iekÅ”Ä storage.state.data - tÄ paÅ”reizÄjie dati. LÅ«dzu, Åemiet vÄrÄ, ka TON datu krÄtuve - Å Å«na, Ŕūnas - ir koka veida, katrÄ Å”Å«nÄ var bÅ«t gan savi dati, gan bÄrnu Ŕūnas. Tas tiek parÄdÄ«ts kÄ atkÄpe pÄdÄjÄs rindÄs.
Gudra līguma veidoŔana
Tagad izveidosim paÅ”i Å”Ädu struktÅ«ru (to sauc par BOC - Ŕūnu maiss), izmantojot Fift valodu. Par laimi, jums paÅ”am nav jÄraksta viedais lÄ«gums - mapÄ crypto/block ir fails no avota arhÄ«va new-wallet.fif, kas mums palÄ«dzÄs izveidot jaunu maku. KopÄsim to uz mapi ar salikto klientu (~/liteclient-build, ja ievÄrojÄt iepriekÅ” sniegtos norÄdÄ«jumus). IepriekÅ” es citÄju tÄ saturu kÄ Fift koda piemÄru.
Å eit <source-directory> jÄaizstÄj ar ceļu uz neizpakotajiem avotiem (simbolu ā~ā diemžÄl Å”eit nevar izmantot, ir nepiecieÅ”ams pilns ceļŔ). TÄ vietÄ, lai izmantotu atslÄgu -I varat definÄt vides mainÄ«go FIFTPATH un ielieciet tajÄ Å”o ceļu.
KopÅ” mÄs uzsÄkÄm Fift ar faila nosaukumu new-wallet.fif, tas to izpildÄ«s un izies. Ja izlaižat faila nosaukumu, varat interaktÄ«vi spÄlÄt ar tulku.
PÄc izpildes konsolÄ jÄparÄda kaut kas lÄ«dzÄ«gs Å”im:
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)
Tas nozÄ«mÄ, ka maku ar ID -1:4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2 (vai kas ir tas pats, 0f9PzVILj8yglrVn1zS-NSjtxr7QBfaTCp7JrBqnFPIR8nhZ) veiksmÄ«gi izveidots. AttiecÄ«gais kods bÅ«s failÄ new-wallet-query.boc, viÅa adrese ir norÄdÄ«ta new-wallet.addr, un privÄtÄ atslÄga ir ievadÄ«ta new-wallet.pk (esiet piesardzÄ«gs ā vÄlreiz palaižot skriptu, Å”ie faili tiks pÄrrakstÄ«ti).
Protams, TON tÄ«kls par Å”o maku vÄl nezina, tas tiek glabÄts tikai Å”o failu veidÄ. Tagad tas ir jÄaugÅ”upielÄdÄ tÄ«klÄ. TomÄr problÄma ir tÄ, ka, lai izveidotu viedo lÄ«gumu, jums ir jÄmaksÄ komisijas maksa, un jÅ«su konta atlikums joprojÄm ir nulle.
Darba režīmÄ Å”Ä« problÄma tiks atrisinÄta, pÄrkot gramus birÅ¾Ä (vai pÄrskaitot no cita maka). Nu paÅ”reizÄjÄ testa režīmÄ ir izveidots Ä«paÅ”s viedlÄ«gums, no kura var prasÄ«t lÄ«dz 20 gramiem tÄpat vien.
PieprasÄ«juma Ä£enerÄÅ”ana kÄda cita viedajam lÄ«gumam
MÄs pieprasÄm viedo lÄ«gumu, kas Å”Ädi sadala gramus pa labi un pa kreisi. TajÄ paÅ”Ä mapÄ crypto/block atrast failu 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
MÄs to saglabÄsim arÄ« mapÄ ar samontÄto klientu, bet labosim piekto rindiÅu - pirms rindas āconstant dest_addr". AizstÄsim to ar iepriekÅ” izveidotÄ maka adresi (pilna, nevis saÄ«sinÄta). SÄkumÄ nav jÄraksta ā-1:ā, tÄ vietÄ jÄliek ā0xā sÄkumÄ.
Varat arÄ« mainÄ«t lÄ«niju 6.666 Gram*/ constant amount ā Ŕī ir jÅ«su pieprasÄ«tÄ summa gramos (ne vairÄk kÄ 20). Pat ja norÄdÄt veselu skaitli, atstÄjiet decimÄlzÄ«mi.
Visbeidzot, jums ir jÄlabo lÄ«nija 0x00000011 constant seqno. Pirmais cipars Å”eit ir paÅ”reizÄjais kÄrtas numurs, kas tiek saglabÄts kontÄ, kas izsniedz gramus. No kurienes es to varu dabÅ«t? KÄ minÄts iepriekÅ”, startÄjiet klientu un palaidiet:
last
getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d
Skaitlis 0000000D (jÅ«sÄjais bÅ«s lielÄks) ir kÄrtas numurs, kas jÄaizstÄj ar testgiver.fif.
Tas arÄ« viss, saglabÄjiet failu un palaidiet (./crypto/fift testgiver.fif). Izvade bÅ«s fails wallet-query.boc. Tas ir tas, kas veidojas ŃŠ¾Š¾Š±ŃŠµŠ½ŠøŠµ uz kÄda cita viedo lÄ«gumu - lÅ«gums āpÄrskaitÄ«t tik daudz gramu uz tÄdu un tÄdu kontuā.
Izmantojot klientu, mÄs to augÅ”upielÄdÄjam tÄ«klÄ:
> 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
Ja tagad piezvanÄ«si last, un pÄc tam vÄlreiz pieprasiet tÄ konta statusu, no kura mÄs prasÄ«jÄm gramus, tad mums vajadzÄtu redzÄt, ka tÄ kÄrtas numurs ir palielinÄjies par vienu - tas nozÄ«mÄ, ka tas nosÅ«tÄ«ja naudu uz mÅ«su kontu.
Atliek pÄdÄjais solis - lejupielÄdÄjiet mÅ«su maka kodu (tÄ atlikums jau ir papildinÄts, bet bez viedÄ lÄ«guma koda mÄs to nevarÄsim pÄrvaldÄ«t). MÄs veicam sendfile new-wallet-query.boc ā un tas arÄ« viss, jums ir savs maciÅÅ” TON tÄ«klÄ (pat ja tas pagaidÄm ir tikai pÄrbaudes lÄ«dzeklis).
IzejoŔo darījumu veidoŔana
Lai pÄrskaitÄ«tu naudu no izveidotÄ konta atlikuma, ir fails crypto/block/wallet.fif, kas arÄ« jÄievieto mapÄ ar samontÄto klientu.
LÄ«dzÄ«gi kÄ iepriekÅ”ÄjÄs darbÄ«bÄs, jums ir jÄpielÄgo pÄrskaitÄmÄ summa, saÅÄmÄja adrese (dest_addr) un maka secÄ«ba (tas ir vienÄds ar 1 pÄc maka inicializÄcijas un palielinÄs par 1 pÄc katra izejoÅ”Ä darÄ«juma ā varat skatiet to, pieprasot sava konta statusu) . PÄrbaudÄm varat izmantot, piemÄram, manu maku - 0x4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2.
StartÄjot (./crypto/fift wallet.fif) skripts no failiem paÅems jÅ«su maka adresi (no kurienes jÅ«s pÄrsÅ«tÄt) un tÄ privÄto atslÄgu new-wallet.addr Šø new-wallet.pk, un saÅemtÄ ziÅa tiks rakstÄ«ta uz new-wallet-query.boc.
TÄpat kÄ iepriekÅ”, lai tieÅ”i veiktu darÄ«jumu, zvaniet sendfile new-wallet-query.boc klientÄ. PÄc tam neaizmirstiet atjauninÄt blokÄ·Ädes stÄvokli (last) un pÄrbaudiet, vai ir mainÄ«jies mÅ«su maka atlikums un secÄ«ba (getaccount <account_id>).
Tas arÄ« viss, tagad mÄs varam izveidot viedos lÄ«gumus TON un nosÅ«tÄ«t tiem pieprasÄ«jumus. KÄ redzams, ar paÅ”reizÄjo funkcionalitÄti jau pietiek, lai, piemÄram, izveidotu draudzÄ«gÄku maku ar grafisko interfeisu (tomÄr paredzams, ka tas jau kļūs pieejams kÄ daļa no messenger).
AptaujÄ var piedalÄ«ties tikai reÄ£istrÄti lietotÄji. Ielogoties, lÅ«dzu.
Vai jÅ«s interesÄ turpinÄt rakstus ar TON, TVM, Fift analÄ«zi?
JÄ, es gaidu, kad beigsies rakstu sÄrija ar vispÄrÄ«gu TON pÄrskatu
JÄ, ir interesanti lasÄ«t vairÄk par Fift valodu
JÄ, es vÄlos uzzinÄt vairÄk par TON virtuÄlo maŔīnu un tÄs montÄtÄju