Kedu otu esi ede nkwekọrịta smart WebAssembly na netwọk Ontology? Nkeji 1: nchara

Kedu otu esi ede nkwekọrịta smart WebAssembly na netwọk Ontology? Nkeji 1: nchara

Nkà na ụzụ Ontology Wasm na-ebelata ọnụ ahịa nke ịkwaga dApp smart contracts na mgbagwoju anya azụmahịa na blockchain, si otú ahụ na-eme ka gburugburu dApp dịkwuo mma.

В настоящее время Ontology Wasm N'otu oge na-akwado ma Rust na C++ mmepe. Asụsụ Rust na-akwado Wasm nke ọma, yana bytecode emepụtara dị mfe, nke nwere ike belata ọnụ ahịa oku nkwekọrịta. Yabụ, otu esi eji Rust mepụta nkwekọrịta na netwọk Ontology?

Imepụta nkwekọrịta WASM na nchara

Mepụta nkwekọrịta

ibu bụ ezigbo ọrụ okike na ngwa njikwa ngwugwu maka mmepe Rust, nke na-enyere ndị mmepe aka ịhazi mmekọrịta nke koodu na ọba akwụkwọ ndị ọzọ. Iji mepụta nkwekọrịta Ontology Wasm ọhụrụ, mee naanị iwu a:

Kedu otu esi ede nkwekọrịta smart WebAssembly na netwọk Ontology? Nkeji 1: nchara

Nhazi oru ngo ọ na-ewepụta:

Kedu otu esi ede nkwekọrịta smart WebAssembly na netwọk Ontology? Nkeji 1: nchara

A na-eji faịlụ Cargo.toml guzobe ozi gbasara ọrụ yana ozi ọba akwụkwọ dabere. A ga-edozirịrị ngalaba [lib] nke faịlụ ka ọ bụrụ crate-type = ["cdylib"]. A na-eji faịlụ lib.rs dee koodu mgbagha nkwekọrịta. Na mgbakwunye, ịkwesịrị ịgbakwunye paramita dabere na ngalaba [ndabere] nke faịlụ nhazi Cargo.toml:

Kedu otu esi ede nkwekọrịta smart WebAssembly na netwọk Ontology? Nkeji 1: nchara

Site na ndabere a, ndị mmepe nwere ike ịkpọ interfaces ndị na-emekọrịta ihe na Ontology blockchain yana ngwaọrụ dị ka serialization parameter.

Ọrụ ntinye nkwekọrịta

Mmemme ọ bụla nwere ọrụ ntinye, dị ka isi ọrụ anyị na-ahụkarị, mana nkwekọrịta enweghị isi ọrụ. Mgbe emepụtara nkwekọrịta Wasm site na iji Rust, a na-eji ọrụ ịkpọku ndabara dị ka ọrụ ntinye iji jiri nkwekọrịta ahụ. Aha ọrụ dị na Rust agaghị edocha anya mgbe ị na-achịkọta koodu iyi Rust n'ime bytecode nke igwe mebere nwere ike igbu ya. Iji gbochie onye na-achịkọta ihe site n'ịmepụta koodu anaghị arụ ọrụ ma belata nha nkwekọrịta ahụ, ọrụ ịkpọku na-agbakwunye nkọwa #[no_mangle].

Kedu ka ọrụ oku si enweta paramita iji mezuo azụmahịa?

Ọbá akwụkwọ ontio_std na-enye ọrụ ọsọ ọsọ :: ntinye() iji nweta paramita iji mezuo azụmahịa. Ndị nrụpụta nwere ike iji ZeroCopySource mebie n'usoro byte na-esi na ya pụta. N'ime nke mbụ n'usoro nke bytes na-agụ bụ aha nke usoro ịkpọku, usoro nke sochiri ya.

Kedu ka esi weghachi nsonaazụ nke ogbugbu nkwekọrịta ahụ?

Oge ojiri gaa :: ret ọrụ nke ọbá akwụkwọ ontio_std na-eweghachite nsonaazụ nke usoro mmezu.

Ọrụ ịkpọku emechara dị ka nke a:

Kedu otu esi ede nkwekọrịta smart WebAssembly na netwọk Ontology? Nkeji 1: nchara

Serializing na Deserializing data nkwekọrịta

Na usoro nke na-emepe emepe contracts, mmepe mgbe niile na-agba ọsọ na nsogbu na serialization na deserialization, kpọmkwem na otú e si echekwa a struct data ụdị na nchekwa data na otú deserialize a byte array na-agụ site na nchekwa data iji nweta a struct data ụdị.

Ọbá akwụkwọ ontio_std na-enye ihe ngbanwe na ntinye koodu maka nhazi data na nhazigharị data. Ogige nke struct na-arụkwa ọrụ ihe ngbanwe na ntinye koodu ka e wee nwee ike ịhazigharị ihe owuwu ahụ ma mebie ya. Achọrọ ihe atụ nke klaasị Sink mgbe a na-ahazi ụdị data dị iche iche. Otu ihe atụ nke klaasị Sink nwere ụdị ihe nrụnye ubi setịpụrụ nke na-echekwa ụdị data byte, yana data niile edobere n'ime buf.

Maka data ogologo ogologo (dịka ọmụmaatụ: byte, u16, u32, u64, wdg), a na-atụgharị data ahụ ozugbo ka ọ bụrụ nhazi byte wee chekwaa ya na buf; maka data nke ogologo na-abụghị nke edobere, a ga-ebu ụzọ hazie ogologo ogologo, wee Ddata (dịka ọmụmaatụ, integers na-edeghị aha nke nha amaghi, gụnyere u16, u32, ma ọ bụ u64, wdg).

Deserialization bụ nnọọ iche. Maka usoro ọ bụla serialization, e nwere usoro ntọhapụ kwekọrọ. Deserialization chọrọ iji ihe atụ nke klaasị Source. Ihe atụ klaasị a nwere oghere abụọ na pos. A na-eji Buf na-echekwa data ahụ ka ewepụsị ya ma jiri pos chekwaa ọnọdụ ọgụgụ ugbu a. Mgbe a na-agụ otu ụdị data, ọ bụrụ na ị maara ogologo ya, ị nwere ike ịgụ ya ozugbo, maka data nke ogologo oge amaghị - buru ụzọ gụọ ogologo ya, wee gụọ ihe dị n'ime ya.

Nweta na melite data na yinye

ontology-wasm-cdt-nchara - etinyere usoro arụmọrụ maka iji data na yinye rụọ ọrụ, nke dị mma maka ndị mmepe iji mejuputa arụmọrụ dị ka ịgbakwunye, ihichapụ, ịgbanwe na ajụjụ data na yinye dị ka ndị a:

  • nchekwa data:: nweta(key) - a na-eji rịọ data sitere na yinye, na isi arịrịọ ka mmejuputa nke AsRef interface;
  • nchekwa data :: tinye (igodo, uru) - eji echekwa data na netwọkụ. Isi na-arịọ ka mmejuputa nke interface AsRef, na uru na-arịọ ka mmejuputa nke interface Encoder;
  • nchekwa data :: ihichapụ (igodo) - a na-eji wepụ data na yinye, na isi arịrịọ ka mmejuputa nke AsRef interface.

Nnwale nkwekọrịta

Mgbe usoro nke nkwekọrịta na-emejuputa atumatu, anyị kwesịrị ịnweta data na yinye na anyị chọrọ ihe kwesịrị ekwesị mebere igwe mebie bytecode nke nkwekọrịta, n'ihi ya, ọ na-adịkarị mkpa idokwa nkwekọrịta na yinye maka ule. Mana usoro nnwale a nwere nsogbu. Iji mee ka ọ dịrị ndị mmepe mfe ịnwale nkwekọrịta, ọbá akwụkwọ ontio_std na-enye modul mock maka nnwale. Modul a na-enye simulation nke data na sekit, na-eme ka ọ dịrị ndị mmepe mfe iji nyochaa usoro ndị dị na nkwekọrịta ahụ. Enwere ike ịchọta ihe atụ akọwapụtara ebe a.

Ndozi nkwekọrịta

console:: debug(msg) na-egosiputa ozi nbibi ka ọ na-arụ ọrụ nkwekọrịta. A ga-agbakwunye ozi msg na faịlụ ndekọ ọnụ. Ihe a na-achọsi ike bụ ịtọ ọkwa faịlụ log ka ọ bụrụ ọnọdụ nbibi mgbe ọnụ ahịa Ontology mpaghara na-agba ọsọ.

runtime:: gwa(msg) na-ewepụta ozi nzipu kwesịrị ekwesị mgbe a na-emegharị nkwekọrịta ahụ. Usoro a ga-echekwa ozi etinyere n'agbụ a, enwere ike jụọ ya site na yinye site na iji usoro getSmartCodeEvent.

Ndị ndezi Hashrate&Shares tụgharịrị akụkọ a karịsịa maka OntologyRussia. akwa akwa

Ị bụ onye nrụpụta? Soro obodo teknụzụ anyị na Nsogbu. Ọzọkwa, lelee anya Ebe Onye Mmepụta na webụsaịtị anyị, ebe ị nwere ike ịhụ ngwaọrụ nrụpụta, akwụkwọ, na ndị ọzọ.

Ojiji

isi: www.habr.com

Tinye a comment