Conas conradh cliste WebAssembly a scríobh ar líonra Ontology? Cuid 1: Meirge

Conas conradh cliste WebAssembly a scríobh ar líonra Ontology? Cuid 1: Meirge

Laghdaíonn teicneolaíocht Ontology Wasm an costas a bhaineann le conarthaí cliste dApp a aistriú le loighic ghnó casta chuig an blockchain, rud a shaibhríonn go mór éiceachóras dApp.

Anois Ontology Wasm Tacaíonn an dá fhorbairt Rust agus C++ ag an am céanna. Tacaíonn an teanga Rust le Wasm níos fearr, agus tá an bytecode ginte níos simplí, rud a d'fhéadfadh costas glaonna conartha a laghdú tuilleadh. Mar sin, conas Rust a úsáid chun conradh a fhorbairt ar an ngréasán Ontology?

Conradh WASM a fhorbairt le Rust

Cruthaigh conradh

Cargo Is uirlis mhaith cruthaithe tionscadail agus bainistíochta pacáiste é d'fhorbairt Rust, rud a chabhraíonn le forbróirí idirghníomhú leabharlanna cód agus tríú páirtí a eagrú níos fearr. Chun conradh nua Ontology Wasm a chruthú, níl le déanamh ach an t-ordú seo a leanas a rith:

Conas conradh cliste WebAssembly a scríobh ar líonra Ontology? Cuid 1: Meirge

Struchtúr an tionscadail a ghineann sé:

Conas conradh cliste WebAssembly a scríobh ar líonra Ontology? Cuid 1: Meirge

Úsáidtear an comhad Cargo.toml chun faisnéis bhunúsach tionscadail agus faisnéis leabharlainne spleách a shocrú. Ní mór an chuid [lib] den chomhad a shocrú go crate-type = ["cdylib"]. Úsáidtear an comhad lib.rs chun cód loighce an chonartha a scríobh. Ina theannta sin, ní mór duit paraiméadair spleáchais a chur leis an rannán [spleáchais] den chomhad cumraíochta Cargo.toml:

Conas conradh cliste WebAssembly a scríobh ar líonra Ontology? Cuid 1: Meirge

Leis an spleáchas seo, is féidir le forbróirí glaoch ar chomhéadain a idirghníomhaíonn leis an blockchain Ontology agus uirlisí ar nós an paraiméadar serialization.

Feidhm iontrála conartha

Tá feidhm ionchuir ag gach clár, cosúil leis an bpríomhfheidhm a fheicimid de ghnáth, ach níl príomhfheidhm ag an gconradh. Nuair a fhorbraítear conradh Wasm ag baint úsáide as Rust, úsáidtear an fheidhm agairt réamhshocraithe mar an fheidhm ionchuir chun an conradh a úsáid. Ní bheidh ainm feidhme i Rust soiléir nuair a bheidh cód foinse Rust á thiomsú isteach i seachchód is féidir le meaisín fíorúil a fhorghníomhú. Chun an tiomsaitheoir a chosc ó chód iomarcach a ghiniúint agus méid an chonartha a laghdú, cuireann an fheidhm agairt an nóta #[no_mangle].

Conas a fhaigheann an fheidhm agairt paraiméadair chun idirbheart a chur i gcrích?

Soláthraíonn an leabharlann ontio_std feidhm am rite::ionchuir() chun na paraiméadair a fháil chun idirbheart a dhéanamh. Is féidir le forbróirí ZeroCopySource a úsáid chun an t-eagar beart a thagann dá bharr a dhíshraithiú. Ina bhfuil an chéad sraith beart a léitear mar ainm an mhodha agairt, agus paraiméadair an mhodha ina dhiaidh sin.

Conas a thugtar toradh fhorghníomhú an chonartha ar ais?

Tugann an fheidhm ama rite::ret a sholáthraíonn an leabharlann ontio_std ar ais an toradh ar fhorghníomhú modha.

Breathnaíonn an fheidhm agairt chríochnaithe mar seo:

Conas conradh cliste WebAssembly a scríobh ar líonra Ontology? Cuid 1: Meirge

Sonraí Conartha a Shraithniú agus a Dhíshraithiú

Agus conarthaí á bhforbairt, bíonn fadhbanna i gcónaí ag forbróirí maidir le sraithiú agus díscriú, agus go sonrach maidir le conas an cineál sonraí struct a stóráil sa bhunachar sonraí agus conas an t-eagar beart a léitear ón mbunachar sonraí a dhíshrianú chun an cineál sonraí struct a fháil.

Soláthraíonn an leabharlann ontio_std comhéadain díchódóra agus ionchódóra le haghaidh sraithiú sonraí agus díshraithiú. Feidhmíonn réimsí struct freisin na comhéadain díchódóra agus ionchódóra ionas gur féidir an struchtúr a shraithiú agus a dhíscriú. Tá gá le cásanna den rang Sink nuair a dhéantar cineálacha éagsúla sonraí a shraithiú. Tá buf réimse de chineál tacair ag sampla den rang Sink a stórálann sonraí an chineáil beart, agus stóráiltear na sonraí sraitheacha go léir i buf.

I gcás sonraí fad seasta (m.sh.: beart, u16, u32, u64, etc.), déantar na sonraí a thiontú go díreach chuig eagar beart agus ansin stóráiltear iad i buf; i gcás sonraí d’fhad neamhseasta, ní mór an fad a shraithiú ar dtús, ansin Ddata (mar shampla, slánuimhreacha gan síniú de mhéid anaithnid, lena n-áirítear u16, u32, nó u64, etc.).

Is é an díscriosú a mhalairt go díreach. I gcás gach modh sraitheachaithe, tá modh díshrianaithe comhfhreagrach ann. Éilíonn díscriosú úsáid a bhaint as cásanna den aicme Foinse. Tá dhá réimse buf agus pos sa chás aicme seo. Úsáidtear Buf chun na sonraí atá le díscriú a stóráil agus úsáidtear pos chun an suíomh léite reatha a stóráil. Nuair a bhíonn cineál áirithe sonraí á léamh, má tá a fhad ar eolas agat, is féidir leat é a léamh go díreach, le haghaidh sonraí nach bhfuil ar eolas faoi fhad - léigh an fad ar dtús, ansin léigh an t-ábhar.

Rochtain agus nuashonrú ar shonraí sa slabhra

ontology-wasm-cdt-meirge - modh oibríochta a chuimsiú chun oibriú le sonraí sa slabhra, atá áisiúil d’fhorbróirí oibríochtaí a chur chun feidhme amhail sonraí sa slabhra a shuimiú, a scriosadh, a athrú agus a cheistiú mar a leanas:

  • bunachar sonraí:: faigh (eochair) - úsáidtear é chun sonraí a iarraidh ón slabhra, agus príomhiarratais chun comhéadan AsRef a chur chun feidhme;
  • bunachar sonraí:: cuir (eochair, luach) - a úsáidtear chun sonraí a stóráil ar an líonra. Iarrann eochair-chomhéadan AsRef a chur chun feidhme, agus iarrann luach cur i bhfeidhm an chomhéadain Ionchódóra;
  • bunachar sonraí:: scrios (eochair) - úsáidtear é chun sonraí a bhaint den slabhra, agus príomhiarratais ar chur chun feidhme an chomhéadain AsRef.

Tástáil conartha

Nuair a chuirtear modhanna conartha i bhfeidhm, ní mór dúinn rochtain a fháil ar na sonraí ar an slabhra agus ní mór dúinn meaisín fíorúil cuí chun seachchód an chonartha a fhorghníomhú, mar sin de ghnáth is gá an conradh a imscaradh ar an slabhra le haghaidh tástála. Ach tá fadhb leis an modh tástála seo. Chun é a dhéanamh níos éasca d’fhorbróirí conarthaí a thástáil, soláthraíonn an leabharlann ontio_std modúl bréige le haghaidh tástála. Soláthraíonn an modúl seo ionsamhlú ar na sonraí sa slabhra, rud a fhágann go bhfuil sé níos éasca d'fhorbróirí tástáil aonad a dhéanamh ar na modhanna sa chonradh. Is féidir samplaí sonracha a fháil anseo.

Dífhabhtaithe Conartha

consól::debug(msg) taispeánann sé faisnéis dífhabhtaithe agus conradh á dhífhabhtú. Cuirfear an t-eolas msg leis an logchomhad nód. Is réamhriachtanas é leibhéal an logchomhaid a shocrú go dtí mód dífhabhtaithe nuair a bhíonn an nód tástála Ontology áitiúil ar siúl.

runtime::notify(msg) aschuir an fhaisnéis dífhabhtaithe cuí agus an conradh á dhífhabhtú. Stórálfaidh an modh seo an fhaisnéis a cuireadh isteach sa slabhra agus is féidir é a cheistiú ón slabhra ag baint úsáide as an modh getSmartCodeEvent.

D'aistrigh eagarthóirí Hashrate&Shares an t-alt go háirithe do OntologyRussia. caoin

An forbróir tú? Bígí inár bpobal teicneolaíochta ag Discord. Chomh maith leis sin, a chur le breathnú ar Ionad Forbróirí ar ár suíomh Gréasáin, áit ar féidir leat teacht ar uirlisí forbróra, doiciméadú agus go leor eile.

Ontology

Foinse: will.com

Add a comment