Yadda ake rubuta kwangilar wayo ta WebAssembly akan hanyar sadarwar Ontology? Kashi na 1: Tsatsa

Yadda ake rubuta kwangilar wayo ta WebAssembly akan hanyar sadarwar Ontology? Kashi na 1: Tsatsa

Fasahar Wasm Ontology tana rage farashin ƙaura dApp kwangiloli masu wayo tare da hadaddun dabaru na kasuwanci zuwa blockchain, ta haka yana wadatar da yanayin dApp sosai.

A halin yanzu Ontology Wasm A lokaci guda yana goyan bayan ci gaban Rust da C++. Harshen Rust yana goyan bayan Wasm mafi kyau, kuma bytecode da aka samar ya fi sauƙi, wanda zai iya ƙara rage farashin kiran kwangila. Don haka, yadda ake amfani da Rust don haɓaka kwangila akan hanyar sadarwar Ontology?

Haɓaka Kwangilar WASM tare da Tsatsa

Ƙirƙiri kwangila

ofishin kyakkyawan aikin ƙirƙira ne da kayan aikin sarrafa fakiti don ci gaban Rust, wanda ke taimaka wa masu haɓakawa don tsara hulɗar lambar da ɗakunan karatu na ɓangare na uku. Don ƙirƙirar sabuwar kwangilar Wasm Ontology, kawai gudanar da umarni mai zuwa:

Yadda ake rubuta kwangilar wayo ta WebAssembly akan hanyar sadarwar Ontology? Kashi na 1: Tsatsa

Tsarin aikin da yake haifarwa:

Yadda ake rubuta kwangilar wayo ta WebAssembly akan hanyar sadarwar Ontology? Kashi na 1: Tsatsa

Ana amfani da fayil ɗin Cargo.toml don saita ainihin bayanan aikin da bayanan laburare masu dogaro. Dole ne a saita sashin [lib] na fayil zuwa nau'in crate-type = ["cdylib"]. Ana amfani da fayil ɗin lib.rs don rubuta lambar dabaru na kwangila. Bugu da kari, kuna buƙatar ƙara sigogin dogaro zuwa sashin [dogara] na fayil ɗin daidaitawa na Cargo.toml:

Yadda ake rubuta kwangilar wayo ta WebAssembly akan hanyar sadarwar Ontology? Kashi na 1: Tsatsa

Tare da wannan dogaro, masu haɓakawa na iya kiran musaya waɗanda ke yin hulɗa tare da toshewar Ontology da kayan aikin kamar siginar serialization.

Ayyukan shigar kwangila

Kowane shiri yana da aikin shigarwa, kamar babban aikin da muka saba gani, amma kwangilar ba ta da babban aiki. Lokacin da aka haɓaka kwangilar Wasm ta amfani da Tsatsa, ana amfani da aikin kiran tsoho azaman aikin shigarwa don amfani da kwangilar. Sunan aiki a cikin Rust ba zai bayyana ba lokacin tattara lambar tushen Rust zuwa bytecode wanda injin kama-da-wane zai iya aiwatarwa. Don hana mai tarawa daga samar da lambar da ba ta da yawa kuma a rage girman kwangilar, aikin kiran yana ƙara bayanin #[no_mangle].

Ta yaya aikin kiran ke samun sigogi don aiwatar da ma'amala?

Laburaren ontio_std yana ba da aikin runtime :: shigarwa() don samun sigogi don aiwatar da ma'amala. Masu haɓakawa za su iya amfani da ZeroCopySource don ɓata sakamakon tsararrun byte. A cikin abin da farkon tsararrun bytes ake karantawa shine sunan hanyar kira, sannan kuma sigogin hanyar.

Yaya aka dawo da sakamakon aiwatar da kwangilar?

Aikin runtime :: ret da ɗakin karatu na ontio_std ya samar yana dawo da sakamakon aiwatar da hanyar.

Aikin kiran da aka kammala yayi kama da haka:

Yadda ake rubuta kwangilar wayo ta WebAssembly akan hanyar sadarwar Ontology? Kashi na 1: Tsatsa

Serializing da Deserializing Data Kwangila

A cikin tsarin haɓaka kwangila, masu haɓakawa koyaushe suna fuskantar matsaloli tare da serialization da ɓata lokaci, musamman yadda ake adana nau'in bayanan struct a cikin ma'ajin bayanai da kuma yadda za a lalata rukunin byte ɗin da ake karantawa daga bayanan don samun nau'in bayanan tsari.

Laburaren ontio_std yana ba da musaya mai ƙididdigewa da ɓoyayyiyar bayanai don serialization na bayanai da ɓarna. Filayen tsarin kuma suna aiwatar da mu'amalar dikodi da rikodi ta yadda tsarin za'a iya jera shi da ɓata shi. Ana buƙatar misalan ajin Sink lokacin da aka jera nau'ikan bayanai daban-daban. Misali na ajin Sink yana da nau'in buf filin saiti wanda ke adana bayanan nau'in byte, kuma duk bayanan da aka jera ana adana su a cikin buf.

Don tsayayyen bayanai (misali: byte, u16, u32, u64, da sauransu), ana canza bayanan kai tsaye zuwa tsararrun byte sannan a adana su a buf; don bayanan tsayin da ba a kayyade ba, dole ne a fara jera tsayin daka, sannan Ddata (misali, adadin da ba a sanya hannu ba na girman da ba a san shi ba, gami da u16, u32, ko u64, da sauransu).

Deserialization ne ainihin kishiyar. Ga kowace hanyar serialization, akwai hanyar kawar da madaidaicin. Deserialization yana buƙatar amfani da misalin ajin Tushen. Wannan misalin aji yana da buf filaye biyu da pos. Ana amfani da Buf don adana bayanan don a ɓata kuma ana amfani da pos don adana matsayin karatun yanzu. Lokacin da ake karanta wani nau'in bayanai, idan kun san tsayinsa, kuna iya karanta shi kai tsaye, don bayanan da ba a san tsayin su ba—karanta tsayin farko, sannan karanta abin da ke ciki.

Samun dama kuma sabunta bayanai a cikin sarkar

ontology-wasm-cdt-tsatsa - encapsulated hanyar aiki don aiki tare da bayanai a cikin sarkar, wanda ya dace da masu haɓakawa don aiwatar da ayyuka kamar ƙarawa, sharewa, canzawa da tambayar bayanai a cikin sarkar kamar haka:

  • database ::samu (key) - ana amfani da shi don neman bayanai daga sarkar, da kuma buƙatun buƙatun aiwatar da ƙirar AsRef;
  • database ::sa (maɓalli, ƙima) - ana amfani dashi don adana bayanai akan hanyar sadarwa. Maɓalli yana buƙatar aiwatar da masarrafar AsRef, kuma ƙima ta buƙaci aiwatar da ƙirar Encoder;
  • database :: share(key) - ana amfani dashi don cire bayanai daga sarkar, kuma mahimman buƙatun aiwatar da ƙirar AsRef.

Gwajin kwangila

Lokacin da aka aiwatar da hanyoyin kwangila, muna buƙatar samun damar yin amfani da bayanan da ke kan sarkar kuma muna buƙatar na'ura mai mahimmanci don aiwatar da bytecode na kwangilar, don haka gabaɗaya ya zama dole a tura kwangilar akan sarkar don gwaji. Amma wannan hanyar gwaji tana da matsala. Don sauƙaƙa wa masu haɓakawa don gwada kwangila, ɗakin karatu na ontio_std yana ba da tsarin izgili don gwaji. Wannan tsarin yana ba da simulation na bayanai a cikin da'irar, yana sauƙaƙa wa masu haɓakawa don gwada hanyoyin da ke cikin kwangilar. Ana iya samun takamaiman misalai a nan.

Gyaran kwangila

console:: debug(msg) yana nuna bayanan kuskure yayin da ake gyara kwangila. Za a ƙara bayanin msg zuwa fayil ɗin log ɗin node. Abinda ake bukata shine saita matakin fayil ɗin log ɗin zuwa yanayin gyara kuskure lokacin da kumburin gwajin Ontology na gida ke gudana.

runtime :: sanarwa(msg) yana fitar da bayanan da suka dace yayin da ake cire kwangilar. Wannan hanyar za ta adana bayanan da aka shigar a cikin sarkar kuma ana iya tambayar su daga sarkar ta amfani da hanyar getSmartCodeEvent.

Editocin Hashrate&Shares ne suka fassara labarin musamman don OntologyRussia. kuka

Shin kai mai haɓaka ne? Kasance tare da jama'ar fasahar mu a Zama. Hakanan, duba Cibiyar Haɓakawa akan gidan yanar gizon mu, inda zaku iya samun kayan aikin haɓakawa, takardu, da ƙari.

Ontology

source: www.habr.com

Add a comment