Itekhnoloji ye-Ontology Wasm inciphisa iindleko zokufuduka kweekontraki ezihlakaniphile ze-dApp ezinengqiqo yeshishini elintsonkothileyo kwi-blockchain, ngaloo ndlela ityebisa kakhulu inkqubo yendalo ye-dApp.
Okwangoku
Ukuphuhlisa ikhontrakthi ye-WASM kunye neRust
Yenza isivumelwano
Ubume beprojekthi obuvelisayo:
Ifayile yeCargo.toml isetyenziselwa ukuseta ulwazi olusisiseko lweprojekthi kunye nolwazi oluxhomekeke kwithala leencwadi. I [lib] icandelo lefayile kufuneka limiselwe kuhlobo lwekhreyithi = ["cdylib"]. Ifayile ye-lib.rs isetyenziselwa ukubhala ikhowudi yengqiqo yekhontrakthi. Ukongeza, kufuneka udibanise iparameters zokuxhomekeka kwi [dependencies] icandelo le Cargo.toml ifayile yoqwalaselo:
Ngolu kuxhomekeka, abaphuhlisi banokubiza ujongano olunxibelelana ne-Ontology blockchain kunye nezixhobo ezinje ngeparamitha yokulandelelana.
Umsebenzi wokungena kwikhontrakthi
Inkqubo nganye inomsebenzi wegalelo, njengowona msebenzi uphambili esiqhele ukuwubona, kodwa ikhontrakthi ayinawo umsebenzi ongundoqo. Xa ikhontrakthi ye-Wasm iphuhliswa kusetyenziswa umhlwa, umsebenzi wokubiyela omiselweyo usetyenziswa njengomsebenzi wegalelo lokusebenzisa ikhontrakthi. Igama lomsebenzi kwi-Rust aliyi kucaca xa uqulunqa ikhowudi yemvelaphi yomhlwa kwi-bytecode enokuphunyezwa ngumatshini wenyani. Ukuthintela umqokeleli ekuveliseni ikhowudi engafunekiyo kunye nokunciphisa ubungakanani bekhontrakthi, umsebenzi wokuvuselela wongeza i-#[no_mangle] inkcazo.
Uzifumana njani iiparameters ukwenza intengiselwano?
I ontio_std ilayibrari ibonelela ngexesha lokuqhuba::input () umsebenzi ukufumana iparameters ukuphumeza intengiselwano. Abaphuhlisi banokusebenzisa i-ZeroCopySource ukuze balahlekise uluhlu olunesiphumo se-byte. Apho uluhlu lokuqala lwee-bytes lufundwayo ligama lendlela ye-invoke, ilandelwa yindlela yeparameters.
Sibuyiswa njani isiphumo sokwenziwa kwekhontrakthi?
Ixesha lokuqhutywa::ret umsebenzi obonelelwe lithala le-ontio_std libuyisela isiphumo sendlela yophumezo.
Umsebenzi ogqityiweyo wokucela ujongeka ngolu hlobo:
Ukwenza uthotho kunye nokususwa kwedatha yekhontrakthi
Kwinkqubo yokuphuhlisa iikhontrakthi, abaphuhlisi bahlala bengena kwiingxaki kunye ne-serialization kunye ne-deserialization, ngokukodwa ngendlela yokugcina uhlobo lwedatha ye-struct kwi-database kunye nendlela yokwenza i-byte array efundwe kwi-database ukuze ufumane uhlobo lwedatha yesakhiwo.
Ithala leencwadi le-ontio_std libonelela ngedikhowuda kunye nojongano lwe-encoder ukulungiselela uthotho lwedatha kunye nokususwa kwezinto. Imimandla yesakhiwo nayo iphumeza idikhowuda kunye nojongano lwe-encoder ukuze ulwakhiwo lube nolandelelwano kwaye lungabikho. Iimeko zeklasi yeSink ziyafuneka xa iindidi ezahlukeneyo zedatha zilandelelwaniswa. Umzekelo weklasi yeSinki ine-set-type buf yentsimi egcina idatha yohlobo lwe-byte, kwaye yonke idatha ye-serialized igcinwe kwi-buf.
Ngedatha yobude obumiselweyo (umzekelo: i-byte, u16, u32, u64, njl.), idatha iguqulelwa ngokuthe ngqo kwi-byte uluhlu kwaye emva koko igcinwe kwi-buf; kwidatha yobude obungaqingqwanga, ubude kufuneka bulandelelwe kuqala, buye emva koko i-Ddata (umzekelo, ii-integers ezingatyikitywanga zobungakanani obungaziwa, kubandakanywa u16, u32, okanye u64, njl. njl.).
I-Deserialization yinto echasene ngqo. Kuyo yonke indlela yokulinganisa, kukho indlela ehambelanayo ye-deserialization. I-Deserialization ifuna ukusetyenziswa kweemeko zodidi loMthombo. Lo mzekelo weklasi unemimandla emibini buf kunye ne-pos. I-Buf isetyenziselwa ukugcina idatha ukuba isuswe kwaye i-pos isetyenziselwa ukugcina indawo yokufunda yangoku. Xa kufundwa uhlobo oluthile lwedatha, ukuba uyazi ubude bayo, unokufunda ngokuthe ngqo, kwidatha yobude obungaziwa-funda ubude kuqala, uze ufunde iziqulatho.
Ukufikelela kunye nokuhlaziya idatha kwikhonkco
i-ontology-wasm-cdt-rust - ifake indlela yokusebenza yokusebenza ngedatha kwikhonkco, elungele ukuba abaphuhlisi baphumeze imisebenzi efana nokongeza, ukucima, ukutshintsha kunye nokubuza idatha kwikhonkco ngolu hlobo lulandelayo:
- idatabase::fumana(isitshixo) - isetyenziselwa ukucela idatha kwikhonkco, kunye nezicelo eziphambili zokuphunyezwa kwe-interface ye-AsRef;
- idatabase::beka(isitshixo, ixabiso) - esetyenziselwa ukugcina idatha kwinethiwekhi. Izicelo eziphambili zokuphunyezwa kwe-interface ye-AsRef, kwaye ixabiso licela ukuphunyezwa kwe-Encoder interface;
- idatabase::cima(isitshixo) - isetyenziselwa ukususa idatha kwikhonkco, kunye nezicelo eziphambili zokuphunyezwa kwe-interface ye-AsRef.
Uvavanyo lwekhontrakthi
Xa iindlela zekhontrakthi ziphunyezwa, sifuna ukufikelela kwidatha kwikhonkco kwaye sifuna umatshini ochanekileyo ofanelekileyo wokuqhuba i-bytecode yekhontrakthi, ngoko ke ngokuqhelekileyo kuyimfuneko ukuhambisa isivumelwano kwikhonkco lokuvavanya. Kodwa le ndlela yokuvavanya iyingxaki. Ukwenza kube lula kubaphuhlisi ukuvavanya izivumelwano, ithala leencwadi le-ontio_std libonelela ngemodyuli ehlekisayo yokuvavanya. Le modyuli ibonelela ngokulinganisa kwedatha kwisekethe, okwenza kube lula kubaphuhlisi ukuba bavavanye iindlela kwiikhontrakthi. Imizekelo ethile inokufunyanwa
Ulungiso lweempazamo kwikhontrakthi
ikhonsoli::debug(msg) ibonisa ulwazi lolungiso lweempazamo ngelixa ulungisa iimpazamo kwisivumelwano. Ulwazi lwe-msg luya kongezwa kwifayile yelog ye-node. Imfuno efunekayo kukuseta ifayile yelog kwimowudi yolungiso xa indawo yovavanyo lweOntology yasekuhlaleni isebenza.
ixesha lokusebenza::yazisa(msg) ikhupha ulwazi olufanelekileyo lolungiso lweempazamo ngelixa ikhontrakthi isalungiswa. Le ndlela izakugcina ulwazi olufakwe kwitsheyini kwaye inokubuzwa kwitsheyini usebenzisa indlela ye-getSmartCodeEvent.
Eli nqaku liguqulelwe ngabahleli beHashrate&Shares ingakumbi iOntologyRussia.
khala
Ngaba ungumphuhlisi? Joyina uluntu lwethu lwetekhnoloji ku
Intology
Iwebhusayithi yeOntology GitHub /Ingxoxo - yocingo
IsiNgesi /IsiRashiya Twitter /Reddit
umthombo: www.habr.com