Iwe wakambonzwa iyo Telegraph
Chikwata cheSerokell, chine ruzivo rwakakura mukugadzira mapurojekiti makuru e blockchain, haana kukwanisa kumira parutivi. Takapa vashandi vashanu kumakwikwi, uye mavhiki maviri gare gare vakatora nzvimbo yekutanga mairi pasi pe (mu)nemwero isina kujairika zita rekuti Sexy Chameleon. Munyaya ino ndichataura pamusoro pekuti vakazviita sei. Tinovimba kuti mumaminitsi gumi anotevera iwe uchaverenga nyaya inofadza, uye kunyanya iwe uchawana chimwe chinhu chinobatsira mairi chaunogona kushandisa mubasa rako.
Asi ngatitangei nechirevo chechinyorwa.
Makwikwi nemamiriro ayo
Saka, mabasa makuru evatori vechikamu aive kuitiswa kweimwe kana akawanda ezvibvumirano zvakangwara, pamwe nekuita zvirevo zvekuvandudza iyo TON ecosystem. Makwikwi aya akatanga kubva munaGunyana 24 kusvika Gumiguru 15, uye mhedzisiro yakaziviswa chete munaNovember 15. Nguva yakareba chaizvo, tichifunga kuti panguva ino Telegraph yakakwanisa kubata nekuzivisa mhedzisiro yemakwikwi padhizaini nekuvandudzwa kwezvikumbiro muC++ zvekuyedza uye kuongorora kunaka kweVoIP kufona muTeregiramu.
Takasarudza zvibvumirano zviviri zvakangwara kubva pane zvakarongwa nevarongi. Kune mumwe wavo, takashandisa zvishandiso zvakagoverwa neTON, uye yechipiri yakashandiswa mumutauro mutsva wakagadzirwa nevainjiniya vedu zvakananga kuTON uye yakavakwa muHaskell.
Sarudzo yemutauro wepurogiramu inoshanda haisi tsaona. Mune yedu
Nei takatosarudza kutora chikamu?
Muchidimbu, nekuti hunyanzvi hwedu hausi hwakajairwa uye mapurojekiti akaomarara anoda hunyanzvi uye anowanzo kukosha kwesainzi kunharaunda yeIT. Isu tinotsigira zvakasimba budiriro yakavhurika-sosi uye tiri kuita mukuzivikanwa kwayo, uye zvakare tinobatirana nemayunivhesiti anotungamira eRussia mumunda wesainzi yekombuta uye masvomhu.
Mabasa anonakidza emakwikwi uye kubatanidzwa muchirongwa chedu cheTeregiramu chaive chiri chakanakisa kukurudzira, asi homwe yemubairo yakava imwe yekurudziro. π
TON blockchain tsvakurudzo
Isu tinotarisisa zviitiko zvitsva mu blockchain, hungwaru hwekunyepedzera uye kudzidza muchina uye edza kusapotsa kuburitswa kumwechete kwakakosha mune imwe neimwe yenzvimbo dzatinoshanda. Naizvozvo, pakazotanga makwikwi, timu yedu yakanga yatoziva nemazano kubva
Pakazosvika nguva yemakwikwi, kodhi yakanga yatoburitswa, saka kuchengetedza nguva, takasarudza kutsvaga gwara kana pfupiso yakanyorwa na. nevashandisi. Nehurombo, izvi hazvina kupa chero mhedzisiro - kunze kwemirairo yekuunganidza chikuva paUbuntu, isu hatina kuwana chero zvimwe zvinhu.
Zvinyorwa zvacho pachazvo zvakanyatsotsvakurudzwa, asi zvakanga zvakaoma kuverenga mune dzimwe nzvimbo. Kazhinji taifanira kudzoka kune mamwe mapoinzi tochinja kubva padanho repamusoro-soro tsananguro dzeabstract pfungwa kuenda kune yakaderera-chikamu chekuita ruzivo.
Zvingave zviri nyore kana iyo yakatarwa isina kubatanidza tsanangudzo yakazara yekuitwa zvachose. Ruzivo rwekuti muchina chaiwo unomiririra sei stack yawo unogona kukanganisa vanogadzira kugadzira makondirakiti akangwara epuratifomu yeTON pane kuvabatsira.
Nix: kuisa chirongwa pamwe chete
KuSerokell isu tiri mafani makuru
Saka takatanga nekugadzira
$ cd ~/.config/nixpkgs/overlays && git clone https://github.com/serokell/ton.nix
$ cd /path/to/ton/repo && nix-shell
[nix-shell]$ cmakeConfigurePhase && make
Ziva kuti haufanire kuisa chero zvinotsamira. Nix ichakuitira zvemashiripiti zvese, kunyangwe uri kushandisa NixOS, Ubuntu, kana macOS.
Kuronga kweTON
Iyo smart contract code muTON Network inomhanya paTON Virtual Machine (TVM). TVM yakanyanya kuomarara kupfuura mamwe akawanda machina emagetsi, uye ine inonakidza mashandiro, semuenzaniso, inogona kushanda nayo kuenderera mberi ΠΈ links kune data.
Uyezve, vakomana vanobva kuTON vakagadzira mitauro mitatu mitsva yekuronga:
Fift mutauro wepasirese stack programming unofanana
FunC iri smart contract programming mutauro wakafanana ne
Fifth Assembler -Fift raibhurari yekugadzira mabhinari anogoneka kodhi yeTVM. Fifth Assembler haina compiler. Izvi
Makwikwi edu anoshanda
Pakupedzisira, yave nguva yekutarisa miuyo yenhamburiko dzedu.
Asynchronous kubhadhara chiteshi
Kubhadhara chiteshi chibvumirano chakangwara chinobvumira vashandisi vaviri kutumira mubhadharo kunze kwe blockchain. Somugumisiro, hauchengetedze mari chete (hapana komisheni), asiwo nguva (haufaniri kumirira kuti chivharo chinotevera chigadziriswe). Kubhadhara kunogona kuve kudiki sezvaunoda uye kazhinji sezvinodiwa. Muchiitiko ichi, mapato haafaniri kuvimbana, sezvo kururamisira kwekugadzirisa kwekupedzisira kunovimbiswa nechibvumirano chakanaka.
Takawana mhinduro iri nyore kudambudziko. Mapato maviri anogona kuchinjana mameseji akasainwa, rimwe nerimwe riine nhamba mbiriβmari yakazara inobhadharwa nebato rimwe nerimwe. Nhamba mbiri idzi dzinoshanda se
Muchokwadi, nhamba imwe inokwana kuita iyi pfungwa, asi isu takasiya zvese nekuti nenzira iyi taigona kuita iri nyore mushandisi interface. Pamusoro pezvo, takasarudza kuisa mari yekubhadhara mumeseji yega yega. Pasina iyo, kana meseji yakarasika nekuda kwechimwe chikonzero, saka, kunyangwe zviyero zvese uye kuverenga kwekupedzisira kuchave kwakarurama, mushandisi anogona kusaona kurasikirwa.
Kuedza zano redu, takatsvaga mienzaniso yekushandisa yakapusa uye yakapfupika yekubhadhara chiteshi protocol. Zvinoshamisa kuti takawana maviri chete:
tsananguro nzira yakafanana, chete kune iyo unidirectional chiteshi.Tutorial , iyo inotsanangura pfungwa imwe chete neyedu, asi pasina kutsanangura zvakawanda zvakakosha, zvakadai sekururamisa kwese uye nzira dzekugadzirisa kusawirirana.
Zvakava pachena kuti zvine musoro kutsanangura protocol yedu zvakadzama, tichipa tarisiro yekururamisa kwayo. Mushure mekudzokorora kwakati wandei, iyo yakatarwa yaive yakagadzirira, uye ikozvino iwe unogona zvakare.
Takaita kondirakiti muFunC, uye takanyora mutsara wekuraira utility yekudyidzana nekondirakiti yedu zvachose muFift, sezvakakurudzirwa nevarongi. Tingadai takasarudza chero mumwe mutauro weCLI yedu, asi isu taifarira kuyedza Fit kuti tione kuti yakaita sei mukudzidzira.
Kutaura chokwadi, mushure mekushanda naFift, hatina kuona zvikonzero zvinogombedzera zvekuda mutauro uyu kune mitauro yakakurumbira uye yakashandiswa zvine maturusi akagadzirwa nemaraibhurari. Kuronga mumutauro wakavakirwa-mutauro hakunakidze, nekuti iwe unofanirwa kugara uchichengeta mumusoro wako izvo zviri pastack, uye muunganidzi haabatsiri neizvi.
Naizvozvo, semaonero edu, chete chikonzero chekuvapo kweFift ibasa rayo semutauro wekutambira weFift Assembler. Asi hazvingave nani here kunyudza muunganidzi weTVM mune mumwe mutauro uripo, pane kugadzira mutsva weichi chinangwa chaicho?
TVM Haskell eDSL
Iye zvino yave nguva yekutaura nezve yedu yechipiri smart kontrakiti. Isu takasarudza kugadzira chikwama-masaini akawanda, asi kunyora imwe smart kontrakiti muFunC zvingave zvinofinha. Taida kuwedzera kumwe kunhuwirira, uye ndiwo waive mutauro wedu wegungano weTVM.
SaFift Assembler, mutauro wedu mutsva wakadzikwa, asi isu takasarudza Haskell semugadziri panzvimbo yeFift, achitibvumira kutora mukana wakazara weiyo yepamusoro mhando system. Paunenge uchishanda nezvibvumirano zvakangwara, uko mutengo wechero chikanganiso chidiki chinogona kunge chakanyanya kukwirira, static typing, mumaonero edu, mukana mukuru.
Kuratidza izvo TVM assembler inoita seyakamisikidzwa muHaskell, takaisa chikwama chakajairwa pairi. Hezvino zvinhu zvishoma zvekuteerera:
- Chibvumirano ichi chine basa rimwechete, asi iwe unogona kushandisa akawanda sezvaunoda. Paunotsanangura basa idzva mumutauro wekugamuchira (kureva Haskell), yedu eDSL inokutendera iwe kuti usarudze kana iwe uchida kuti ive yakaparadzana muitiro muTVM kana kungoiswa mutsetse panguva yekufona.
- SaHaskell, mabasa ane mhando dzinotariswa panguva yekuunganidza. Mu eDSL yedu, rudzi rwekupinza rwebasa imhando yestack iyo basa rinotarisira, uye mhando yemhedzisiro imhando yestack inozogadzirwa mushure mekufona.
- Kodhi ine zvirevo
stacktype
, ichitsanangura rudzi rwe stack inotarisirwa panzvimbo yekufona. Muchibvumirano chewallet chepakutanga aya aingova mazwi, asi muDSL yedu iwo ari chikamu chekodhi uye anotariswa panguva yekuunganidza. Vanogona kushanda sezvinyorwa kana zvirevo zvinobatsira mugadziri kuwana dambudziko kana kodhi yachinja uye rudzi rwe stack ruchichinja. Ehe, zvirevo zvakadaro hazvikanganise mashandiro enguva, sezvo pasina kodhi yeTVM inogadzirwa kwavari. - Ichi chichiri chimiro chakanyorwa mumavhiki maviri, saka pachine basa rakawanda rinofanira kuitwa pachirongwa ichi. Semuenzaniso, ese makirasi emakirasi aunoona mukodhi pazasi anofanirwa kugadzirwa otomatiki.
Izvi ndizvo zvinoita kuitwa kwechikwama chemultisig chinotaridzika pane yedu eDSL:
main :: IO ()
main = putText $ pretty $ declProgram procedures methods
where
procedures =
[ ("recv_external", decl recvExternal)
, ("recv_internal", decl recvInternal)
]
methods =
[ ("seqno", declMethod getSeqno)
]
data Storage = Storage
{ sCnt :: Word32
, sPubKey :: PublicKey
}
instance DecodeSlice Storage where
type DecodeSliceFields Storage = [PublicKey, Word32]
decodeFromSliceImpl = do
decodeFromSliceImpl @Word32
decodeFromSliceImpl @PublicKey
instance EncodeBuilder Storage where
encodeToBuilder = do
encodeToBuilder @Word32
encodeToBuilder @PublicKey
data WalletError
= SeqNoMismatch
| SignatureMismatch
deriving (Eq, Ord, Show, Generic)
instance Exception WalletError
instance Enum WalletError where
toEnum 33 = SeqNoMismatch
toEnum 34 = SignatureMismatch
toEnum _ = error "Uknown MultiSigError id"
fromEnum SeqNoMismatch = 33
fromEnum SignatureMismatch = 34
recvInternal :: '[Slice] :-> '[]
recvInternal = drop
recvExternal :: '[Slice] :-> '[]
recvExternal = do
decodeFromSlice @Signature
dup
preloadFromSlice @Word32
stacktype @[Word32, Slice, Signature]
-- cnt cs sign
pushRoot
decodeFromCell @Storage
stacktype @[PublicKey, Word32, Word32, Slice, Signature]
-- pk cnt' cnt cs sign
xcpu @1 @2
stacktype @[Word32, Word32, PublicKey, Word32, Slice, Signature]
-- cnt cnt' pk cnt cs sign
equalInt >> throwIfNot SeqNoMismatch
push @2
sliceHash
stacktype @[Hash Slice, PublicKey, Word32, Slice, Signature]
-- hash pk cnt cs sign
xc2pu @0 @4 @4
stacktype @[PublicKey, Signature, Hash Slice, Word32, Slice, PublicKey]
-- pubk sign hash cnt cs pubk
chkSignU
stacktype @[Bool, Word32, Slice, PublicKey]
-- ? cnt cs pubk
throwIfNot SignatureMismatch
accept
swap
decodeFromSlice @Word32
nip
dup
srefs @Word8
pushInt 0
if IsEq
then ignore
else do
decodeFromSlice @Word8
decodeFromSlice @(Cell MessageObject)
stacktype @[Slice, Cell MessageObject, Word8, Word32, PublicKey]
xchg @2
sendRawMsg
stacktype @[Slice, Word32, PublicKey]
endS
inc
encodeToCell @Storage
popRoot
getSeqno :: '[] :-> '[Word32]
getSeqno = do
pushRoot
cToS
preloadFromSlice @Word32
Iyo yakazara sosi kodhi yeDSL yedu uye akawanda-siginecha chikwama chibvumirano chinogona kuwanikwa pa
Mhedziso pamusoro pemakwikwi uye TON
Pakazara, basa redu rakatora maawa 380 (kusanganisira kujairana nezvinyorwa, misangano uye budiriro chaiyo). Vagadziri vashanu vakatora chikamu muchirongwa chemakwikwi: CTO, timu inotungamira, blockchain platform nyanzvi uye Haskell software vanogadzira.
Isu takawana zviwanikwa zvekutora chikamu mumakwikwi pasina kuomerwa, sezvo mweya wehackathon, kushandira pamwe kwepedyo, uye kukosha kwekukurumidza kunyura mukati mezvinhu zvetekinoroji nyowani kunogara kuchinakidza. Husiku hunoverengeka hwekusarara kuti uwane mibairo yakakura mumamiriro ezviwanikwa zvishoma zvinotsiviwa neruzivo rwakakosha uye ndangariro dzakanaka. Uye zvakare, kushanda pamabasa akadaro kunogara kuri muyedzo wakanaka wemaitirwo ekambani, nekuti zvakanyanya kuoma kuwana mhedzisiro yakanaka pasina kushanda zvakanaka kwemukati.
Lyrics parutivi: isu takafadzwa nehuwandu hwebasa rakaiswa nechikwata cheTON. Vakakwanisa kuvaka yakaoma, yakanaka, uye inonyanya kukosha, inoshanda sisitimu. TON yaratidza kuti ipuratifomu ine mukana mukuru. Nekudaro, kuti iyi ecosystem iite, zvakawanda zvinoda kuitwa, zvese maererano nekushandiswa kwayo mumapurojekiti eblockchain uye maererano nekuvandudza maturusi ebudiriro. Isu tinodada kuva chikamu chechirongwa ichi.
Kana mushure mekuverenga chinyorwa ichi uchine chero mibvunzo kana uine mazano ekushandisa TON kugadzirisa matambudziko ako,
Source: www.habr.com