Tijaabi macmiilka TON (Telegram Open Network) iyo luqadda Fift cusub ee qandaraasyada caqliga leh

In ka badan hal sano ka hor, waxaa la ogaaday oo ku saabsan qorshayaasha farriinta Telegram si ay u sii daayaan shabakadeeda baahsan Fur shabakad telegram ah. Kadibna dukumeenti farsamo oo mug leh ayaa la helay, kaas oo lagu eedeeyay inuu qoray Nikolai Durov oo ku tilmaamay qaab dhismeedka shabakadda mustaqbalka. Kuwa seegay, waxaan kugula talinayaa inaad akhrido ku-noqoshada dukumeentigan (qaybta 1, qaybta 2; qaybta saddexaad, hoogay, weli waxay ururinaysaa boodhka qabyada).

Tan iyo markaas, ma jiro war muhiim ah oo ku saabsan heerka horumarka TON ilaa dhowr maalmood ka hor (mid ka mid ah channels aan rasmi ahayn) isku xirka bogga ma muuqan https://test.ton.org/download.html, halkay ku yaalaan:
â-| ton-tijaabo-lite-client-full.tar.xz - ilaha macmiilka iftiinka ee shabakada tijaabada TON;
â-| ton-lite-client-test1.config.json - faylka qaabeynta ee isku xirka shabakada tijaabada;
â-| README - macluumaadka ku saabsan dhismaha iyo bilaabista macmiilka;
â-| SIDA LOO - Tilmaamo tallaabo-tallaabo ah oo ku saabsan abuurista qandaraas caqli-gal ah iyadoo la adeegsanayo macmiilka;
â-| tan.pdf - dukumeenti la cusboonaysiiyay (oo ku taariikhaysan Maarso 2, 2019) oo leh dulmar farsamo oo ku saabsan shabakadda TON;
â-| tvm.pdf - sharaxaad farsamo ee TVM (TON Virtual Machine, TON mashiinka farsamada);
â-| tblkch.pdf - sharaxaad farsamo ee blockchain TON;
â-| saldhiga shanaad.pdf - sharaxaadda luqadda cusub ee Fift, oo loogu talagalay abuurista qandaraasyo caqli gal ah gudaha TON.

Waxaan ku celinayaa, ma jirin xaqiijin rasmi ah oo bogga ah iyo dhammaan dukumentiyadan ka yimid Telegram, laakiin mugga alaabtan ayaa ka dhigaya kuwo macquul ah. Bilow macmiilka la daabacay khatartiisa.

Dhisida macmiilka imtixaan

Marka hore, aan isku dayno inaan dhisno oo maamulno macmiil tijaabo ah - nasiib wanaag, README ayaa si faahfaahsan u qeexaya habkan fudud. Waxaan tan ku sameyn doonaa anigoo isticmaalaya macOS 10.14.5 tusaale ahaan; Ma dammaanad qaadi karo guusha dhismaha nidaamyada kale.

  1. Soo deji oo fur baakadaha kaydka isha. Waa muhiim in la soo dejiyo nuqulkii ugu dambeeyay maadaama aan la dammaanad qaadin ku- wanagsanaanta gadaal-u-dhaca marxaladdan.

  2. Hubi in noocyadii ugu dambeeyay ee samaynta, cmake (nooca 3.0.2 ama ka sareeya), OpenSSL (ay ku jiraan faylasha C), g++ ama qabiilg lagu rakibay nidaamka. Ma ahayn inaan wax rakibo, wax walba ayaa isla markiiba isu yimid.

  3. Aynu ka soo qaadno in ilo-wareedyadu ay ka furmeen gal ~/lite-client. Si ka duwan isaga, u samee gal madhan mashruuca la isu keenay (tusaale ahaan, ~/liteclient-build), oo ka yimid (cd ~/liteclient-build) wac amarrada:

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

    Tijaabi macmiilka TON (Telegram Open Network) iyo luqadda Fift cusub ee qandaraasyada caqliga leh

    Si loo dhiso turjumaanka luuqada Fift ee qandaraasyada caqliga leh (wax badan oo ku saabsan hoos), sidoo kale waan wacnaa

    cmake --build . --target fift

  4. Soo deji kan hadda faylka qaabeynta si aad ugu xidho shabakada tijaabada oo aad geliso galka macmiilka la ururiyey.

  5. Waxaa la sameeyaa, waxaad bilaabi kartaa macmiilka:

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

Haddii wax walba si sax ah loo sameeyo, waa inaad aragto wax sidan oo kale ah:

Tijaabi macmiilka TON (Telegram Open Network) iyo luqadda Fift cusub ee qandaraasyada caqliga leh

Sida aan arki karno, waxaa jira amarro yar oo la heli karo:
â-| help - muuji liiskan amarrada;
â-| quit - bax;
â-| time - ku muuji wakhtiga hadda ee server-ka;
â-| status - muuji xidhiidhka iyo heerka xogta deegaanka;
â-| last - Cusbooneysii xaaladda blockchain (soo dejiso blockka u dambeeya). Waa muhiim inaad socodsiiso amarkan ka hor codsi kasta si aad u hubiso inaad aragto xaalada shabakada hadda.
â-| sendfile <filename> - U rar fayl maxalli ah shabakada TON Tani waa sida isdhexgalka shabakadaha u dhaco - oo ay ku jiraan, tusaale ahaan, abuurista qandaraasyo cusub oo caqli-gal ah iyo codsiyada lagu wareejinayo lacagaha u dhexeeya xisaabaadka;
â-| getaccount <address> - tus hadda (waqtiga amarka la fuliyay) last) heerka koontada leh ciwaanka la cayimay;
â-| privkey <filename> - ka soo deji furaha gaarka ah faylka maxaliga ah.

Haddii, marka aad bilaabayso macmiilka, aad ku wareejiso gal iyada oo la isticmaalayo ikhtiyaarka -D, ka dibna wuxuu ku dari doonaa qaybta u dambaysa ee masterchain:

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

Hadda waxaan u gudbi karnaa waxyaabo badan oo xiiso leh - baro luqadda shanaad, isku day inaad ururiso qandaraas caqli-gal ah (tusaale ahaan, samee boorsada tijaabada ah), ku dheji shabakada oo isku day inaad u wareejiso lacagaha u dhexeeya xisaabaadka.

Luuqadda Shanaad

Laga soo bilaabo dukumeentiga saldhiga shanaad.pdf waxaad ogaan kartaa in kooxda Telegram-ku ay abuureen luuqad cusub oo la isku dhejiyay si ay u abuuraan qandaraasyo caqli badan Shan (sida muuqata laga bilaabo nambarada shanaad, oo la mid ah Forth, luqadda shanaad ay wax badan wadaagaan).

Dukumeentigu aad buu u weyn yahay, bogag 87 ah, dib ugu sheegi maayo waxa ku jira si faahfaahsan qaab dhismeedka maqaalkan (ugu yaraan sababtoo ah anigu maan dhamayn akhrinta lafteyda :). Waxaan diiradda saari doonaa qodobbada ugu muhiimsan waxaanan ku siin doonaa dhowr tusaale oo kood ah oo luqaddan ah.

Heerka aasaasiga ah, ereyga Fift's syntax waa mid fudud: koodkiisu wuxuu ka kooban yahay ereyada, inta badan waxaa lagu kala saaraa meelo bannaan ama xariiqo go'an (xaalad gaar ah: erayada qaarkood uma baahna kala sooc iyaga ka dib). Mid kasta ereyga waa taxane xasaasi ah oo jilayaal u dhigma wax gaar ah qeexitaan (qiyaastii, waxa uu tarjumaanku sameeyo marka uu la kulmo eraygan). Haddi aanay jirin qeexitaan kelmad, turjumaanku waxa uu isku dayaa in uu tiro ahaan u kala saaro oo uu dul saaro xidhmada. Jid ahaan, tirooyinka halkan waa - si lama filaan ah - 257-bit tirooyin ah, mana jiraan wax jajab ah oo dhan - si sax ah, isla markiiba waxay isu beddelaan lammaane isku-dhafan, oo sameeya tiro iyo hoos-u-dhige jajab caqli-gal ah.

Erayadu waxay u janjeeraan inay la falgalaan qiyamka meesha ugu sarreysa ee xirmada. Nooc gaar ah oo kelmado ah - horgale - ma isticmaalo xidhmada, laakiin jilayaasha xiga ee faylka isha. Tusaale ahaan, tani waa sida xargaha xargaha loo hirgeliyay - jilaha xigashada (") waa kelmad horgale ah oo raadinaysa xigashada soo socota ( xidhidh), oo ku riixaysa xadhigga u dhexeeya xidhmada. Hal-lineers waxay u dhaqmaan si la mid ah (//iyo khad badan (/*) faallooyin.

Tani waa halka ku dhawaad ​​​​dhammaan qaab-dhismeedka gudaha ee luqadda uu ku dhammaanayo. Wax kasta oo kale (oo ay ku jiraan dhismooyinka xakamaynta) waxaa lagu qeexaa erayo (mid gudeed, sida hawlgallada xisaabta iyo qeexida erayada cusub; ama lagu qeexay "maktabadda caadiga ah" Fift.fif, kaas oo ku jira galka crypto/fift ee ilaha).

Tusaalaha fudud ee barnaamijka Fift:

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

Sadarka kowaad wuxuu qeexayaa kelmad cusub setxy (ogow horgalayaasha {, kaas oo abuura xannibaad ka hor xiritaanka } iyo horgale :, oo si dhab ah u qeexaya ereyga). setxy nambar ka soo qaadaa meesha ugu sareysa ee xirmada, wuxuu qeexayaa (ama dib u qeexay) mid caalami ah joogto ah x, iyo afargeeska lambarkan si joogto ah y (Marka la eego in qiyamka joogtada ah dib loo qeexi karo, waxaan jeclaan lahaa in aan ugu yeero doorsoomayaasha, laakiin waxaan raacaa heshiiska magac bixinta ee luqadda).

Labada sadar ee xiga waxay saarayaan nambar rasinka oo wac setxy, ka dibna qiyamka joogtada ah ayaa la soo bandhigay x, y (ereyga waxa loo isticmaalaa wax soo saarka .), labada joogtayba waxaa lagu dhejiyaa xirmada, la soo koobay, natiijaduna sidoo kale waa la daabacay. Natiijo ahaan waxaan arki doonaa:

3 9 12 ok
7 49 56 ok

(Xariiqda "ok" waxaa daabaca turjumaanku marka uu dhameeyo habaynta xariiqda hadda jirta ee habka gelinta is dhexgal ah)

Hagaag, tusaale kood buuxa:

"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

Faylkan muuqaalka cabsida leh waxaa loogu talagalay abuurista qandaraas caqli-gal ah - waxaa lagu dhejin doonaa fayl new-wallet-query.boc ka dib dil. Fadlan la soco in luqad kale oo shirarka loo isticmaalo halkan TON Virtual Machine (ma sii joogi doono si faahfaahsan), tilmaamaha kaas oo lagu dhejin doono blockchain.

Sidaa darteed, isku-duwaha TVM wuxuu ku qoran yahay Fift - ilaha ururiyahani waxay ku jiraan faylka. crypto/fift/Asm.fif waxayna ku xiran yihiin bilowga gabalka koodka sare.

Maxaan dhihi karaa, sida muuqata Nikolai Durov wuxuu jecel yahay abuurista luuqado cusub :)

Abuuritaanka qandaraas caqli gal ah iyo la falgalka TON

Haddaba, aynu ka soo qaadno in aynu soo ururinay macmiilka TON iyo turjubaanka shanta ah sida kor lagu sheegay oo aynu barannay luqadda. Sidee loo abuuraa qandaraas caqli gal ah hadda? Tan waxaa lagu sifeeyay faylka SIDA LOO, ku lifaaqan ilaha.

Xisaabaadka TON

Sida aan ku tilmaamay TON dib u eegis, Shabakaddan waxay ka kooban tahay in ka badan hal block - waxaa jira hal mid oo caadi ah, waxa loogu yeero. "silsilad sayid", iyo sidoo kale tiro aan sabab lahayn oo ah "silsilad shaqo" oo dheeraad ah, oo lagu aqoonsaday lambarka 32-bit. Masterchain-ku wuxuu leeyahay tilmaame -1; marka lagu daro, silsilad-shaqo "saldhig" oo leh aqoonsi 0 ayaa sidoo kale la isticmaali karaa. Gudaha, silsilad kasta oo shaqadu waxay u qaybsantaa shardchains, laakiin tani waa tafaasiisha fulinta oo aan u baahnayn in maskaxda lagu hayo.

Hal silsilad shaqo gudaheed, akoonno badan ayaa lagu kaydiyaa kuwaas oo leh aqoonsigooda akoon_id. Silsiladda sare iyo silsiladda shaqada eber, waxay dhererkoodu yahay 256 bits. Haddaba, aqoonsiga akoonku waxa uu u qoran yahay, tusaale ahaan, sidan:

-1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Kani waa qaabka "ceeriin": marka hore aqoonsiga silsiladda shaqada, ka dibna xiidan, iyo aqoonsiga akoonka ee qoraalka hexadecimal.

Intaa waxaa dheer, waxaa jira qaab la soo koobay - lambarka shaqada iyo ciwaanka koontada waxay ku qoran yihiin qaab binary ah, jeeg ayaa lagu daraa, oo waxaas oo dhan waxay ku qoran yihiin Base64:

Ef+BVndbeTJeXWLnQtm5bDC2UVpc0vH2TF2ksZPAPwcODSkb

Ogaanshaha qaabkan diiwaanka, waxaan ku codsan karnaa xaalada xisaabta ee hadda jirta iyada oo loo marayo macmiil tijaabo isticmaalaya amarka

getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Waxaan heli doonaa wax sidan oo kale ah:

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

Waxaan aragnaa qaabka lagu kaydiyay DHT ee silsiladda shaqada ee cayiman. Tusaale ahaan, garoonka dhexdiisa storage.balance waa hadhaaga akoontiga hadda jira, in storage.state.code - code qandaraas smart, iyo in storage.state.data - xogteeda hadda. Fadlan ogow in kaydinta xogta TON - Unug, unugyo - ay u eg yihiin geed, unug kastaa wuxuu yeelan karaa labadaba xog u gaar ah iyo unugyada ilmaha. Tan waxaa lagu muujiyey sida soo gelitaan xariiqyada ugu dambeeya.

Dhisida qandaraas caqli gal ah

Hadda aynu samayno qaab-dhismeedkan oo kale (waxaa loo yaqaan BOC - bacda unugyada) iyadoo la adeegsanayo luqadda Shanaad. Nasiib wanaag, ma aha inaad adigu qorto qandaraas caqli-gal ah - galka dhexdiisa crypto/block waxaa jira fayl ka yimid kaydka isha new-wallet.fif, kaas oo naga caawin doona inaan abuurno boorso cusub. Aan ku koobiyayno galka macmiilka la ururiyay (~/liteclient-build, haddii aad raacdo tilmaamaha kore). Waxa aan kor ku soo qaatay tusaale ahaan koodka Fift.

U samee faylkan sida soo socota:

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

waa <source-directory> waa in lagu beddelaa dariiqa loo maro ilaha aan xirneyn (calaamada "~", nasiib daro, halkan lama isticmaali karo, wadada buuxda ayaa loo baahan yahay). Halkii aad isticmaali lahayd furaha -I waxaad qeexi kartaa doorsoomayaasha deegaanka FIFTPATH oo jidkan geli.

Tan iyo markii aan bilownay Fift oo leh magaca faylka new-wallet.fif, way fulin doontaa oo bixi doontaa. Haddii aad ka tagto magaca faylka, waxaad la ciyaari kartaa turjubaanka si is dhexgal ah.

Ka dib fulinta, wax sidan oo kale ah waa in lagu soo bandhigaa console-ka:

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)

Tani waxay ka dhigan tahay in boorsada aqoonsiga -1:4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2 (ama, waa maxay isku mid, 0f9PzVILj8yglrVn1zS-NSjtxr7QBfaTCp7JrBqnFPIR8nhZ) si guul leh loo abuuray. Koodhka u dhigma ayaa ku jiri doona faylka new-wallet-query.boc, ciwaankiisu waa ku jiraa new-wallet.addr, furaha gaarka ahna waa ku jiraa new-wallet.pk (ka digtoonow - socodsiinta qoraalka mar kale waxay dib u qori doontaa faylashan).

Dabcan, shabakada TON wali kama warqabto boorsadan; waxaa lagu kaydiyaa kaliya qaabka faylashaas. Hadda waxay u baahan tahay in lagu dhejiyo shabakada Si kastaba ha ahaatee, dhibaatadu waxay tahay in si aad u abuurto qandaraas caqli-gal ah waxaad u baahan tahay inaad bixiso komishan, iyo hadhaaga akoonkaaga weli waa eber.

Habka shaqada, dhibaatadan waxaa lagu xallin doonaa iibsashada garaamyada sarrifka (ama ka wareejinta boorsada kale). Waa hagaag, qaabka imtixaanka hadda jira, qandaraas gaar ah oo caqli-gal ah ayaa la sameeyay, kaas oo aad ka codsan karto ilaa 20 garaam oo sidaas oo kale ah.

Abuurista codsi qandaraas qof kale leeyahay

Waxaan codsi u dirnaa qandaraas caqli-gal ah oo u qaybiya garaamyada bidix iyo midig sidan oo kale. Isla gal crypto/block hel faylka 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

Waxaan sidoo kale ku keydin doonaa galka macmiilka la ururiyay, laakiin waxaan sixi doonaa safka shanaad - ka hor khadka "constant dest_addr" Aan ku bedelno ciwaanka boorsada aad hore u abuurtay (buuxa, aan la soo gaabin). Looma baahna in la qoro "-1:" bilawga, bedelkeedana ku dheji "0x" bilowga.

Waxaad sidoo kale bedeli kartaa khadka 6.666 Gram*/ constant amount - tani waa cadadka garaam ee aad codsanayso (aan ka badnayn 20). Xitaa haddii aad sheegto tiro dhan, ka tag barta tobanlaha.

Ugu dambeyntii, waxaad u baahan tahay inaad saxdo xariiqda 0x00000011 constant seqno. Lambarka ugu horreeya halkan waa lambarka taxanaha hadda, kaas oo ku kaydsan xisaabta soo saarista garaam. Xagee ka heli karaa? Sida kor lagu sheegay, bilow macmiilka oo orod:

last
getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Dhamaadka dhamaadka, xogta qandaraaska smart ayaa ka koobnaan doonta

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

Nambarka 0000000D (kaagu wuu ka weynaan doonaa) waa lambarka taxanaha ah ee ay tahay in lagu beddelo testgiver.fif.

Taasi waa, kaydi faylka oo orod (./crypto/fift testgiver.fif). Soosaarku wuxuu noqon doonaa fayl wallet-query.boc. Tani waa waxa la sameeyay сообщение qof kale qandaraaskiisa caqli-gal ah - codsi "ku beddel garaamyo badan oo koontada caynkaas ah."

Isticmaalka macmiilka, waxaan u rarnaa shabakada:

> 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

Haddaad hadda wacdo last, ka dibna mar kale codso heerka koontada aan ka codsanay garaam, markaa waa inaan aragnaa in nambarkeeda isku xigxiga uu kordhay hal - taasi waxay ka dhigan tahay inay lacag u soo dirtay akoonkeena.

Tallaabada ugu dambeysa ayaa weli ah - soo deji koodhka boorsada jeebka (dheellitirkeeda ayaa mar hore la buuxiyey, laakiin la'aanteed koodhka qandaraaska ee caqliga leh ma awoodi doono inaan maareeyo). Waanu fulinaynaa sendfile new-wallet-query.boc - waana taas, waxaad haysataa boorsadaada jeebka ee shabakadda TON (xitaa haddii ay hadda tahay tijaabo keliya).

Abuuritaanka macaamil ganacsi oo baxaya

Si aad lacag uga xawisho baaqiga koontada la abuuray, waxaa jira fayl crypto/block/wallet.fif, kaas oo sidoo kale u baahan in la geliyo galka macmiilka la ururiyey.

Si la mid ah tillaabooyinka hore, waxaad u baahan tahay inaad hagaajiso qaddarka aad ku wareejinayso, ciwaanka qaataha (dest_addr), iyo seqno boorsadaada (waxay la mid tahay 1 ka dib markaad bilawdo boorsada oo waxay kordhisaa 1 ka dib wax kala iibsi kasta oo baxaya - waad awoodaa. u arag adigoo codsanaya heerka akoonkaaga) . Imtixaannada, waxaad isticmaali kartaa, tusaale ahaan, boorsadayda - 0x4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2.

Bilawga (./crypto/fift wallet.fifQoraalku wuxuu ka qaadayaa ciwaanka boorsadaada (halka aad ka wareejinayso) iyo furihiisa gaarka ah faylasha new-wallet.addr и new-wallet.pk, oo fariinta la helay ayaa loo qori doonaa new-wallet-query.boc.

Sidii hore, si toos ah u fuliso macaamilka, wac sendfile new-wallet-query.boc macmiilka dhexdiisa. Taas ka dib, ha ilaawin inaad cusboonaysiiso xaaladda xannibaadda (blockchain)last) oo hubi in dheelitirka iyo seqno ee jeebkayagu isbeddelay (getaccount <account_id>).

Tijaabi macmiilka TON (Telegram Open Network) iyo luqadda Fift cusub ee qandaraasyada caqliga leh

Taasi waa dhan, hadda waxaan ku abuuri karnaa qandaraasyo caqli gal ah TON oo aan u dirno codsiyo iyaga. Sida aad arki karto, shaqeynta hadda waa ku filan tahay, tusaale ahaan, samee boorso saaxiibtinimo leh oo leh interface garaaf ah (si kastaba ha ahaatee, waxaa la filayaa in ay mar horeba diyaar u noqon doonto qayb ka mid ah farriinta).

Isticmaalayaasha diiwaangashan oo keliya ayaa ka qaybqaadan kara sahanka. Soo gal, soo dhawoow.

Ma xiisaynaysaa inaad ku sii waddo maqaallada falanqaynta TON, TVM, Fift?

  • Haa, waxaan sugayaa dhammaystirka maqaallada taxanaha ah oo leh dulmar guud oo TON ah

  • Haa, waxaa xiiso leh in wax badan laga akhriyo luqadda Shanaad

  • Haa, waxaan rabaa inaan wax badan ka barto TON Virtual Machine iyo isu-ururinta

  • Maya, midkoodna xiiso ma leh

39 isticmaale ayaa u codeeyay. 12 isticmaale ayaa ka aamusay.

Sideed u aragtaa qorshaha Telegram-ka ee lagu bilaabayo TON?

  • Rajo weyn ayaan ka qabaa mashruucan

  • Waxaan uun la socdaa horumarkeeda xiisaha.

  • Waan ka shakisanahay oo waxaan shaki qabaa guusheeda.

  • Waxaan u janjeera inaan u arko hindisahan mid guul-darraystay oo aan loo baahnayn bulsho weynta

47 isticmaale ayaa u codeeyay. 12 isticmaale ayaa ka aamusay.

Source: www.habr.com

Add a comment