Ontology Wasm tekinoroji inoderedza mutengo wekutama dApp smart zvibvumirano zvine yakaoma bhizinesi logic kune blockchain, nekudaro ichipfumisa zvakanyanya iyo dApp ecosystem.
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ
Kugadzira Chibvumirano cheWASM neRust
Gadzira kondirakiti
Chimiro chepurojekiti inogadzira:
Iyo Cargo.toml faira inoshandiswa kuseta yakakosha ruzivo rweprojekiti uye inotsamira raibhurari ruzivo. Iyo [lib] chikamu chefaira chinofanira kuiswa kune crate-type = ["cdylib"]. Iyo lib.rs faira inoshandiswa kunyora kodhi yekontrakiti. Pamusoro pezvo, iwe unofanirwa kuwedzera kutsamira paramita ku[dependencies] chikamu cheCargo.toml configuration file:
Nekutsamira uku, vagadziri vanogona kufona mainterfaces anodyidzana neOntology blockchain uye maturusi akadai seriisalization parameter.
Kondirakiti yekupinda basa
Purogiramu yega yega ine basa rekuisa, sebasa guru ratinowanzoona, asi kondirakiti haina basa guru. Kana kondirakiti yeWasm ikagadzirwa uchishandisa Rust, iyo default invoke basa rinoshandiswa sebasa rekuisa kushandisa kondirakiti. Iro zita rebasa muRust harina kujeka kana uchigadzira Rust source kodhi mubytecode inogona kuitwa nemuchina chaiwo. Kudzivirira muunganidzi kuti asaburitse kodhi yakadhindwa uye kuderedza saizi yekontrakiti, basa rekukumbira rinowedzera #[no_mangle] chirevo.
Ko iyo invoke function inowana sei maparamendi ekuita kutengeserana?
Iyo ontio_std raibhurari inopa nguva yekumhanya ::input() basa kuti uwane ma paramita ekuita kutengeserana. Vagadziri vanogona kushandisa ZeroCopySource kushatisa iyo inoguma byte array. Imo mune yekutanga array yemabhaiti akaverengwa izita reinvoke nzira, rinoteverwa nemaitiro paramita.
Ko mhedzisiro yekuitwa kwekondirakiti inodzoswa sei?
Nguva yekumhanya :: ret basa rakapihwa ne ontio_std raibhurari inodzosa mhedzisiro yemaitiro ekuita.
Iyo inopedzwa invoke basa inoita seizvi:
Serializing uye Deserializing Contract Data
Mukugadzira zvibvumirano, vagadziri vanogara vachisangana nematambudziko ekuita serialization uye deserialization, kunyanya nemachengeterwo emhando yedata data mudhatabhesi uye maitiro ekubvisa dhizaini yakaverengerwa kubva kudhatabhesi kuti uwane struct data mhando.
Iyo ontio_std raibhurari inopa decoder uye encoder interfaces yedata serialization uye deserialization. Iyo minda yechimiro inoisawo iyo decoder uye encoder interfaces kuitira kuti chimiro chigone kuiswa seri uye kubviswa. Mamiriro ekirasi yeSink anodiwa kana marudzi akasiyana-siyana e data akaiswa serialized. Muenzaniso weSink kirasi ine set-mhando yemunda buf inochengeta iyo byte type data, uye yese serialized data inochengetwa mubuf.
Nezve data yakarebeswa (semuenzaniso: byte, u16, u32, u64, nezvimwewo), iyo data inoshandurwa zvakananga kune byte array uye yozochengetwa mubuf; kune data yehurefu husina kugadzika, kureba kunofanirwa kutanga kunyorwa, ipapo Ddata (somuenzaniso, nhamba dzisina kunyorwa dzesaizi isingazivikanwe, kusanganisira u16, u32, kana u64, nezvimwewo).
Deserialization ndiyo yakanyatsopesana. Kune yega yega serialization nzira, kune inoenderana deserialization nzira. Deserialization inoda kushandiswa kwezviitiko zveiyo Source kirasi. Ichi chiitiko chekirasi chine minda miviri buf uye pos. Buf inoshandiswa kuchengetedza iyo data kuti ive deerialized uye pos inoshandiswa kuchengetedza ikozvino kuverenga chinzvimbo. Kana imwe mhando yedata iri kuverengwa, kana iwe uchiziva kureba kwayo, unogona kuiverenga zvakananga, kune data yehurefu husingazivikanwe-verenga kureba kutanga, wozoverenga zviri mukati.
Svika uye gadziridza data mucheni
ontology-wasm-cdt-rust - yakafukidzira nzira yekushanda yekushanda nedata mucheni, iyo yakanakira vanogadzira kuita maficha akadai sekuwedzera, kudzima, kuchinja uye kubvunza data mucheni sezvizvi:
- database:: tora (kiyi) - inoshandiswa kukumbira data kubva kumaketani, uye zvikumbiro zvakakosha kushandiswa kweAsRef interface;
- dhatabhesi::isa(kiyi, kukosha) - inoshandiswa kuchengetedza data pane network. Kiyi inokumbira kuitwa kweiyo AsRef interface, uye kukosha kunokumbira kuisirwa kweEncoder interface;
- database::delete(kiyi) - inoshandiswa kubvisa data kubva muketani, uye zvikumbiro zvakakosha kushandiswa kweAsRef interface.
Contract test
Kana nzira dzekondirakiti dzaitwa, tinoda kuwana data iri pacheni uye tinoda muchina wakakodzera wekuti tiite bytecode yekondirakiti, saka kazhinji zvinodikanwa kuendesa kondirakiti pacheni yekuyedza. Asi iyi nzira yekuedza ine dambudziko. Kuita kuti zvive nyore kune vanogadzira kuyedza zvibvumirano, iyo ontio_std raibhurari inopa mock module yekuyedza. Iyi module inopa kuenzanisa kweiyo data mudunhu, zvichiita kuti zvive nyore kune vanogadzira unit kuyedza nzira dziri muchibvumirano. Mienzaniso chaiyo inogona kuwanikwa
Contract Debugging
console ::debug(msg) inoratidza ruzivo rwekugadzirisa paunenge uchigadzirisa chibvumirano. Iyo msg ruzivo ichawedzerwa kune node log faira. Chinodiwa kuseta iyo regi faira nhanho kuti debug mode kana yemuno Ontology test node iri kushanda.
nguva yekumhanya ::notify(msg) inoburitsa ruzivo rwakakodzera rwekugadzirisa apo kondirakiti iri kugadziriswa. Iyi nzira inochengetedza ruzivo rwakapinda mucheni uye inogona kubvunzwa kubva kucheni uchishandisa iyo getSmartCodeEvent nzira.
Chinyorwa chakaturikirwa nevapepeti veHashrate&Shares kunyanya kuOntologyRussia.
kuchema
Iwe uri mugadziri? Joinha tekinoroji yedu munharaunda pa
Ontology
Source: www.habr.com