Testovací klient TON (Telegram Open Network) a nový jazyk Fift pre smart kontrakty

Pred viac ako rokom sa dozvedeli o plánoch telegramového posla na uvoľnenie vlastnej decentralizovanej siete Otvorte telegram siete. Potom bol k dispozícii rozsiahly technický dokument, ktorý údajne napísal Nikolaj Durov a popisoval štruktúru budúcej siete. Tým, ktorým to uniklo, odporúčam prečítať si moje prerozprávanie tohto dokumentu (Časť 1, Časť 2; tretia časť, bohužiaľ, stále zbiera prach v prievane).

Odvtedy neboli až do pred pár dňami žiadne významné správy o stave vývoja TON (v jednom z neoficiálne kanály) odkaz na stránku sa nezobrazil https://test.ton.org/download.html, kde sa nachádzajú:
ton-test-liteclient-full.tar.xz — zdroje svetelného klienta pre testovaciu sieť TON;
ton-lite-client-test1.config.json — konfiguračný súbor na pripojenie k testovacej sieti;
README — informácie o budovaní a spustení klienta;
AKO — podrobné pokyny na vytvorenie inteligentnej zmluvy pomocou klienta;
ton.pdf — aktualizovaný dokument (z 2. marca 2019) s technickým prehľadom siete TON;
tvm.pdf — technický popis TVM (Virtuálny stroj TON, virtuálny stroj TON);
tblkch.pdf — technický popis blockchainu TON;
piaty základ.pdf — popis nového jazyka Fift, určeného na vytváranie smart kontraktov v TON.

Opakujem, neexistovalo žiadne oficiálne potvrdenie stránky a všetkých týchto dokumentov z Telegramu, ale objem týchto materiálov ich robí celkom hodnovernými. Spustite publikovaného klienta na vlastné riziko.

Vytvorenie testovacieho klienta

Najprv skúsme zostaviť a spustiť testovacieho klienta – našťastie, README podrobne popisuje tento jednoduchý proces. Urobím to pomocou macOS 10.14.5 ako príklad; nemôžem ručiť za úspech zostavenia na iných systémoch.

  1. Stiahnite a rozbaľte zdrojový archív. Je dôležité stiahnuť si najnovšiu verziu, pretože v tejto fáze nie je zaručená spätná kompatibilita.

  2. Uistite sa, že v systéme sú nainštalované najnovšie verzie make, cmake (verzia 3.0.2 alebo vyššia), OpenSSL (vrátane hlavičkových súborov C), g++ alebo clang. Nemusel som nič inštalovať, všetko bolo hneď.

  3. Predpokladajme, že zdroje sú rozbalené do priečinka ~/lite-client. Oddelene od neho vytvorte prázdny priečinok pre zostavený projekt (napr. ~/liteclient-build), az toho (cd ~/liteclient-build) zavolajte príkazy:

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

    Testovací klient TON (Telegram Open Network) a nový jazyk Fift pre smart kontrakty

    Na vybudovanie tlmočníka jazyka Fift pre inteligentné zmluvy (viac o ňom nižšie) sme tiež zavolali

    cmake --build . --target fift

  4. Stiahnite si aktuálnu konfiguračný súbor pripojiť sa k testovacej sieti a vložiť ho do priečinka so zostaveným klientom.

  5. Úprava, môžete spustiť klienta:

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

Ak je všetko vykonané správne, mali by ste vidieť niečo takéto:

Testovací klient TON (Telegram Open Network) a nový jazyk Fift pre smart kontrakty

Ako vidíme, existuje niekoľko dostupných príkazov:
help — zobraziť tento zoznam príkazov;
quit - Choď von;
time — zobraziť aktuálny čas na serveri;
status — zobraziť stav pripojenia a lokálnej databázy;
last — aktualizovať stav blockchainu (stiahnuť posledný blok). Je dôležité spustiť tento príkaz pred akýmikoľvek požiadavkami, aby ste si boli istí, že vidíte aktuálny stav siete.
sendfile <filename> — nahrajte lokálny súbor do siete TON. Takto dochádza k interakcii so sieťou – vrátane napríklad vytvárania nových inteligentných zmlúv a žiadostí o prevod prostriedkov medzi účtami;
getaccount <address> — zobraziť aktuálny (v čase vykonania príkazu) last) stav účtu so zadanou adresou;
privkey <filename> — načítať súkromný kľúč z lokálneho súboru.

Ak pri spustení klienta do neho prenesiete priečinok pomocou voľby -D, potom do neho pridá posledný blok masterchainu:

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

Teraz môžeme prejsť k zaujímavejším veciam – naučiť sa jazyk Fift, skúsiť zostaviť smart kontrakt (napríklad si vytvoriť testovaciu peňaženku), nahrať ju na sieť a vyskúšať si prevod financií medzi účtami.

Jazyková piata

Z dokumentu piaty základ.pdf môžete zistiť, že tím Telegramu vytvoril nový jazyk zásobníka na vytváranie inteligentných zmlúv Päť (zrejme z čísla piaty, podobne ako Forth, jazyk, s ktorým má Fifth veľa spoločného).

Dokument je pomerne objemný, má 87 strán a jeho obsah nebudem v rámci tohto článku podrobne prepisovať (aspoň preto, že som ho sám nedočítal :). Zameriam sa na hlavné body a uvediem niekoľko príkladov kódu v tomto jazyku.

Na základnej úrovni je syntax Fift celkom jednoduchá: jej kód pozostáva z slová, zvyčajne oddelené medzerami alebo zalomením riadkov (špeciálny prípad: niektoré slová za sebou nevyžadujú oddeľovač). akýkoľvek слово je sekvencia znakov rozlišujúca veľkosť písmen, ktorá zodpovedá určitému určenie (približne, čo by mal tlmočník urobiť, keď na toto slovo narazí). Ak neexistuje žiadna definícia slova, tlmočník sa ho pokúsi analyzovať ako číslo a vložiť ho do zásobníka. Mimochodom, čísla sú tu - zrazu - 257-bitové celé čísla a neexistujú vôbec žiadne zlomky - presnejšie, okamžite sa zmenia na pár celých čísel, ktoré tvoria čitateľ a menovateľ racionálneho zlomku.

Slová majú tendenciu interagovať s hodnotami v hornej časti zásobníka. Samostatný typ slov - predpona — nepoužíva zásobník, ale nasledujúce znaky zo zdrojového súboru. Napríklad takto sú implementované reťazcové literály - znak citácie (") je predponové slovo, ktoré hľadá nasledujúci (záverečný) úvodzovky a vkladá reťazec medzi ne do zásobníka. Jednovrstvové vložky sa správajú rovnakým spôsobom (//) a viacriadkový (/*) komentáre.

Tu končí takmer celá vnútorná štruktúra jazyka. Všetko ostatné (vrátane konštruktov riadenia) je definované ako slová (buď interné, ako sú aritmetické operácie a definícia nových slov; alebo definované v "štandardnej knižnici" Fift.fif, ktorý sa nachádza v priečinku crypto/fift v zdrojoch).

Jednoduchý príklad programu v Fifte:

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

Prvý riadok definuje nové slovo setxy (všimnite si predponu {, čím sa vytvorí blok pred uzávierkou } a predpona :, čo vlastne toto slovo definuje). setxy vezme číslo z hornej časti zásobníka, definuje (alebo predefinuje) ho ako globálne konštantný xa druhá mocnina tohto čísla ako konštanta y (Vzhľadom na to, že hodnoty konštánt sa dajú predefinovať, skôr by som ich nazval premenné, ale riadim sa konvenciou pomenovania v jazyku).

Nasledujúce dva riadky umiestnia číslo na zásobník a dorovnajú setxy, potom sa zobrazia hodnoty konštánt x, y (slovo sa používa pre výstup .), obe konštanty sa umiestnia do zásobníka, sčítajú sa a výsledok sa tiež vytlačí. V dôsledku toho uvidíme:

3 9 12 ok
7 49 56 ok

(Riadok „ok“ vytlačí tlmočník, keď dokončí spracovanie aktuálneho riadku v režime interaktívneho vstupu)

No, úplný príklad kódu:

"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

Tento strašidelne vyzerajúci súbor je určený na vytvorenie inteligentnej zmluvy – umiestni sa do súboru new-wallet-query.boc po vykonaní. Upozorňujeme, že pre TON Virtual Machine je tu použitý iný jazyk symbolických inštrukcií (nebudem sa mu podrobne venovať), ktorého návod bude umiestnený na blockchaine.

Assembler pre TVM je teda napísaný v Fifte - zdroje tohto assembleru sú v súbore crypto/fift/Asm.fif a sú spojené na začiatku vyššie uvedeného kódu.

Čo môžem povedať, Nikolai Durov zjavne miluje vytváranie nových programovacích jazykov :)

Vytvorenie inteligentnej zmluvy a interakcia so spoločnosťou TON

Predpokladajme teda, že sme zostavili klienta TON a tlmočníka Fift podľa vyššie uvedeného popisu a oboznámili sa s jazykom. Ako teraz vytvoriť inteligentnú zmluvu? Toto je popísané v súbore AKO, priložený k prameňom.

Účty v TON

Ako som opísal v recenzia TON, táto sieť obsahuje viac ako jeden blockchain – existuje jeden spoločný, tzv. "hlavný reťazec", ako aj ľubovoľný počet ďalších "pracovných reťazcov", identifikovaných 32-bitovým číslom. Masterchain má identifikátor -1, okrem neho je možné použiť aj „základný“ pracovný reťazec s identifikátorom 0. Každý pracovný reťazec môže mať svoju konfiguráciu. Interne je každý pracovný reťazec rozdelený na shardchainy, ale toto je detail implementácie, ktorý netreba mať na pamäti.

V rámci jedného pracovného reťazca je uložených veľa účtov, ktoré majú svoje vlastné identifikátory account_id. Pre hlavný reťazec a nulový pracovný reťazec majú dĺžku 256 bitov. Identifikátor účtu sa teda zapíše napríklad takto:

-1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Toto je „surový“ formát: najprv ID pracovného reťazca, potom dvojbodka a ID účtu v šestnástkovej sústave.

Okrem toho existuje skrátený formát - číslo pracovného reťazca a adresa účtu sú zakódované v binárnej podobe, pridá sa k nim kontrolný súčet a to všetko je zakódované v Base64:

Ef+BVndbeTJeXWLnQtm5bDC2UVpc0vH2TF2ksZPAPwcODSkb

Keď poznáme tento formát záznamu, môžeme si vyžiadať aktuálny stav účtu prostredníctvom testovacieho klienta pomocou príkazu

getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Dostaneme niečo takéto:

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

Vidíme štruktúru, ktorá je uložená v DHT zadaného pracovného reťazca. Napríklad v teréne storage.balance je stav bežného účtu, v storage.state.code - kód inteligentnej zmluvy a in storage.state.data - jeho aktuálne údaje. Upozorňujeme, že dátové úložisko TON – Bunka, bunky – je stromové, každá bunka môže mať svoje vlastné údaje aj podradené bunky. Toto je zobrazené ako odsadenie v posledných riadkoch.

Budovanie inteligentnej zmluvy

Teraz si takúto štruktúru vytvoríme sami (nazýva sa BOC - vrece buniek) pomocou piateho jazyka. Našťastie nemusíte písať inteligentnú zmluvu sami - do priečinka crypto/block existuje súbor zo zdrojového archívu new-wallet.fif, ktorý nám pomôže vytvoriť novú peňaženku. Skopírujeme ho do priečinka so zostaveným klientom (~/liteclient-build, ak ste postupovali podľa vyššie uvedených pokynov). Jeho obsah som citoval vyššie ako príklad kódu na Fift.

Vykonajte tento súbor nasledovne:

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

Tu <source-directory> musí byť nahradený cestou k rozbaleným zdrojom (symbol „~“ tu, žiaľ, nemožno použiť, je potrebná úplná cesta). Namiesto použitia kľúča -I môžete definovať premennú prostredia FIFTPATH a vložte do nej túto cestu.

Odkedy sme spustili Fift s názvom súboru new-wallet.fif, vykoná ho a ukončí sa. Ak vynecháte názov súboru, môžete sa s tlmočníkom hrať interaktívne.

Po spustení by sa v konzole malo zobraziť niečo takéto:

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)

To znamená, že peňaženka s ID -1:4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2 (alebo čo je to isté, 0f9PzVILj8yglrVn1zS-NSjtxr7QBfaTCp7JrBqnFPIR8nhZ) úspešne vytvorený. Príslušný kód bude v súbore new-wallet-query.boc, jeho adresa je v new-wallet.addra súkromný kľúč je vložený new-wallet.pk (pozor - opätovným spustením skriptu sa tieto súbory prepíšu).

Sieť TON o tejto peňaženke samozrejme ešte nevie, je uložená len vo forme týchto súborov. Teraz ho treba nahrať do siete. Problém je však v tom, že na vytvorenie smart kontraktu je potrebné zaplatiť províziu a zostatok na účte je stále nulový.

V pracovnom režime sa tento problém vyrieši nákupom gramov na burze (alebo prevodom z inej peňaženky). No a v aktuálnom testovacom režime vznikol špeciálny smart kontrakt, z ktorého si môžete len tak vypýtať až 20 gramov.

Generovanie požiadavky na inteligentnú zmluvu niekoho iného

Zadávame požiadavku na inteligentnú zmluvu, ktorá takto distribuuje gramy vľavo a vpravo. V tom istom priečinku crypto/block nájsť súbor 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

Uložíme ho aj do priečinka so zostaveným klientom, ale opravíme piaty riadok - pred riadkom “constant dest_addr". Nahraďte ju adresou peňaženky, ktorú ste si predtým vytvorili (plná, nie skrátená). Na začiatok nie je potrebné písať „-1:“, namiesto toho na začiatok uveďte „0x“.

Môžete tiež zmeniť riadok 6.666 Gram*/ constant amount — toto je množstvo v gramoch, ktoré požadujete (nie viac ako 20). Aj keď zadáte celé číslo, ponechajte desatinnú čiarku.

Nakoniec musíte linku opraviť 0x00000011 constant seqno. Prvé číslo je tu aktuálne poradové číslo, ktoré je uložené na účte, ktorý vydáva gramy. Odkiaľ to môžem získať? Ako je uvedené vyššie, spustite klienta a spustite:

last
getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Na samom konci budú dáta inteligentnej zmluvy obsahovať

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

Číslo 0000000D (vaše bude väčšie) je poradové číslo, ktoré treba nahradiť testgiver.fif.

To je všetko, uložte súbor a spustite (./crypto/fift testgiver.fif). Výstupom bude súbor wallet-query.boc. Toto je to, čo sa tvorí сообщение na inteligentnú zmluvu niekoho iného - žiadosť „preneste toľko gramov na taký a taký účet“.

Pomocou klienta ho nahráme do siete:

> 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

Ak teraz zavoláte last, a potom znova požiadať o stav účtu, z ktorého sme pýtali gramy, potom by sme mali vidieť, že jeho poradové číslo sa zvýšilo o jednotku - to znamená, že poslal peniaze na náš účet.

Zostáva posledný krok - stiahnuť si kód našej peňaženky (jej zostatok je už doplnený, ale bez kódu smart kontraktu to nezvládneme). Vykonávame sendfile new-wallet-query.boc - a je to, v sieti TON máte vlastnú peňaženku (aj keď zatiaľ len skúšobnú).

Vytváranie odchádzajúcich transakcií

Na prevod peňazí zo zostatku vytvoreného účtu existuje súbor crypto/block/wallet.fif, ktorý je tiež potrebné umiestniť do priečinka so zostaveným klientom.

Podobne ako v predchádzajúcich krokoch je potrebné upraviť sumu, ktorú prenášate, adresu príjemcu (dest_addr) a seqno vašej peňaženky (po inicializácii peňaženky sa rovná 1 a po každej odchádzajúcej transakcii sa zvýši o 1 – môžete zobrazíte ho vyžiadaním si stavu svojho účtu). Na testy môžete použiť napríklad moju peňaženku - 0x4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2.

Na začiatku (./crypto/fift wallet.fif) skript zo súborov vezme adresu vašej peňaženky (odkiaľ prenášate) a jej súkromný kľúč new-wallet.addr и new-wallet.pka prijatá správa bude zapísaná na new-wallet-query.boc.

Rovnako ako predtým, ak chcete priamo vykonať transakciu, zavolajte sendfile new-wallet-query.boc v klientovi. Potom nezabudnite aktualizovať stav blockchainu (last) a skontrolujte, či sa zmenil zostatok a seqno našej peňaženky (getaccount <account_id>).

Testovací klient TON (Telegram Open Network) a nový jazyk Fift pre smart kontrakty

To je všetko, teraz môžeme v TON vytvárať smart kontrakty a posielať im požiadavky. Ako vidíte, súčasná funkcionalita už postačuje napríklad na vytvorenie prívetivejšej peňaženky s grafickým rozhraním (predpokladá sa však, že už bude dostupná ako súčasť messengeru).

Do prieskumu sa môžu zapojiť iba registrovaní užívatelia. Prihlásiť saProsím.

Máte záujem pokračovať v článkoch analýzou TON, TVM, Fift?

  • Áno, čakám na dokončenie série článkov so všeobecným prehľadom o TON

  • Áno, je zaujímavé prečítať si viac o jazyku Fift

  • Áno, chcem sa dozvedieť viac o virtuálnom stroji TON a jeho assembleri

  • Nie, nič z toho nie je zaujímavé

Hlasovalo 39 užívateľov. 12 užívateľov sa zdržalo hlasovania.

Čo si myslíte o plánoch Telegramu spustiť TON?

  • Do tohto projektu vkladám veľké nádeje

  • Len so záujmom sledujem jeho vývoj.

  • Som skeptický a pochybujem o jeho úspechu.

  • Som naklonený považovať túto iniciatívu za neúspešnú a pre široké masy zbytočnú

Hlasovalo 47 užívateľov. 12 užívateľov sa zdržalo hlasovania.

Zdroj: hab.com

Pridať komentár