Me pehea te tuhi i tetahi kirimana atamai WebAssembly i runga i te whatunga Ontology? Wāhanga 1: Waikura

Me pehea te tuhi i tetahi kirimana atamai WebAssembly i runga i te whatunga Ontology? Wāhanga 1: Waikura

Ko te hangarau Ontology Wasm ka whakaheke te utu mo te heke i nga kirimana atamai dApp me te arorau pakihi uaua ki te poraka, na reira ka tino whakarangatira i te rauwiringa kaiao dApp.

I tenei wa Ontology Wasm I te wa ano ka tautoko te Rust me te C++ whanaketanga. He pai ake te tautoko a te reo Rust i a Wasm, a he ngawari ake te bytecode hangaia, ka taea te whakaiti ake i te utu mo nga waea kirimana. Na, me pehea te whakamahi i te Rust ki te hanga kirimana i runga i te whatunga Ontology?

Te whakawhanake i tetahi kirimana WASM me te waikura

Waihanga kirimana

utanga he pai te hanga kaupapa me te taputapu whakahaere mokihi mo te whanaketanga Rust, e awhina ana i nga kaiwhakawhanake kia pai ake te whakarite i te taunekeneke o nga waehere me nga whare pukapuka tuatoru. Hei waihanga i tetahi kirimana Ontology Wasm hou, whakahaere noa i te whakahau e whai ake nei:

Me pehea te tuhi i tetahi kirimana atamai WebAssembly i runga i te whatunga Ontology? Wāhanga 1: Waikura

Ko te hanganga kaupapa e whakaputa ana:

Me pehea te tuhi i tetahi kirimana atamai WebAssembly i runga i te whatunga Ontology? Wāhanga 1: Waikura

Ka whakamahia te kōnae Cargo.toml ki te whakarite i nga korero kaupapa taketake me nga korero whare pukapuka whakawhirinaki. Ko te waahanga [lib] o te konae me tautuhi ki te momo crate = ["cdylib"]. Ka whakamahia te kōnae lib.rs ki te tuhi i te waehere arorau kirimana. I tua atu, me taapiri koe i nga tawhā ti'aturi ki te waahanga [ti'aturi] o te konae whirihoranga Cargo.toml:

Me pehea te tuhi i tetahi kirimana atamai WebAssembly i runga i te whatunga Ontology? Wāhanga 1: Waikura

Ma tenei ti'aturi, ka taea e nga kaiwhakawhanake te waea atu i nga atanga e taunekeneke ana ki te Ontology blockchain me nga taputapu penei i te tawhā raupapa.

Mahi urunga kirimana

Kei ia papatono he mahi whakauru, penei i te mahi matua ka kitea e tatou, engari kaore he mahi matua a te kirimana. Ina whakawhanakehia he kirimana Wasm ma te whakamahi i te Rust, ka whakamahia te mahi tono taunoa hei mahi whakauru hei whakamahi i te kirimana. Ko te ingoa o tetahi mahi i roto i te Rust ka kore e marama i te wa e whakahiato ana i te waehere punawai Rust ki te bytecode ka taea e te miihini mariko te mahi. Hei aukati i te whakahiato ki te whakaputa i te waehere taapiri me te whakaiti i te rahi o te kirimana, ka taapirihia e te mahi tono te tohu #[no_mangle].

Me pehea e whiwhi tawhā ai te mahi invoke ki te whakahaere i tetahi tauwhitinga?

Ka whakaratohia e te whare pukapuka ontio_std he mahi::whakauru() hei tiki i nga tawhā ki te whakahaere i tetahi tauwhitinga. Ka taea e nga Kaihanga te whakamahi i te ZeroCopySource ki te whakakore i te raupapa paita ka puta. Ko te rarangi tuatahi o nga paita panui ko te ingoa o te tikanga tono, ka whai i nga tawhā tikanga.

He pehea te whakahokinga mai o te mahi kirimana?

Ko te wa whakahaere::ret mahi e whakaratohia ana e te whare pukapuka ontio_std ka whakahoki i te hua o te mahinga tikanga.

Ko te mahi tono kua oti te ahua penei:

Me pehea te tuhi i tetahi kirimana atamai WebAssembly i runga i te whatunga Ontology? Wāhanga 1: Waikura

Te Whakaraupapa me te Whakakore i nga Raraunga kirimana

I roto i te tukanga o te whakawhanake kirimana, ka raru nga kaiwhakawhanake i nga wa katoa ki te rangatū me te deserialization, ina koa me pehea te penapena i tetahi momo raraunga hanganga i roto i te paataka raraunga me te pehea ki te whakakore i te raupapa paita ka panuihia mai i te paataka korero kia whiwhi momo raraunga hanganga.

Ko te whare pukapuka ontio_std e whakarato ana i nga atanga wetewaehere me te encoder mo te rangatū raraunga me te whakakore. Ko nga mara o te hanganga ka whakatinana hoki i nga atanga wetewaehere me nga atanga encoder kia taea ai te hanga rangatū me te whakaheke. Ko nga tauira o te karaehe Totohu ka hiahiatia i te wa e raupapahia ai nga momo raraunga. Ko tetahi tauira o te karaehe Sink he buf apure momo huinga e pupuri ana i nga raraunga momo paita, ka penapena nga raraunga raupapa katoa ki te buf.

Mo nga raraunga roa kua whakaritea (hei tauira: paita, u16, u32, u64, me etahi atu), ka huri tika te raraunga ki te huinga paita katahi ka penapena ki te buf; mo nga raraunga o te roa-kore, me raupapa te roa i te tuatahi, katahi ko Ddata (hei tauira, nga tauoti kore i hainatia o te rahi e mohiotia ana, tae atu ki te u16, u32, u64 ranei, me etahi atu).

Ko te whakakorekoretanga he rereke. Mo ia tikanga whakarangaranga, he tikanga whakamaarama e rite ana. Ko te whakakorekoretanga me whakamahi nga tauira o te akomanga Puna. Ko tenei tauira karaehe e rua nga mara buf me te pou. Ka whakamahia te Buf ki te penapena i nga raraunga ka whakakorehia, ka whakamahia te pos ki te penapena i te waahi panui o naianei. Ina panuihia tetahi momo raraunga, mena ka mohio koe ki tona roa, ka taea e koe te panui tika, mo nga raraunga e kore e mohiotia te roa—panuihia te roa i te tuatahi, katahi ka panuihia nga korero.

Te uru me te whakahou i nga raraunga i roto i te mekameka

ontology-wasm-cdt-rust - he tikanga whakahaere mo te mahi me nga raraunga i roto i te mekameka, he pai mo nga kaiwhakawhanake ki te whakatinana i nga mahi penei i te taapiri, te whakakore, te huri me te patai raraunga i roto i te mekameka penei:

  • pātengi raraunga::get(key) - ka whakamahia ki te tono raraunga mai i te mekameka, me te tono matua ki te whakatinanatanga o te atanga AsRef;
  • pātengi raraunga::put(key, value) - whakamahia ki te rokiroki raraunga i runga i te whatunga. Ka tono a matua ki te whakatinanatanga o te atanga AsRef, me te tono uara ki te whakatinanatanga o te atanga Encoder;
  • pātengi raraunga::delete(key) - ka whakamahia hei tango i nga raraunga mai i te mekameka, me te tono matua ki te whakatinanatanga o te atanga AsRef.

Te whakamatautau kirimana

Ina whakatinanahia nga tikanga o te kirimana, me uru ki nga raraunga i runga i te mekameka me te hiahia he miihini mariko e tika ana hei whakatutuki i te bytecode o te kirimana, na reira me tuku te kirimana ki te mekameka hei whakamatautau. Engari he raruraru tenei tikanga whakamatautau. Hei whakamaarama ake mo nga kaiwhakawhanake ki te whakamatautau i nga kirimana, ka tukuna e te whare pukapuka ontio_std he waahanga whakahianga hei whakamatautau. Ko tenei kōwae e whakarato ana i te whaihanga o nga raraunga i roto i te ara iahiko, he maamaa ake mo nga kaihanga ki te whakamatau i nga tikanga i roto i te kirimana. Ka kitea etahi tauira motuhake konei.

Patuiro kirimana

console::debug(msg) e whakaatu ana i nga korero patuiro i te wa e tarai ana i tetahi kirimana. Ka taapirihia nga korero korero ki te konae rangitaki node. Ko te tikanga he whakarite i te taumata o te konae rangitaki ki te aratau patuiro i te wa e rere ana te node whakamatautau Ontology rohe.

Runtime::notify(msg) ka whakaputa i nga korero patuiro tika i te wa e taraihia ana te kirimana. Ma tenei tikanga e penapena nga korero kua whakauruhia ki roto i te mekameka ka taea te patai mai i te mekameka ma te whakamahi i te tikanga getSmartCodeEvent.

I whakamaoritia te tuhinga e nga kaiwhakatikatika o Hashrate&Shares ina koa mo OntologyRussia. tangi

He kaiwhakawhanake koe? Hono mai ki ta maatau hapori hangarau i Korero. Ano, tirohia Pokapū Kaiwhakawhanake i runga i ta maatau paetukutuku, ka kitea e koe nga taputapu kaiwhakawhanake, tuhinga, me etahi atu.

Tuhinga

Source: will.com

Tāpiri i te kōrero