Xerîdar TON (Tora Vekirî ya Telegram) û zimanê nû yê Pênc ji bo peymanên jîr ceribandin

Zêdetirî salek berê, di derbarê plansaziya peyamnêra Telegram de hate zanîn ku tora xwe ya nenavendî azad bike. Telegram Tora Vekirî. Dûv re belgeyek teknîkî ya berfireh peyda bû, ku tê îddîakirin ku ji hêla Nikolai Durov ve hatî nivîsandin û avahiya tora pêşerojê diyar kir. Ji bo kesên ku ew ji bîr kirine, ez pêşniyar dikim ku hûn vegotina min a vê belgeyê bixwînin (beş 1, beş 2; beşê sêyem, mixabin, hîn jî tozê di pêşnumayan de berhev dike).

Ji hingê ve, heya çend roj berê di derbarê rewşa pêşkeftina TON de nûçeyek girîng tunebû (di yek ji kanalên nefermî) lînka rûpelê xuya nebû https://test.ton.org/download.html, li ku derê ne:
ton-test-liteclient-full.tar.xz - çavkaniyên xerîdarek sivik ji bo tora ceribandina TON;
ton-lite-client-test1.config.json - pelê veavakirinê ji bo girêdana bi tora ceribandinê;
BIXWÎNE - agahdariya di derbarê avakirin û destpêkirina xerîdar de;
ÇAWA - talîmatên gav-bi-gav li ser afirandina peymanek biaqil bi karanîna xerîdar;
ton.pdf - Belgeya nûvekirî (dîrok 2ê Adar, 2019) bi nêrînek teknîkî ya tora TON;
tvm.pdf - Danasîna teknîkî ya TVM (Ton Virtual Machine, TON virtual machine);
tblkch.pdf - Danasîna teknîkî ya bloka TON;
fifthbase.pdf - Danasîna zimanê nû ya Fift, ku ji bo afirandina peymanên biaqil di TON de hatî çêkirin.

Ez dubare dikim, ji hêla Telegramê ve tu piştrastkirina fermî ya rûpel û van hemî belgeyan tune bû, lê qebareya van materyalan wan pir maqûl dike. Muwekîlê weşandî dest pê bikin li ser rîska xwe.

Avakirina muwekîlê testê

Pêşîn, em hewl bidin ku xerîdarek ceribandinê ava bikin û bimeşînin - bextewar, BIXWÎNE vê pêvajoya hêsan bi berfirehî vedibêje. Ez ê vê yekê bi karanîna macOS 10.14.5 wekî mînak bikim; Ez nikarim serkeftina avakirina li ser pergalên din piştrast bikim.

  1. Daxistin û vekin arşîva çavkaniyê. Girîng e ku guhertoya herî dawî dakêşin ji ber ku lihevhatina paşverû di vê qonaxê de ne garantî ye.

  2. Piştrast bikin ku guhertoyên herî dawî yên make, cmake (guhertoya 3.0.2 an mezintir), OpenSSL (tevî pelên sernavê C), g++ an clang li ser pergalê hatine saz kirin. Ne hewce bû ku ez tiştek saz bikim, her tişt di cih de li hev hat.

  3. Ka em bihesibînin ku çavkanî di peldankek de têne vekêşandin ~/lite-client. Ji wê veqetandî, ji bo projeya berhevkirî peldankek vala biafirînin (mînak, ~/liteclient-build), û ji wê (cd ~/liteclient-build) bangî fermanan bikin:

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

    Xerîdar TON (Tora Vekirî ya Telegram) û zimanê nû yê Pênc ji bo peymanên jîr ceribandin

    Ji bo avakirina wergêrê zimanê Pêncşemê ji bo peymanên biaqil (bêtir li ser wê li jêr), em jî bang dikin

    cmake --build . --target fift

  4. Ya heyî dakêşin pelê veavakirinê da ku bi tora ceribandinê ve girêbide û wê bi xerîdarê berhevkirî re têxe peldanka.

  5. Çêbû, hûn dikarin xerîdar dest pê bikin:

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

Ger her tişt rast hatî çêkirin, divê hûn tiştek mîna vî bibînin:

Xerîdar TON (Tora Vekirî ya Telegram) û zimanê nû yê Pênc ji bo peymanên jîr ceribandin

Wekî ku em dibînin, çend ferman hene:
help - vê navnîşa fermanan nîşan bide;
quit - çûna der;
time - dema niha li ser serverê nîşan bide;
status - girêdan û rewşa databasa herêmî nîşan bide;
last - Rewşa zincîra blokê nûve bikin (bloka paşîn dakêşin). Girîng e ku hûn vê fermanê berî her daxwazekê bimeşînin da ku hûn pê ewle bin ku hûn rewşa heyî ya torê dibînin.
sendfile <filename> - pelek herêmî li tora TON barkirin. Bi vî rengî danûstendina bi torê re çêdibe - ji bo nimûne, afirandina peymanên nû yên jîr û daxwazên veguhastina drav di navbera hesaban de;
getaccount <address> - niha nîşan bide (di dema ku ferman hate bicîh kirin) last) rewşa hesabê bi navnîşana diyarkirî;
privkey <filename> - mifteya taybet ji pelek herêmî bar bikin.

Heke, dema ku xerîdar dest pê dike, hûn peldankek bi karanîna vebijarkê veguhezînin -D, wê hingê ew ê bloka paşîn a masterchain lê zêde bike:

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

Naha em dikarin ber bi tiştên balkêştir ve biçin - zimanê Fift fêr bibin, biceribînin ku peymanek jîr berhev bikin (mînak, berîka ceribandinê biafirînin), wê li torê bar bikin û biceribînin ku drav di navbera hesaban de veguhezînin.

Ziman Pênc

Ji belgeyê fifthbase.pdf hûn dikarin fêr bibin ku tîmê Telegram zimanek stackek nû afirandiye da ku peymanên biaqil biafirîne Fift (xuya ye ji jimare pêncem, dişibihe Forth, zimanek ku bi pêncemîn re pir hevpar e).

Belge pir hejmûn e, 87 rûpel e, û ez ê di çarçoveya vê gotarê de naveroka wê bi hûrgulî venebêjim (qet nebe ji ber ku min bixwe xwendina wê neqedandiye :). Ez ê li ser xalên sereke bisekinim û bi vî zimanî çend nimûneyên kodê bidim.

Di astek bingehîn de, hevoksaziya Fift pir hêsan e: koda wê ji wan pêk tê gotinên, bi gelemperî ji hêla valahiyan an veqetandina rêzan ve têne veqetandin (rewşa taybetî: hin peyvan li dû xwe veqetandek hewce nakin). Herçiyek gotina rêzikek hesas a tîpan e ku bi diyardeyekê re têkildar e biryardariyê (bi qasê, dema ku wergêr bi vê peyvê re rû bi rû bimîne divê çi bike). Ger pênaseya peyvê tune be, wergêr hewl dide wê wekî jimare parsek bike û bixe stêkê. Bi awayê, jimarên li vir - ji nişka ve - jimareyên 257-bit in, û qet perçe tune ne - bi rastî, ew tavilê vediguherin cotek jimaran, jimarvan û navdêrê perçeyek rasyonel pêk tînin.

Peyv mêl dikin ku bi nirxên li jorê stikê re têkilî daynin. Cûreyek peyvên cuda - pêşkîte - ne stikê, lê tîpên paşîn ên pelê çavkaniyê bikar tîne. Mînakî, bi vî rengî peyvên rêzikê têne bicîh kirin - karaktera quote (") peyveke pêşgir e ku li peyva paşîn (girtinê) digere, û rêzika di navbera wan de dixe ser stikê. Yek-liner bi heman rengî tevdigerin (//) û piralî (/*) şiroveyan.

Li vir hema hema tevahiya avahiya navxweyî ya ziman bi dawî dibe. Her tiştê din (tevlî avahiyên kontrolê) wekî peyvan têne pênase kirin (yan hundurîn, wekî karûbarên hejmarî û pênaseya peyvên nû; an jî di "pirtûkxaneya standard" de têne destnîşankirin. Fift.fif, ku di peldankê de ye crypto/fift di çavkaniyan de).

Bernameyek mînakek hêsan di Fift de:

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

Rêza yekem peyva nû diyar dike setxy (bala pêşgir {, ku berî ya girtina blokek diafirîne } û pêşgir :, ku bi rastî peyvê diyar dike). setxy jimareyek ji jorê stikê digire, wê wekî gerdûnî pênase dike (an jî ji nû ve pênase dike). çikyayî x, û çargoşeya vê hejmarê wekî sabit y (Ji ber ku nirxên domdar dikarin ji nû ve werin pênase kirin, ez ê ji wan re guhêrbar bi nav bikim, lê ez di ziman de peymana navkirinê dişopînim).

Du rêzên din jimareyek danî ser stûyê û gazî kirin setxy, wê hingê nirxên domdar têne xuyang kirin x, y (Peyva ji bo derketinê tê bikaranîn .), her du domdar li ser stikê têne danîn, têne kurt kirin, û encam jî tê çap kirin. Di encamê de em ê bibînin:

3 9 12 ok
7 49 56 ok

(Rêza "ok" ji hêla wergêr ve tê çap kirin dema ku ew hilberandina xeta heyî di moda têketina înteraktîf de diqedîne)

Welê, mînakek kodek tevahî:

"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

Ev pelê tirsnak ji bo afirandina peymanek hişmend e - ew ê di pelê de were danîn new-wallet-query.boc piştî darvekirinê. Ji kerema xwe ji bîr mekin ku zimanekî din ê meclîsê li vir ji bo Makîneya Virtual TON tê bikar anîn (ez ê bi hûrgulî li ser nesekinim), rêwerzên ku dê li ser zincîra blokê were danîn.

Bi vî rengî, komker ji bo TVM-ê di Fift-ê de hatî nivîsandin - çavkaniyên vê berhevokê di pelê de ne crypto/fift/Asm.fif û di destpêka koda jorîn de têne girêdan.

Ez dikarim çi bibêjim, xuya ye Nikolai Durov tenê ji afirandina zimanên bernamesaziyê yên nû hez dike :)

Afirandina peymanek biaqil û bi TON re têkilî daynin

Ji ber vê yekê, em bihesibînin ku me muwekîlê TON û wergêra Pêncşemê wekî ku li jor hatî destnîşan kirin berhev kiriye û bi ziman re nas kiriye. Meriv çawa nuha peymanek biaqil biafirîne? Ev di dosyayê de hatiye diyarkirin ÇAWA, bi çavkaniyan ve girêdayî ye.

Hesabên li TON

Wekî ku min tê de diyar kir TON review, di vê torê de bêtir ji yek blokek heye - yek hevpar heye, bi navê. "zincîra sereke", û her weha hejmarek kêfî ya "zincîrên kar" ên din, ku bi hejmarek 32-bit têne nas kirin. Di zincîra masterê de nasnameyek -1 heye, ji bilî wê, zincîra xebatê ya "bingeh" bi nasnavê 0 jî dikare were bikar anîn. Her zincîra kar dikare konfigurasyona xwe hebe. Di hundurê de, her zincîra xebatê di nav zincîran de tê dabeş kirin, lê ev hûrguliyek pêkanînê ye ku ne hewce ye ku li ber çavan were girtin.

Di nav yek zincîra xebatê de, gelek hesabên ku nasnameyên xwe yên account_id hene têne hilanîn. Ji bo zincîra master û zincîra kar sifir, ew 256 bit dirêj in. Bi vî rengî, nasnavê hesabê, wek nimûne, bi vî rengî tête nivîsandin:

-1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Ev forma "raw" e: pêşî nasnameya zincîra xebatê, dûv re kolonek, û nasnameya hesabê bi nîşana hexadecimal.

Wekî din, formek kurtkirî heye - jimareya zincîra xebatê û navnîşana hesabê di forma binary de têne kod kirin, kontrolek li wan tê zêdekirin, û ev hemî di Base64 de têne kod kirin:

Ef+BVndbeTJeXWLnQtm5bDC2UVpc0vH2TF2ksZPAPwcODSkb

Bi zanîna vê formata tomarê, em dikarin bi karanîna fermanê bi xerîdarek ceribandinê rewşa heyî ya hesabek daxwaz bikin

getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Em ê tiştek bi vî rengî bistînin:

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

Em avahiya ku di DHT ya zincîra xebatê ya diyarkirî de hatî hilanîn dibînin. Ji bo nimûne, li zeviyê storage.balance bîlançoya hesabê heyî ye, li storage.state.code - koda peymana jîr, û di storage.state.data - Daneyên wê yên heyî. Ji kerema xwe bala xwe bidin ku hilanîna daneya TON - Hucre, hucre - mîna darê ye, her şaneyek dikare hem daneya xwe û hem jî hucreyên zarokan hebin. Ev di rêzên paşîn de wekî vekêşanê tê nîşandan.

Avakirina peymanek jîr

Naha em bi xwe avahiyek wusa biafirînin (bi navê BOC - çenteyê hucreyan) bikaranîna zimanê Pênc. Xwezî, hûn ne hewce ne ku hûn bixwe peymanek jîr binivîsin - di peldankê de crypto/block pelek ji arşîva çavkanî heye new-wallet.fif, ku dê alîkariya me bike ku walletek nû çêbikin. Werin em wê li peldanka bi muwekîlê berhevkirî re kopî bikin (~/liteclient-build, heke we rêwerzên jorîn şopand). Min naveroka wê li jor wekî mînakek kodê li ser Fift destnîşan kir.

Vê pelê wekî jêrîn bicîh bikin:

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

Ev e <source-directory> divê bi riya çavkaniyên nepakkirî ve were guheztin (mixabin, sembola "~" li vir nayê bikar anîn, riya tevahî hewce ye). Li şûna bikaranîna key -I hûn dikarin guhêrbarek jîngehê diyar bikin FIFTPATH û vê rêyê têxe nav wê.

Ji ber ku me Pênc bi navê pelê dest pê kir new-wallet.fif, wê îcra bike û derkeve. Heke hûn navê pelê ji bîr nekin, hûn dikarin bi werger bi înteraktîf bilîzin.

Piştî darvekirinê, tiştek wusa divê di konsolê de were xuyang kirin:

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)

Ev tê wê wateyê ku berîka bi ID -1:4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2 (an jî heman çi ye, 0f9PzVILj8yglrVn1zS-NSjtxr7QBfaTCp7JrBqnFPIR8nhZ) bi serkeftî hate afirandin. Koda têkildar dê di pelê de be new-wallet-query.boc, navnîşana wî tê de ye new-wallet.addr, û mifteya taybet tê de ye new-wallet.pk (hişyar bin - ji nû ve vekirina skrîptê dê van pelan binivîsîne).

Bê guman, tora TON hîna li ser vê walletê nizane; ew tenê di forma van pelan de tê hilanîn. Niha pêdivî ye ku ew li torê were barkirin. Lêbelê, pirsgirêk ev e ku ji bo afirandina peymanek biaqil hûn hewce ne ku komîsyonek bidin, û balansa hesabê we hîn jî sifir e.

Di moda xebatê de, ev pirsgirêk dê bi kirîna gramên li ser danûstendinê (an veguheztina ji berîka din) were çareser kirin. Welê, di moda ceribandinê ya heyî de, peymanek hişmend a taybetî hate afirandin, ku hûn dikarin ji 20 gramên wusa bixwazin.

Hilberîna daxwazek ji peymana biaqil a kesek din re

Em daxwazek ji peymanek biaqil dikin ku gramên bi vî rengî çep û rast belav dike. Di heman peldankê de crypto/block pelê bibînin 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

Em ê wê di peldanka bi xerîdar a berhevkirî re jî hilînin, lê em ê rêza pêncemîn rast bikin - berî rêzê "constant dest_addr". Ka em wê bi navnîşana berîka ku we berê afirandiye (temam, ne kurtkirî) biguhezînin. Ne hewce ye ku di destpêkê de "-1:" were nivîsandin, li şûna wê "0x" li destpêkê were nivîsandin.

Hûn dikarin rêzê jî biguherînin 6.666 Gram*/ constant amount - ev mîqdara bi gram e ku hûn daxwaz dikin (ji 20 ne zêdetir). Ger hûn jimarek tevahî diyar bikin jî, xala dehiyê bihêlin.

Di dawiyê de, hûn hewce ne ku rêzê rast bikin 0x00000011 constant seqno. Hejmara yekem li vir jimareya rêza heyî ye, ku di gramên jimareya hesabê de tê hilanîn. Ez dikarim ji ku bistînim? Wekî ku li jor hatî destnîşan kirin, xerîdar dest pê bikin û bimeşînin:

last
getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Di dawiyê de, dê daneyên peymana hişmendî hebe

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

Hejmara 0000000D (ya we dê mezintir be) ew jimareya rêzê ye ku divê tê de were guheztin. testgiver.fif.

Ew e, pelê hilînin û bişopînin (./crypto/fift testgiver.fif). Hilber dê pelek be wallet-query.boc. Ya ku pêk tê ev e peyam ji peymana hişmend a kesek din re - daxwazek "ewqas gram veguhezîne hesabek wusa û wusa."

Bi karanîna xerîdar, em wê li torê bar dikin:

> 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

Ger hûn niha telefon bikin last, û dûv re dîsa rewşa hesabê ku me gram jê xwestiye bixwaze, wê hingê divê em bibînin ku hejmara rêza wê yek zêde bûye - ev tê vê wateyê ku wê ji hesabê me re drav şandiye.

Pêngava paşîn dimîne - koda berîka me dakêşin (balansa wê jixwe hatî nûve kirin, lê bêyî koda peymana hişmend em ê nikaribin wê birêve bibin). Em pêk tînin sendfile new-wallet-query.boc - û ew e, di tora TON-ê de berîka xweya we heye (tevî ku ew ji bo nuha tenê ceribandinek be).

Afirandina danûstandinên derketinê

Ji bo veguheztina drav ji bîlançoya hesabê hatî afirandin, pelek heye crypto/block/wallet.fif, ku di heman demê de pêdivî ye ku di peldanka bi muwekîlê berhevkirî de were danîn.

Mîna gavên berê, hûn hewce ne ku mîqdara ku hûn vediguhezînin, navnîşana wergir (dest_addr), û seqnoya berîka xwe biguhezînin (ew piştî destpêkirina berîka xwe wekî 1 ye û piştî her danûstendina derketinê 1-ê zêde dibe - hûn dikarin bi daxwaza rewşa hesabê xwe wê bibînin). Ji bo ceribandinan, hûn dikarin, mînakî, berîka min bikar bînin - 0x4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2.

Di destpêkê de (./crypto/fift wallet.fif) skrîpt dê navnîşana berîka we (ji cihê ku hûn veguhezînin) û mifteya wê ya taybet ji pelan bigire new-wallet.addr и new-wallet.pk, û peyama wergirtî dê were nivîsandin new-wallet-query.boc.

Mîna berê, ji bo ku rasterast danûstendinê pêk bînin, bang bikin sendfile new-wallet-query.boc li muwekîlê. Piştî vê yekê, ji bîr nekin ku hûn rewşa blokê nûve bikin (last) û kontrol bikin ku hevseng û seqnoya berîka me guheriye (getaccount <account_id>).

Xerîdar TON (Tora Vekirî ya Telegram) û zimanê nû yê Pênc ji bo peymanên jîr ceribandin

Ew hemî ye, naha em dikarin di TON-ê de peymanên biaqil biafirînin û daxwazan ji wan re bişînin. Wekî ku hûn dikarin bibînin, fonksiyona heyî jixwe têra xwe dike ku, mînakî, bi navgînek grafîkî re walletek hevaltir çêbike (lêbelê, tê çaverê kirin ku ew ê berê wekî beşek peyamberê peyda bibe).

Tenê bikarhênerên qeydkirî dikarin beşdarî anketê bibin. Têketinji kerema xwe.

Ma hûn dixwazin gotarên bi analîzên TON, TVM, Fift berdewam bikin?

  • Erê, ez li benda temamkirina rêze gotaran bi nêrînek giştî ya TON im

  • Erê, balkêş e ku meriv li ser zimanê pêncan bêtir bixwînin

  • Erê, ez dixwazim di derbarê TON Virtual Machine û berhevkarê wê de bêtir fêr bibim

  • Na, yek ji van ne balkêş e

39 bikarhêneran deng dan. 12 bikarhêner jî betal bûn.

Hûn li ser planên Telegram ji bo destpêkirina TON çi difikirin?

  • Hêviya min bi vê projeyê heye

  • Ez tenê pêşveçûna wê bi balkêşî dişopînim.

  • Ez bi şik û gumana serkeftina wê me.

  • Ez meyldar im ku vê însiyatîfê ji bo girseyên berfireh wekî têkçûn û nepêwist bibînim

47 bikarhêneran deng dan. 12 bikarhêner jî betal bûn.

Source: www.habr.com

Add a comment