Mokhoa oa ho ngola konteraka e bohlale ea WebAssembly ho netweke ea Ontology? Karolo ea 1: Mafome

Mokhoa oa ho ngola konteraka e bohlale ea WebAssembly ho netweke ea Ontology? Karolo ea 1: Mafome

Theknoloji ea Ontology Wasm e fokotsa litšenyehelo tsa ho fallisa likonteraka tse bohlale tsa dApp tse nang le menahano e rarahaneng ea khoebo ho blockchain, ka ho etsa joalo e ruisa dApp ecosystem haholo.

В настоящее время Thuto ea Ontology Ka nako e ts'oanang e ts'ehetsa nts'etsopele ea Rust le C ++. Puo ea Rust e tšehetsa Wasm hamolemo, 'me bytecode e hlahisoang e bonolo, e ka fokotsang litšenyehelo tsa mehala ea konteraka. Kahoo, mokhoa oa ho sebelisa Rust ho theha konteraka marang-rang a Ontology?

Ho theha Konteraka ea WASM le Rust

Etsa konteraka

thepa ke sesebelisoa se setle sa ho theha morero le sesebelisoa sa taolo ea liphutheloana bakeng sa nts'etsopele ea Rust, e thusang bahlahisi ho hlophisa hantle tšebelisano ea khoutu le lilaebrari tsa mokha oa boraro. Ho theha konteraka e ncha ea Ontology Wasm, tsamaisa feela taelo e latelang:

Mokhoa oa ho ngola konteraka e bohlale ea WebAssembly ho netweke ea Ontology? Karolo ea 1: Mafome

Sebopeho sa morero seo se se hlahisang:

Mokhoa oa ho ngola konteraka e bohlale ea WebAssembly ho netweke ea Ontology? Karolo ea 1: Mafome

Faele ea Cargo.toml e sebelisoa ho theha tlhahisoleseding ea motheo ea morero le boitsebiso bo itšetlehileng ka laebrari. Karolo ea [lib] ea faele e tlameha ho hlophisoa ho mofuta oa crate = ["cdylib"]. Faele ea lib.rs e sebelisoa ho ngola khoutu ea logic ea konteraka. Ho feta moo, o hloka ho kenya liparamente tsa ho its'etleha karolong ea [dependencies] ea faele ea tlhophiso ea Cargo.toml:

Mokhoa oa ho ngola konteraka e bohlale ea WebAssembly ho netweke ea Ontology? Karolo ea 1: Mafome

Ka ts'epo ena, bahlahisi ba ka letsetsa likhokahano tse sebelisanang le blockchain ea Ontology le lisebelisoa tse joalo ka paramente ea serialization.

Mosebetsi oa ho kena konteraka

Lenaneo le leng le le leng le na le mosebetsi oa ho kenya letsoho, joalo ka mosebetsi oa mantlha oo re o bonang hangata, empa konteraka ha e na mosebetsi o ka sehloohong. Ha konteraka ea Wasm e etsoa ho sebelisoa Rust, ts'ebetso ea kamehla ea kopo e sebelisoa e le mokhoa oa ho kenya letsoho ho sebelisa konteraka. Lebitso la ts'ebetso ho Rust le ke ke la hlaka ha ho etsoa khoutu ea mohloli oa Rust ho bytecode e ka etsoang ke mochini o sebetsang. Ho thibela moqapi hore a se ke a hlahisa khoutu e sa hlokahaleng le ho fokotsa boholo ba konteraka, ts'ebetso ea kopo e eketsa tlhaloso ea #[no_mangle].

Mosebetsi oa invoke o fumana liparamente joang ho etsa transaction?

Laebrari ea ontio_std e fana ka ts'ebetso ea nako ea ho sebetsa::input() ho fumana liparamente ho etsa transaction. Bahlahisi ba ka sebelisa ZeroCopySource ho senya sephetho sa li-byte array. Moo lenane la pele la li-byte le baloang ke lebitso la mokhoa oa ho kopa, le lateloa ke liparamente tsa mokhoa.

Sephetho sa ho phethahatsa konteraka se khutlisetsoa joang?

Nako ea ho sebetsa:: ret function e fanoeng ke laebrari ea ontio_std e khutlisa sephetho sa ts'ebetso ea mokhoa.

Mosebetsi o phethiloeng oa ho kopa o shebahala tjena:

Mokhoa oa ho ngola konteraka e bohlale ea WebAssembly ho netweke ea Ontology? Karolo ea 1: Mafome

Ho hlophisa le ho hlakola Lintlha tsa Konteraka

Ha ho ntse ho etsoa likonteraka, bahlahisi ba lula ba tobana le mathata a ho serialisa le ho senya, haholo-holo mabapi le mokhoa oa ho boloka mofuta oa data oa struct sebakeng sa polokelo ea litaba le mokhoa oa ho senya li-byte array tse baloang ho tswa ho database ho fumana mofuta oa data oa struct.

Laeborari ea ontio_std e fana ka li-decoder le li-interfaces bakeng sa ho kopanya data le ho hlakola. Likarolo tsa sebopeho li boetse li kenya tšebetsong li-decoder le li-interfaces e le hore sebopeho se ka hlophisoa le ho tlosoa. Maemo a sehlopha sa Sink a hlokahala ha mefuta e fapaneng ea data e hlophisitsoe. Mohlala oa sehlopha sa Sink o na le mofuta o itseng oa tšimo o bolokang data ea mofuta oa byte, mme data eohle e hlophisitsoeng e bolokiloe ho buf.

Bakeng sa data e tsitsitseng ea bolelele (mohlala: byte, u16, u32, u64, joalo-joalo), data e fetoloa ka ho toba ho "byte array" ebe e bolokoa ho buf; bakeng sa data ea bolelele bo sa tsitsang, bolelele bo tlameha ho hlophisoa pele, ebe Ddata (mohlala, linomoro tse sa ngolisoang tsa boholo bo sa tsejoeng, ho kenyeletsoa u16, u32, kapa u64, joalo-joalo).

Deserialization ke ntho e fapaneng haholo. Bakeng sa mokhoa o mong le o mong oa serialization, ho na le mokhoa o tsamaellanang oa deserialization. Deserialization e hloka ts'ebeliso ea mehlala ea sehlopha sa Mohloli. Mohlala ona oa sehlopha o na le masimo a mabeli buf le pos. Buf e sebelisoa ho boloka data hore e tlosoe 'me pos e sebelisoa ho boloka boemo ba hajoale ba ho bala. Ha ho ntse ho baloa mofuta o itseng oa data, haeba u tseba bolelele ba eona, u ka e bala ka ho toba, bakeng sa data ea bolelele bo sa tsejoeng-bala bolelele pele, ebe u bala litaba.

Fumana le ho ntlafatsa data ho ketane

ontology-wasm-cdt-rust - e kenyellelitse mokhoa oa ts'ebetso oa ho sebetsa le data ka har'a ketane, e leng bonolo hore bahlahisi ba kenye ts'ebetso e joalo ka ho eketsa, ho hlakola, ho fetola le ho botsa data ka har'a ketane ka tsela e latelang:

  • database:: fumana (senotlolo) - e sebelisetsoa ho kopa data ho tsoa ketane, 'me likopo tsa bohlokoa li kopa ho kenngoa ts'ebetsong ea sebopeho sa AsRef;
  • database:: beha (senotlolo, boleng) - e sebelisetsoang ho boloka data ho netweke. Key e kopa ho kengoa ts'ebetsong ha sehokelo sa AsRef, mme boleng bo kopa ho kengoa ts'ebetsong ha sehokelo sa Encoder;
  • database:: hlakola (senotlolo) - e sebelisetsoa ho tlosa data ho tloha ketane, 'me likopo tsa bohlokoa li kopa ho kenngoa ts'ebetsong ea sebopeho sa AsRef.

Teko ea konteraka

Ha mekhoa ea konteraka e kenngoa ts'ebetsong, re hloka ho fumana lintlha tse mabapi le ketane 'me re hloka mochine o nepahetseng oa sebele ho phethahatsa bytecode ea konteraka, kahoo hangata hoa hlokahala ho romela konteraka ho ketane bakeng sa tlhahlobo. Empa mokhoa ona oa ho etsa liteko o na le mathata. Ho nolofaletsa bahlahisi ho etsa liteko tsa likonteraka, laeborari ea ontio_std e fana ka mojule oa ho etsa liteko. Mojule ona o fana ka papiso ea data potolohong, e nolofalletsa bahlahisi ho lekola mekhoa ea konteraka. Ho ka fumanoa mehlala e khethehileng mona.

Debugging ea Konteraka

console::debug(msg) e bonts'a tlhahisoleseling ea debug ha e ntse e lokisa konteraka. Lintlha tsa msg li tla kenyeletsoa faeleng ea li-node. Ntho e hlokahalang ke ho beha boemo ba faele ea log hore e be mokhoa oa ho rarolla bothata ha node ea lehae ea tlhahlobo ea Ontology e ntse e sebetsa.

runtime::notify(msg) e hlahisa tlhahisoleseding e nepahetseng ea debug ha konteraka e ntse e rarolloa. Mokhoa ona o tla boloka tlhahisoleseling e kentsoeng ketane mme o ka botsoa ho tsoa ketane o sebelisa mokhoa oa getSmartCodeEvent.

Sengoliloeng se fetoletsoe ke bahlophisi ba Hashrate&Shares haholo-holo bakeng sa OntologyRussia. lla

Na u moqapi? Kena le sechaba sa rona sa theknoloji ho Khahlano. Hape, sheba Setsi sa Moetsi webosaeteng ea rona, moo o ka fumanang lisebelisoa tsa nts'etsopele, litokomane le tse ling.

Ontology

Source: www.habr.com

Eketsa ka tlhaloso