Yuav sau li cas WebAssembly ntse daim ntawv cog lus ntawm Ontology network? Ntu 1: Rust

Yuav sau li cas WebAssembly ntse daim ntawv cog lus ntawm Ontology network? Ntu 1: Rust

Ontology Wasm thev naus laus zis txo tus nqi ntawm kev tsiv teb tsaws dApp cov ntawv cog lus ntse nrog kev ua lag luam nyuaj rau blockchain, yog li ua kom muaj txiaj ntsig zoo rau dApp ecosystem.

Tam sim no Ontology Uas Ib txhij txhawb nqa Rust thiab C ++ kev txhim kho. Cov lus Rust txhawb Wasm zoo dua, thiab cov bytecode tsim tau yooj yim dua, uas tuaj yeem txo tus nqi ntawm kev cog lus hu. Yog li ntawd, Yuav ua li cas siv Rust los tsim daim ntawv cog lus ntawm Ontology network?

Tsim daim ntawv cog lus WASM nrog Rust

Tsim ib daim ntawv cog lus

cargo yog ib txoj haujlwm zoo tsim thiab kev tswj pob khoom siv rau kev txhim kho Rust, uas pab cov neeg tsim khoom kom txhim kho kev sib raug zoo ntawm cov lej thiab cov tsev qiv ntawv thib peb. Txhawm rau tsim daim ntawv cog lus tshiab Ontology Wasm, tsuas yog khiav cov lus txib hauv qab no:

Yuav sau li cas WebAssembly ntse daim ntawv cog lus ntawm Ontology network? Ntu 1: Rust

Qhov project qauv nws generates:

Yuav sau li cas WebAssembly ntse daim ntawv cog lus ntawm Ontology network? Ntu 1: Rust

Cov ntaub ntawv Cargo.toml yog siv los teeb tsa cov ntaub ntawv qhia txog qhov project thiab cov ntaub ntawv hauv tsev qiv ntawv. Ntu [lib] ntawm cov ntaub ntawv yuav tsum tau teem rau crate-type = ["cdylib"]. Cov ntaub ntawv lib.rs yog siv los sau cov ntawv cog lus logic code. Tsis tas li ntawd, koj yuav tsum tau ntxiv qhov kev cia siab rau qhov [dependencies] seem ntawm Cargo.toml configuration file:

Yuav sau li cas WebAssembly ntse daim ntawv cog lus ntawm Ontology network? Ntu 1: Rust

Nrog rau qhov kev cia siab no, cov neeg tsim khoom tuaj yeem hu rau cov kev sib tshuam uas cuam tshuam nrog Ontology blockchain thiab cov cuab yeej xws li serialization parameter.

Daim ntawv cog lus ua haujlwm

Txhua qhov kev zov me nyuam muaj cov haujlwm nkag, zoo li lub luag haujlwm tseem ceeb peb feem ntau pom, tab sis daim ntawv cog lus tsis muaj lub luag haujlwm tseem ceeb. Thaum daim ntawv cog lus Wasm yog tsim los siv Rust, lub neej ntawd invoke muaj nuj nqi yog siv raws li cov tswv yim muaj nuj nqi siv daim ntawv cog lus. Lub npe ntawm kev ua haujlwm hauv Rust yuav tsis meej thaum sau Rust qhov chaws rau hauv bytecode uas tuaj yeem ua tiav los ntawm lub tshuab virtual. Txhawm rau tiv thaiv lub compiler los ntawm kev tsim cov lej tsis txaus thiab txo qhov loj ntawm daim ntawv cog lus, qhov kev thov ua haujlwm ntxiv rau #[no_mangle] annotation.

Yuav ua li cas invoke muaj nuj nqi tau parameters los ua ib tug lw?

Lub tsev qiv ntawv ontio_std muab lub sijhawm ua haujlwm:: input() ua haujlwm kom tau txais cov kev txwv rau kev ua lag luam. Cov neeg tsim khoom siv tau ZeroCopySource los deserialize qhov tshwm sim byte array. Nyob rau hauv uas thawj array ntawm bytes nyeem yog lub npe ntawm invoke method, ua raws li cov txheej txheem tsis.

Cov txiaj ntsig ntawm kev ua tiav daim ntawv cog lus tau xa rov qab li cas?

Lub sijhawm khiav:: ret muaj nuj nqi muab los ntawm lub tsev qiv ntawv ontio_std rov qab qhov tshwm sim ntawm kev ua tiav.

Qhov ua tiav invoke muaj nuj nqi zoo li no:

Yuav sau li cas WebAssembly ntse daim ntawv cog lus ntawm Ontology network? Ntu 1: Rust

Serializing thiab Deserializing daim ntawv cog lus

Nyob rau hauv tus txheej txheem ntawm kev tsim cov ntawv cog lus, cov neeg tsim khoom ib txwm ua rau muaj teeb meem nrog serialization thiab deserialization, tshwj xeeb nrog yuav ua li cas khaws cov ntaub ntawv hauv cov ntaub ntawv thiab yuav ua li cas deserialize ib byte array nyeem los ntawm cov ntaub ntawv kom tau txais cov ntaub ntawv hom.

Lub tsev qiv ntawv ontio_std muab kev txiav txim siab thiab encoder cuam tshuam rau cov ntaub ntawv serialization thiab deserialization. Cov teb ntawm cov qauv kuj tseem siv cov decoder thiab encoder interfaces kom cov qauv tuaj yeem raug serialized thiab deserialized. Piv txwv ntawm chav Sink yuav tsum tau thaum muaj ntau hom ntaub ntawv raug serialized. Ib qho piv txwv ntawm Chav Kawm Sink muaj cov txheej txheem hom buf uas khaws cov ntaub ntawv byte hom, thiab tag nrho cov ntaub ntawv serialized khaws cia hauv buf.

Rau cov ntaub ntawv ntev ntev (xws li: byte, u16, u32, u64, thiab lwm yam), cov ntaub ntawv ncaj qha hloov mus rau byte array thiab tom qab ntawd khaws cia hauv buf; rau cov ntaub ntawv uas tsis yog-taw ntev, ntev yuav tsum tau serialized ua ntej, ces Ddata (piv txwv li, unsigned integers tsis paub qhov luaj li cas, xws li u16, u32, los yog u64, thiab lwm yam).

Deserialization yog qhov sib txawv kiag li. Rau txhua txoj kev serialization, muaj ib txoj kev sib raug zoo deserialization. Deserialization yuav tsum tau siv cov piv txwv ntawm qhov Source class. Cov chav kawm no muaj ob lub teb buf thiab pos. Buf yog siv los khaws cov ntaub ntawv kom deserialized thiab pos yog siv los khaws cov ntawv nyeem tam sim no. Thaum ib hom ntaub ntawv tab tom nyeem, yog tias koj paub nws qhov ntev, koj tuaj yeem nyeem nws ncaj qha, rau cov ntaub ntawv tsis paub ntev - nyeem qhov ntev ua ntej, tom qab ntawd nyeem cov ntsiab lus.

Nkag mus thiab hloov kho cov ntaub ntawv hauv cov saw hlau

ontology-wasm-cdt-xeb - encapsulated ib txoj kev ua haujlwm rau kev ua haujlwm nrog cov ntaub ntawv hauv cov saw hlau, uas yooj yim rau cov neeg tsim khoom los siv cov haujlwm xws li ntxiv, rho tawm, hloov thiab nug cov ntaub ntawv hauv cov saw hlau raws li hauv qab no:

  • database::get(key) - yog siv los thov cov ntaub ntawv los ntawm cov saw hlau, thiab cov lus thov tseem ceeb ntawm kev siv AsRef interface;
  • database::put(qhov tseem ceeb, tus nqi) - siv los khaws cov ntaub ntawv hauv lub network. Qhov tseem ceeb thov kev siv ntawm AsRef interface, thiab tus nqi thov kev siv ntawm Encoder interface;
  • database:: delete(key) - yog siv los tshem tawm cov ntaub ntawv los ntawm cov saw, thiab qhov tseem ceeb thov kev siv ntawm AsRef interface.

Daim ntawv cog lus kuaj

Thaum cov txheej txheem ntawm daim ntawv cog lus raug coj los siv, peb xav tau kev nkag mus rau cov ntaub ntawv ntawm cov saw thiab peb xav tau lub tshuab virtual tsim nyog los ua kom tiav cov bytecode ntawm daim ntawv cog lus, yog li feem ntau yuav tsum tau xa daim ntawv cog lus ntawm cov saw rau kev sim. Tab sis txoj kev sim no yog teeb meem. Txhawm rau ua kom yooj yim rau cov neeg tsim khoom los sim cov ntawv cog lus, lub tsev qiv ntawv ontio_std muab cov qauv rau kev sim. Qhov no module muab ib tug simulation ntawm cov ntaub ntawv nyob rau hauv lub Circuit Court, ua rau nws yooj yim dua rau cov neeg tsim khoom los ntsuas cov txheej txheem hauv daim ntawv cog lus. Cov piv txwv tshwj xeeb tuaj yeem pom no.

Daim ntawv cog lus debugging

console::debug(msg) qhia debug cov ntaub ntawv thaum debugging daim ntawv cog lus. Cov ntaub ntawv msg yuav muab ntxiv rau hauv cov ntaub ntawv node. Ib qho yuav tsum tau ua ua ntej yog txhawm rau teeb tsa cov ntaub ntawv nkag mus rau hom kev debug thaum lub zos Ontology xeem node khiav.

runtime::notify(msg) outputs cov ntaub ntawv debug tsim nyog thaum daim ntawv cog lus yog debugged. Txoj kev no yuav khaws cov ntaub ntawv nkag mus rau hauv cov saw thiab tuaj yeem nug los ntawm cov saw siv txoj kev getSmartCodeEvent.

Tsab ntawv tau muab txhais los ntawm cov neeg kho ntawm Hashrate & Shares tshwj xeeb tshaj yog rau OntologyRussia. quaj

Koj puas yog tus tsim tawm? Koom nrog peb tech zej zog ntawm Discord. Tsis tas li, ua tib zoo saib Developer Center ntawm peb lub vev xaib, qhov twg koj tuaj yeem nrhiav cov cuab yeej tsim tawm, cov ntaub ntawv, thiab lwm yam.

Ontology

Tau qhov twg los: www.hab.com

Ntxiv ib saib