Test clientis TON (Telegram Open Network) et linguam novam ad captiosos contractus

Plus quam anno elapso innotuit de consiliis telegraphi nuntius ut suum retia decentra emitteret Network open Telegram. Tunc documentum technicum volumini praesto factum est, quod a Nikolai Durov dicebatur et structuram futurae retis descripsit. Pro iis qui eam desideraverunt, commendo tibi ut recitationem meam huius documenti legas.pars 1, pars 2; tertia pars, heu, adhuc pulvis in haustu colligit).

Cum igitur nulla significatio nuntii de statu TON progressionis usque ad duos dies abhinc diebus (in uno e). privata canales) Nexum ad paginam non apparebit https://test.ton.org/download.htmlubi sita sunt:
β—¦ ton-test-liteclient-full.tar.xz β€” lucis clientes fontes pro TON test retis;
β—¦ ton-lite-client-test1.config.json - configuration file pro connectens cum retis test;
β—¦ README β€” informationes de comitiis et cliente deducendis;
β—¦ QUOMODO - GRADATUS instructiones quomodo creare dolorem contractum utens client;
β—¦ ton.pdf - Documentum renovatum (datum die 2 Martii 2019) cum inspectione technica reticuli TON;
β—¦ tvm.pdf β€” technical description of TVM (TON Virtualis Machina, TON apparatus virtualis);
β—¦ tblkch.pdf β€” technical description of the TON blockchain;
β—¦ fifthbase.pdf β€” descriptio novae linguae Fift, quae ad captiosos pactiones in TON creandas destinavit.

Dico, nullam fuisse paginam et omnia haec documenta e telegrapho confirmatio, sed solida harum materiarum satis probabilia facit. Launch editis clientis simul suo periculo.

Aedificationem temptare clientis

Primum, conemur aedificare clientem experimentum β€” fortunate, README hoc simplex processus in detail describitur. MacOS 10.14.5 hoc utens exemplo faciam: in aliis systematibus aedificandi successum probare non possum.

  1. Download et unpack source archive. Magni interest ut recentioris versionis tamquam retrorsum compatibilitatem detrahat hac in scaena non praestatur.

  2. Fac ut novissimae versiones faciendi, cmake (versio 3.0.2 vel altioris), OpenSSL (inclusa fasciculi capitis C), g++ vel soni in systemate instituatur. Non habui aliquid installare, omnia ilicet convenerunt.

  3. Sumamus fontes pacto in folder ~/lite-client. Separatim ab ea, effice folder vacuum pro incepto congregato (exempli gratia: ~/liteclient-buildet ex eo (cd ~/liteclient-build) Mandata vocant:

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

    Test clientis TON (Telegram Open Network) et linguam novam ad captiosos contractus

    Interpres linguarum Fift condere ad contractus captiosos (plus de eo infra), nos etiam vocamus

    cmake --build . --target fift

  4. Download hodiernam unum configuration file coniungere ad retis probationem et pone in folder cum cliente convenerunt.

  5. factum, initium clientis potes:

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

Si omnia recte aguntur, aliquid simile videas;

Test clientis TON (Telegram Open Network) et linguam novam ad captiosos contractus

Ut videre possumus, pauca sunt praecepta praesto;
β—¦ help β€” Indicem hoc mandatorum exhibe;
β—¦ quit - exite;
β—¦ time β€” Praesens tempus servo monstrant;
β—¦ status β€” nexum et statum database loci ostendunt;
β—¦ last - update statu blockchain (download the last block). Aliquam sit amet ante quamlibet petitiones hoc mandatum currere ut statum hodiernam retis videas.
β—¦ sendfile <filename> β€” fasciculum localem ad TON retis imposuisti. Ita fit commercium cum retis - inter quas, exempli gratia, creatio novarum contractuum captiosus et petitiones pecuniarum inter rationes transferendi;
β—¦ getaccount <address> - ostende hodiernam (tempore mandatum factum est) last) status rationis cum certo electronica;
β—¦ privkey <filename> - clavis privatis oneratis ex file locali.

Si, cum clientem proficiscens, folder ad eam transferas optione utens -Dtunc novissimum claustrum magistri claustri addet in illud;

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

Nunc ad res magis interesting movere possumus - Linguam Fift discere, contractum acri componere conare (exempli gratia, vidulum testam creare), eam ad retia imponere ac pecuniam inter rationes transferre conari.

Lingua Fift

Ex documento fifthbase.pdf invenire potes quod turma Telegrammi novam linguam acervum acervum linguarum creasse ut contractus captiosus creare possis Quintum (Videtur ex numero quintussimilis Forth, cum quo Quintum multum convenit).

Documentum satis numerosum est, 87 paginas, et contenta in singulis articulis huius articuli non narrabo (saltem quod ipse ipse non perlegi :). Praecipua puncta ponam et exempla duo codicis huius linguae dabo.

In gradu fundamentali, syntaxis Fift omnino simplex est: in codice suo consistit verbisplerumque dissociata spatiis vel lineis (singularis casus: quaedam verba separatorem post se non requirunt). Ullus sermo est maiusculas minusculasque sequentia characterum, qui correspondet cuidam definition (dure, quid interpretor in hoc verbo inveniat). Si verbi non sit definitio, interpres numero eam dividere conatur et in acervum ponere. Obiter hic numeri sunt - subito - 257 bis integri, et omnino nullae sunt fractiones pressius, statim se in duos numeros convertunt, numeratorem ac denominatorem fractionis rationalis efformantes.

Verba tendunt ad summa cum valores in ACERVUS. Singulare genus verborum - praepositione β€” ACERVUS non utitur, sed characteribus subsequentibus e fonte fasciculi. Exempli gratia, haec est quomodo chorda literalis impleatur - character quotus (") est praepositio verbi sequentis quotem spectat et chorda inter eos impellit in acervum. Eodem modo, in unum liners conversari (//) et multiline (/*) comments.

Haec ubi fere tota structura linguae interna terminatur. Cetera omnia (inclusa constructio dominii) definiuntur verba (vel interna, ut operationes arithmeticae et novarum vocum definitio, vel definitio in "bibliotheca vexillum". Fift.fifquae est in folder crypto/fift in fontibus).

Simplex exemplum programmatis in Quinto:

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

Prima linea novum verbum definit setxy (Note praeposita {qui facit truncum ante occlusionem } et praeposita :quod omnino verbum definit). setxy e summo ACERVUS numerus accipit, definit (vel redefines) ut global assidue x& quadratum ex eo numero in perpetuum y (Data ut valores constantium redintegrari possunt, ego eas variabiles malo appellare, sed conventionem in lingua nominatam sequor).

Sequuntur duae lineae numero pone in ACERVUS et vocatus setxytunc valores constantium demonstrantur x, y (Verbum adhibetur ad output .) , constantes ambo in acervo positi, brevissime, et effectus etiam impressus est. Quam ob rem videbimus;

3 9 12 ok
7 49 56 ok

(Versus "ok" typis ab interprete impressus est cum terminat dispensando lineam hodiernam in modo interactive initus)

Bene plenum exemplum codicis:

"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

Scapus hic FORMIDULOSUS vultus est ad dolorem contractum creando - in tabella collocabitur new-wallet-query.boc post supplicium. Nota quaeso quod alia lingua conventus hic ponitur pro TON Virtualis Machina (in ea singillatim non moror), quorum instructiones in claustro ponentur.

Sic, coadunator pro TVM scribitur in Fift - huius coadunatoris fontes in tabella sunt crypto/fift/Asm.fif atque initio codicis fragmentum supra connectuntur.

Quid dicam, sicut videtur Nikolai Durov amat novas linguas programmandi creare :)

Dolor contractus et mutuo commercium cum TON creando

Itaque sumamus nos clientem TON et interpretem quintum descriptos convenisse et cum lingua familiari fieri. Quomodo nunc contractus dolor creare? Haec tabella descriptus est QUOMODOfontibus adnexis.

Rationes in TON

Sicut diximus TON review, retis plus quam unum claustrum continet - est unum commune, quod dicitur. "vinculum domini", ac numerus arbitrarium additorum "catenarum laboris", qui numerus XXXII bitarum notatur. Magister catenae identificatorium -32 habet, praeter eam, "basis" catenam cum identitatis 1 adhiberi potest: unaquaeque officina suam configurationem habere potest. Interne singulae officinae in shards divisae sunt, sed haec est exsecutio singula quae ob oculos tenenda non est.

In una officina multae rationes reponuntur quae identificatorium suum habent. Nam magister catenae et nulla operae catenae sunt, 256 frena longa. Ita scriptum est ratio identifier, e.g., sic;

-1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Haec forma "rudis" est: primum id officina id, deinde colonia, et ID in notatione hexadecimali.

Praeterea forma abbreviata est - numerus fabrile et ratio inscriptionis in forma binaria encoded, his checksum additur, et haec omnia in Base64 exarata sunt;

Ef+BVndbeTJeXWLnQtm5bDC2UVpc0vH2TF2ksZPAPwcODSkb

Forma huius instrumenti cognoscentes, praesentem statum rationis postulare possumus per clientem utentem imperio

getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Dabimus tibi aliquid simile hoc;

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

Videmus structuram quae in DHT ex certa fabrili reposita est. Verbi gratia, in agro storage.balance est current propter statera, in storage.state.code - dolor contractus codice, et in storage.state.data β€” Praesens ejus notitia. Nota quaeso quod TON notitia repono - Cellae, cellae - arbori simile est, singulae cellae habere possunt et suas notitias et cellas pueriles. Hoc ostenditur sicut incisum in ultimis lineis.

Aedificationem dolor contractus

Nunc talem structuram faciamus nos (BOC vocatur - sacculum cellularum) Quinto sermone utens. Fortunate scribere non te ipsum contractum acri - in folder crypto/block est fasciculus ex fonte archivo new-wallet.fifquae nos iuvabit novam peram creare. Sit scriptor effingo eam ad clientem folder cum convenerunt (~/liteclient-buildsi supra praeceptionem secutus sis). Contenta supra ad exemplum codicis supra Fift posui.

Hanc fasciculum sic exsequere:

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

est <source-directory> reponendum est cum via ad fontes inconditos (signum "~" proh dolor, hic adhiberi non potest, plena via desideratur). Clavis pro usus -I vos can definias amet variabilis FIFTPATH et hanc viam in eam.

Quia Fift cum tabella name new-wallet.fiffaciet, et faciet exire. Si nomen tabella omittis, cum interprete interactive ludere potes.

Post executionem aliquid simile in consolatione exhiberi debet:

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)

Id est vidulum cum ID -1:4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2 (vel, quod idem est; 0f9PzVILj8yglrVn1zS-NSjtxr7QBfaTCp7JrBqnFPIR8nhZ) Feliciter creatus. In codice respondente in tabella erit new-wallet-query.boc, oratio eius in new-wallet.addret clavis privatus est new-wallet.pk (Cave - currit scriptor iterum scribe haec tabularia).

Nempe TON reticulum de hoc pera nondum scit, tantum in forma harum imaginum repositum est. Nunc eget est ut ipsum sollicitudin sagittis. Difficultas tamen est quod contractum acri creare debes commissionem reddere, et ratio tua adhuc nulla est.

In modo operando, solvetur haec quaestio P. de permutatione emendo (vel ex alio pera translato). Bene, in testi modo currens, specialis contractus callidior creatus est, e quo usque ad viginti P. sicut ille petere potes.

Contractus dolor gignens petitionem alterius

Petimus contra callidi contractus qui P. sinistra et dextra sic distribuit. In eodem folder crypto/block invenire tabella 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

Illud etiam servabimus in folder cum cliente conglobato, sed quintam lineam - ante lineam emendabimus.constant dest_addrΒ». Reddamus cum inscriptione pera quam creasti (plena non abbreviata). Non opus est in principio scribere "-1", sed "0x" in principio ponere.

Mutare potes lineam 6.666 Gram*/ constant amount β€” tantum est in P. quam postulas (non plus quam XX). Etiam si totum numerum definias, punctum punctum relinquas.

Denique debes corrigere lineam 0x00000011 constant seqno. Primus numerus hic est ordo currentis numeri, qui reponitur in Ratione P. exeuntibus. Unde id possum? Ut dictum est, cliens incipe et currite;

last
getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d

Ad extremum, dolor data contractus continebit

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

Numerus 0000000D (tuus maior erit) est ordo numerus qui substitui debet in testgiver.fif.

Hoc est, salva tabella et curre../crypto/fift testgiver.fif). Output lima erit wallet-query.boc. Hoc est quod formatur сообщСниС alicui dolor sit contractus - petitio "tot P. ad talem et talem rationem transfer."

Clientem utendo, eam ad retiaculum imposuisti:

> 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

Si nunc vocas lastet iterum petamus statum rationis, a quo petebamus P., tunc videndum est quod numerus sequentium augetur per unum, quod significat pecuniam ad nostram rationem misisse.

Ultimus gradus manet - codicem scripti nostri depone (librimen eius iam repletum est, sed sine codice contractus ophthalmiosus eum regere non valemus). Portamus sendfile new-wallet-query.boc - et hoc est, vidulum tuum habes in reticulo TON (etsi nunc unus tantum test est).

Exitus transactions creando

Pecuniam ex trutina rationis creatae transferre, fasciculus est crypto/block/wallet.fifquae etiam in clientelam collecta cum folder collocari debet.

Similes superioribus gradibus, aptare debes quantitatem quam transfers, inscriptionem recipientis (dest_addr), et sequentis scripti tui (aequale est 1 post crumenam initialem et augere per 1 post exitum cuiusque transactionis - potes. vide id petens statum in ratione vestra). Pro experimentis, uti potes, e.g., vidulum meum -. 0x4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2.

In startup (./crypto/fift wallet.fif) scriptura inscriptioni scripti tui (unde transfers) et clavem eius privatam e schedulis capiet new-wallet.addr ΠΈ new-wallet.pkac nuntius receptum scribetur to new-wallet-query.boc.

Ut ante, directe ad rem faciendam, voca sendfile new-wallet-query.boc in clientelam. Post hoc noli oblivisci stipendii statum renovare.lastdeprime , libram ac seqne crumenam nostram mutatam essegetaccount <account_id>).

Test clientis TON (Telegram Open Network) et linguam novam ad captiosos contractus

Haec omnia, nunc captiosos contractus in TON creare possumus et petitiones ad eas mittere. Ut vides, iam satis est praesens functionality, exempli gratia, peram graphicali interface amiciorem facere (sed exspectatur ut iam praesto sit ut pars nuntii fiet).

Tantum usores descripserunt in aliquet participare possunt. InscribeTe gratissimum esse.

Visne continuare articulos cum analysi TON, TVM, Fift?

  • Ita, exspectamus complementum seriei articulorum cum inspectione generali de TON

  • Ita est, interesting legere plura de lingua Fift

  • Ita, plura discere volo de Machina TON Virtualis et qui pro eo concionator

  • Non, nihil interest

39 utentes censuerunt. 12 Utentes abstinuerunt.

Quid cogitas de consiliis Telegram ad TON deducendum?

  • Magna spes habeo hoc project

  • Mox secutus sum progressionem cum faenore.

  • Dubius sum et de eius victoria dubito.

  • Proclivis sum considerare hoc inceptum defectum et supervacaneum pro massis latis

47 utentes censuerunt. 12 Utentes abstinuerunt.

Source: www.habr.com