Tesztelje a TON klienst (Telegram Open Network) és az új Fift nyelvet az intelligens szerződésekhez

Több mint egy éve vált ismertté a Telegram messenger terve, hogy kiadja saját decentralizált hálózatát. Nyissa meg a hálózati táviratot. Aztán elérhetővé vált egy terjedelmes műszaki dokumentum, amelyet állítólag Nyikolaj Durov írt, és leírta a jövőbeli hálózat felépítését. Aki lemaradt róla, annak javaslom, hogy olvassa el erről a dokumentumról szóló átbeszélésemet (Part 1, Part 2; a harmadik rész sajnos még mindig huzatban gyűjti a port).

Azóta nem érkezett jelentős hír a TON fejlesztésének helyzetéről egészen pár napja (az egyikben nem hivatalos csatornák) az oldalra mutató hivatkozás nem jelent meg https://test.ton.org/download.html, hol találhatók:
ton-test-liteclient-full.tar.xz — egy könnyű kliens forrásai a TON teszthálózathoz;
ton-lite-client-test1.config.json — konfigurációs fájl a teszthálózathoz való csatlakozáshoz;
README — az ügyfél felépítésével és elindításával kapcsolatos információk;
HOGYAN KELL — lépésről lépésre intelligens szerződés létrehozására vonatkozó utasítások ügyfél használatával;
ton.pdf — frissített dokumentum (2. március 2019-án) a TON hálózat műszaki áttekintésével;
tvm.pdf — a TVM (TON Virtual Machine, TON virtuális gép) műszaki leírása;
tblkch.pdf — a TON blokklánc műszaki leírása;
fivebase.pdf — az új Fift nyelv leírása, amelyet intelligens szerződések létrehozására terveztek TON-ban.

Ismétlem, a Telegram oldaláról és ezekről a dokumentumokról nem érkezett hivatalos megerősítés, de ezeknek az anyagoknak a terjedelme meglehetősen hihetővé teszi őket. Indítsa el a közzétett klienst saját felelősségére.

Tesztkliens felépítése

Először próbáljunk meg felépíteni és futtatni egy tesztklienst – szerencsére README részletesen leírja ezt az egyszerű folyamatot. Példaként a macOS 10.14.5-tel fogom megtenni; nem garantálhatom a más rendszerekre való felépítés sikerét.

  1. Töltse le és csomagolja ki forrás archívum. Fontos, hogy töltse le a legújabb verziót, mivel a visszamenőleges kompatibilitás ebben a szakaszban nem garantált.

  2. Győződjön meg arról, hogy a make, cmake (3.0.2 vagy újabb verzió), OpenSSL (beleértve a C fejlécfájlokat), g++ vagy clang legújabb verziói telepítve vannak a rendszeren. Nem kellett semmit telepítenem, minden egyből összejött.

  3. Tegyük fel, hogy a források egy mappába vannak kicsomagolva ~/lite-client. Ettől külön hozzon létre egy üres mappát az összeállított projekt számára (például ~/liteclient-build), és abból (cd ~/liteclient-build) hívja a parancsokat:

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

    Tesztelje a TON klienst (Telegram Open Network) és az új Fift nyelvet az intelligens szerződésekhez

    Az intelligens szerződésekhez készült Fift nyelvi tolmács elkészítéséhez (erről bővebben lentebb) hívunk

    cmake --build . --target fift

  4. Töltse le az aktuálisat konfigurációs fájl hogy csatlakozzon a teszthálózathoz, és tegye azt a mappába az összeállított klienssel.

  5. csinált, elindíthatja a klienst:

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

Ha mindent helyesen csinált, akkor valami ilyesmit kell látnia:

Tesztelje a TON klienst (Telegram Open Network) és az új Fift nyelvet az intelligens szerződésekhez

Amint látjuk, kevés parancs áll rendelkezésre:
help — jelenítse meg a parancsok listáját;
quit - eljár szórakozni;
time — az aktuális idő megjelenítése a szerveren;
status — a kapcsolat és a helyi adatbázis állapotának megjelenítése;
last — frissítse a blokklánc állapotát (az utolsó blokk letöltése). Fontos, hogy ezt a parancsot minden kérés előtt lefuttassa, hogy biztosan látja a hálózat aktuális állapotát.
sendfile <filename> — helyi fájl feltöltése a TON hálózatra. Így történik a hálózattal való interakció – beleértve például új intelligens szerződések létrehozását és a számlák közötti pénzátutalási kérelmeket;
getaccount <address> - az aktuális állapot megjelenítése (a parancs végrehajtásának időpontjában) last) a megadott címmel rendelkező számla állapota;
privkey <filename> — betölti a privát kulcsot egy helyi fájlból.

Ha a kliens indításakor az opció segítségével mappát visz át rá -D, majd hozzáadja a mesterlánc utolsó blokkját:

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

Most továbbléphetünk az érdekesebb dolgokra - tanulja meg a Fift nyelvet, próbáljon össze egy intelligens szerződést (például hozzon létre egy tesztpénztárcát), töltse fel a hálózatra, és próbálja meg átutalni a számlák között.

Nyelv Ötödik

Dokumentumból fivebase.pdf megtudhatja, hogy a Telegram csapata új veremnyelvet hozott létre az intelligens szerződések létrehozásához Ötödik (nyilván a számból ötödik, hasonló a Forth-hoz, amely nyelvhez az ötödik sok közös jellemző).

A dokumentum meglehetősen terjedelmes, 87 oldalas, és ennek a cikknek a keretein belül nem írom le részletesen a tartalmát (legalábbis azért, mert magam sem fejeztem be az olvasást :). A főbb pontokra összpontosítok, és adok néhány kódpéldát ezen a nyelven.

Alapszinten a Fift szintaxisa meglehetősen egyszerű: kódja a következőkből áll szavak, általában szóközzel vagy sortöréssel elválasztva (speciális eset: egyes szavak nem igényelnek elválasztót maguk után). Bármi слово kis- és nagybetűket megkülönböztető karaktersorozat, amely megfelel egy bizonyosnak определение (nagyjából mit kell tennie a tolmácsnak, ha találkozik ezzel a szóval). Ha egy szónak nincs definíciója, az értelmező megpróbálja számként elemezni, és a verembe helyezni. A számok itt egyébként - hirtelen - 257 bites egészek, és törtek egyáltalán nincsenek - pontosabban azonnal egész számok párjává alakulnak, egy racionális tört számlálóját és nevezőjét alkotva.

A szavak általában kölcsönhatásba lépnek a verem tetején lévő értékekkel. Külön típusú szavak - előtag — nem a veremet használja, hanem a forrásfájl következő karaktereit. Például így valósulnak meg a string literálok - az idézőjel (") egy előtag, amely a következő (záró) idézetet keresi, és a köztük lévő karakterláncot a verembe tolja. Az egysorosok ugyanúgy viselkednek (//) és többsoros (/*) Hozzászólások.

Itt ér véget a nyelv szinte teljes belső szerkezete. Minden más (beleértve a vezérlőkonstrukciókat is) szavakként van definiálva (vagy belső, például aritmetikai műveletek és új szavak meghatározása; vagy a "szabványkönyvtár"-ban van meghatározva. Fift.fif, amely a mappában található crypto/fift a forrásokban).

Egy egyszerű példaprogram a Fiftben:

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

Az első sor egy új szót határoz meg setxy (jegyezd meg az előtagot {, amely egy blokkot hoz létre a záró előtt } és előtag :, amely valójában meghatározza a szót). setxy átvesz egy számot a verem tetejéről, globálisként határozza meg (vagy újradefiniálja). állandó x, és ennek a számnak a négyzete állandó y (Tekintettel arra, hogy az állandók értékei újradefiniálhatók, inkább változóknak nevezném őket, de követem a nyelv elnevezési konvencióját).

A következő két sorban tegyen egy számot a verembe, és hívjon setxy, akkor megjelennek az állandók értékei x, y (a szót a kimenetre használják .), mindkét konstans a verembe kerül, összegezve, és az eredményt is kinyomtatja. Ennek eredményeként látni fogjuk:

3 9 12 ok
7 49 56 ok

(Az „ok” sort a tolmács kinyomtatja, amikor befejezi az aktuális sor feldolgozását interaktív beviteli módban)

Nos, egy teljes kód példa:

"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

Ez a félelmetes kinézetű fájl egy intelligens szerződés létrehozására szolgál - fájlba kerül new-wallet-query.boc a végrehajtás után. Kérjük, vegye figyelembe, hogy itt egy másik assembly nyelvet használnak a TON Virtual Machine-hez (nem részletezem), aminek az utasításai a blokkláncra kerülnek.

Így a TVM assemblerje Fiftben van írva - ennek az assemblernek a forrásai a fájlban találhatók crypto/fift/Asm.fif és a fenti kódrészlet elején kapcsolódnak össze.

Mit mondjak, úgy tűnik, Nikolai Durov csak szeret új programozási nyelveket készíteni :)

Intelligens szerződés létrehozása és interakció a TON-nal

Tehát tegyük fel, hogy a fent leírtak szerint összeállítottuk a TON klienst és a Fift tolmácsot, és megismerkedtünk a nyelvvel. Hogyan hozzunk létre okos szerződést most? Ez le van írva a fájlban HOGYAN KELL, csatolva a forrásokhoz.

Számlák TON nyelven

Ahogy leírtam ben TON áttekintés, ez a hálózat egynél több blokkláncot tartalmaz - van egy közös, az ún. „főlánc”, valamint tetszőleges számú további „munkalánc”, amelyeket egy 32 bites szám azonosít. A masterchain azonosítója -1, ezen kívül használható egy 0 azonosítójú „alap” munkalánc is, minden munkaláncnak saját konfigurációja lehet. Belsőleg minden munkalánc shardchainekre van felosztva, de ez egy olyan megvalósítási részlet, amelyet nem kell szem előtt tartani.

Egy munkaláncon belül sok fiók van tárolva, amelyek saját account_id azonosítóval rendelkeznek. A főlánc és a nulla munkalánc esetében 256 bit hosszúak. Így a számlaazonosítót például így írják:

-1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Ez a „nyers” formátum: először a munkalánc-azonosító, majd a kettőspont, és a fiókazonosító hexadecimális jelöléssel.

Ezenkívül van egy rövidített formátum is - a munkalánc számát és a fiókcímet bináris formában kódolják, egy ellenőrző összeget adnak hozzájuk, és mindezt a Base64 kódolja:

Ef+BVndbeTJeXWLnQtm5bDC2UVpc0vH2TF2ksZPAPwcODSkb

Ennek a rekordformátumnak a ismeretében a parancs segítségével lekérhetjük egy fiók aktuális állapotát egy tesztkliensen keresztül

getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Valami ilyesmit fogunk kapni:

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

Látjuk azt a struktúrát, amely a megadott munkalánc DHT-jában van tárolva. Például terepen storage.balance a folyószámla egyenlege, in storage.state.code - intelligens szerződés kódja, és be storage.state.data - aktuális adatai. Felhívjuk figyelmét, hogy a TON adattár - Cell, cellák - faszerű, minden cellának lehetnek saját adatai és gyermekcellák. Ez behúzásként jelenik meg az utolsó sorokban.

Okos szerződés felépítése

Most hozzunk létre magunk egy ilyen struktúrát (ezt BOC-nak hívják - zsák sejt) a Fift nyelv használatával. Szerencsére nem kell magának okos szerződést írnia - a mappába crypto/block van egy fájl a forrásarchívumból new-wallet.fif, ami segít létrehozni egy új pénztárcát. Másoljuk be a mappába az összeállított klienssel (~/liteclient-build, ha követte a fenti utasításokat). Ennek tartalmát fentebb idéztem a Fift kód példájaként.

Futtassa ezt a fájlt a következőképpen:

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

Itt <source-directory> helyére a kicsomagolt források elérési útját kell írni (a „~” szimbólum itt sajnos nem használható, a teljes elérési út szükséges). Kulcs használata helyett -I környezeti változót definiálhat FIFTPATH és tedd bele ezt az utat.

Mióta elindítottuk a Fiftet a fájlnévvel new-wallet.fif, akkor végrehajtja és kilép. Ha kihagyja a fájl nevét, interaktívan játszhat a tolmácskal.

A végrehajtás után valami ilyesminek kell megjelennie a konzolon:

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)

Ez azt jelenti, hogy a pénztárca az azonosítóval -1:4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2 (vagy mi ugyanaz, 0f9PzVILj8yglrVn1zS-NSjtxr7QBfaTCp7JrBqnFPIR8nhZ) sikeresen létrehozva. A megfelelő kód a fájlban lesz new-wallet-query.boc, a címe benne van new-wallet.addr, és a privát kulcs benne van new-wallet.pk (legyen óvatos - a szkript újra futtatása felülírja ezeket a fájlokat).

Természetesen a TON hálózat még nem tud erről a pénztárcáról, csak ezen fájlok formájában tárolja. Most fel kell tölteni a hálózatra. A probléma azonban az, hogy egy intelligens szerződés létrehozásához jutalékot kell fizetnie, és a számlaegyenleg továbbra is nulla.

Működési módban ez a probléma megoldható grammok cseréjével (vagy másik pénztárcáról történő átvitellel). Nos, a jelenlegi tesztüzemmódban egy speciális okosszerződés készült, amiből akár 20 grammot is el lehet kérni csak úgy.

Kérelem generálása valaki más intelligens szerződéséhez

Kérünk egy okos szerződést, amely így osztja el a grammokat balra és jobbra. Ugyanabban a mappában crypto/block fájl keresése 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

Elmentjük az összeállított kliens mappájába is, de az ötödik sort javítjuk - a „ sor előttconstant dest_addr". Cseréljük ki a korábban létrehozott pénztárca címére (teljes, nem rövidítve). Nem kell az elejére „-1:”-t írni, hanem a „0x”-t az elejére.

A vonalat is módosíthatja 6.666 Gram*/ constant amount — ez az Ön által kért mennyiség grammban (legfeljebb 20). Ha egész számot ad meg, hagyja meg a tizedesvesszőt.

Végül ki kell javítania a vonalat 0x00000011 constant seqno. Az első szám itt az aktuális sorszám, amely a számlát kibocsátó grammban tárolja. Honnan szerezhetem be? A fent leírtak szerint indítsa el az ügyfelet, és futtassa:

last
getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

A legvégén az intelligens szerződés adatai tartalmazni fogják

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

A 0000000D szám (a tiéd nagyobb lesz) az a sorszám, amelyet be kell cserélni testgiver.fif.

Ennyi, mentse el a fájlt és futtassa (./crypto/fift testgiver.fif). A kimenet egy fájl lesz wallet-query.boc. Ez az, ami kialakul сообщение valaki más intelligens szerződésére - egy kérés, hogy „annyi grammot utaljon át egy ilyen és egy ilyen számlára”.

A kliens segítségével feltöltjük a hálózatra:

> 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

Ha most hívsz last, majd ismét lekérjük annak a számla állapotát, ahonnan grammot kértünk, akkor látnunk kell, hogy a sorszáma eggyel nőtt - ez azt jelenti, hogy pénzt küldött a számlánkra.

Marad az utolsó lépés - töltse le pénztárcánk kódját (egyenlege már feltöltődött, de az okosszerződés kódja nélkül nem tudjuk kezelni). végzünk sendfile new-wallet-query.boc - és ennyi, van saját pénztárcája a TON hálózatban (még akkor is, ha ez egyelőre csak teszt).

Kimenő tranzakciók létrehozása

A létrehozott számla egyenlegéről történő pénz átutalásához van egy fájl crypto/block/wallet.fif, amelyet szintén el kell helyezni a mappába az összeállított klienssel.

Az előző lépésekhez hasonlóan módosítania kell az átutalt összeget, a címzett címét (dest_addr) és a pénztárcája sorrendjét (ez egyenlő a pénztárca inicializálása után 1-gyel, és minden kimenő tranzakció után 1-gyel nő - megtekintheti fiókja állapotának lekérésével). A tesztekhez használhatja például a pénztárcámat - 0x4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2.

Indításkor (./crypto/fift wallet.fif) a szkript kiveszi a pénztárcája címét (ahonnan átviszi) és a privát kulcsát a fájlokból new-wallet.addr и new-wallet.pk, és a kapott üzenet a következő címre lesz írva new-wallet-query.boc.

Mint korábban, a tranzakció közvetlen végrehajtásához hívja sendfile new-wallet-query.boc az ügyfélben. Ezek után ne felejtse el frissíteni a blokklánc állapotát (last) és ellenőrizze, hogy megváltozott-e a pénztárcánk egyenlege és sorrendje (getaccount <account_id>).

Tesztelje a TON klienst (Telegram Open Network) és az új Fift nyelvet az intelligens szerződésekhez

Ez minden, most már létrehozhatunk intelligens szerződéseket a TON-ban, és kéréseket küldhetünk nekik. Mint látható, a jelenlegi funkcionalitás már elég ahhoz, hogy például grafikus felülettel barátságosabb pénztárcát készítsünk (azonban várhatóan már a messenger részeként is elérhető lesz).

A felmérésben csak regisztrált felhasználók vehetnek részt. Bejelentkezés, kérem.

Érdekli a cikkek folytatása a TON, TVM, Fift elemzésével?

  • Igen, várom a TON általános áttekintését tartalmazó cikksorozat befejezését

  • Igen, érdekes többet olvasni a Fift nyelvről

  • Igen, szeretnék többet megtudni a TON Virtual Machine-ről és az összeszerelőről

  • Nem, ezek egyike sem érdekes

39 felhasználó szavazott. 12 felhasználó tartózkodott.

Mi a véleménye a Telegram TON elindításának terveiről?

  • Nagy reményeket fűzök ehhez a projekthez

  • Csak érdeklődve követem a fejlődését.

  • Szkeptikus vagyok, és kétlem a sikerét.

  • Hajlamos vagyok ezt a kezdeményezést kudarcnak és a széles tömegek számára szükségtelennek tekinteni

47 felhasználó szavazott. 12 felhasználó tartózkodott.

Forrás: will.com

Hozzászólás