Ontology Wasm áááºážááá¬ááẠblockchain ááá¯á· ááŸá¯ááºááœá±ážáá±á¬ á
á®ážááœá¬ážáá±ážáá¯áá¹ááááŒáá·áº dApp á
áááºá
á¬áá»á¯ááºáá»á¬ážááᯠááœáŸá±á·ááŒá±á¬ááºážááŒááºážáá¯ááºáá»á
ááááºááᯠáá»áŸá±á¬á·áá»áá±ážáááºá ááá¯á·ááŒá±á¬áá·áº dApp áá±áá
áá
áºááᯠá¡ááœááºááŒáœááºáá
á±áááºá
áááºááŸáááœááº
Rust ááŒáá·áº WASM á á¬áá»á¯ááºááᯠáá±á¬áºáá±á¬ááºááŒááºážá
á á¬áá»á¯ááºáá áºáá¯áááºáá®ážáá«á
áá¯ááºáá±ážááá·áº ááá±á¬áá»ááºááœá²á·á
ááºážáá¯á¶-
Cargo.toml ááá¯ááºááᯠá¡ááŒá±áá¶ááá±á¬áá»ááºá¡áá»ááºá¡áááºááŸáá·áº ááŸá®ááá¯áá±áá±á¬ á
á¬ááŒáá·áºááá¯ááºá¡áá»ááºá¡áááºáá»á¬ážááᯠá
áá
áºááá·áºááœááºážááẠá¡áá¯á¶ážááŒá¯áá«áááºá ááá¯ááºá [lib] á¡ááá¯ááºážááᯠcrate-type = ["cdylib"] áᯠáááºááŸááºááá«áááºá á
á¬áá»á¯ááºáá¯áá¹áááá¯ááºááá¯áá±ážááẠlib.rs ááá¯ááºááᯠá¡áá¯á¶ážááŒá¯áááºá ááá¯á·á¡ááŒááºá áááºááẠCargo.toml ááœá²á·á
ááºážááŸá¯áá¯á¶á
á¶ááá¯ááºá [ááŸá®ááá¯ááŸá¯] ááá¹áááœáẠááŸá®ááá¯ááŸá¯áá±á¬ááºáá»á¬ážááᯠááá·áºááẠááá¯á¡ááºáááº-
á€ááŸá®ááá¯á¡á¬ážáá¬ážááŸá¯ááŒáá·áºá developer áá»á¬ážááẠOntology blockchain ááŸáá·áº serialization parameter áá²á·ááá¯á·áá±á¬ tools áá»á¬ážááŸáá·áº á¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááá·áº interface áá»á¬ážááá¯áá±á«áºááá¯ááá¯ááºáááºá
á á¬áá»á¯ááºáááºááŒááºáž áá¯ááºáá±á¬ááºáá»ááº
áááá¯ááááºááá¯ááºážááœáẠáá»áœááºá¯ááºááá¯á·ááŒááºáá±á·ááŸááá±á¬ áááºááá¯ááºáá±á¬ááºáá»ááºáá²á·ááá¯á·ááẠááá·áºááœááºážáá¯ááºáá±á¬ááºááŸá¯áá áºáᯠááŸááá±á¬áºáááºáž á á¬áá»á¯ááºááœáẠáááºááá¯ááºáá±á¬ááºáá»áẠáááŸááá«á Wasm á á¬áá»á¯ááºááᯠRust ááᯠá¡áá¯á¶ážááŒá¯á áááºáá±á¬ááºáá±á¬á¡áá«á á á¬áá»á¯ááºááᯠá¡áá¯á¶ážááŒá¯áááºá¡ááœáẠáá°áááºáž invoke áá¯ááºáá±á¬ááºáá»ááºááᯠááá·áºááœááºážááŒááºážáá¯ááºáá±á¬ááºáá»ááºá¡ááŒá Ạá¡áá¯á¶ážááŒá¯áá«áááºá Rust ááŸá áá¯ááºáá±á¬ááºáá»ááºáá áºáá¯á á¡áááºááẠRust áááºážááŒá áºáá¯ááºááᯠááá¯ááºáá¯ááºá¡ááŒá Ạáá±á«ááºážá ááºáá±á¬á¡áá«ááœáẠááŸááºážááŸááºážáááºážáááºáž áááááá±ážáá«á compiler ááẠáááºáá±áá±á¬áá¯ááºááᯠáááºáá®ážááŒááºážááŸáá·áº á á¬áá»á¯ááºá¡ááœááºá¡á á¬ážááᯠáá»áŸá±á¬á·áá»ááŒááºážá០áá¬ááœááºáááºá invoke function ááẠ#[no_mangle] ááŸááºáá»ááºááᯠáá±á«ááºážááá·áºáááºá
invoke function ááẠááœá±áá±ážááœá±áá°ááᯠáá¯ááºáá±á¬ááºááẠáá±á¬ááºáá»á¬ážááᯠáááºááá¯á·ááá°ááááºážá
ontio_std á á¬ááŒáá·áºááá¯ááºááẠááœá±áá±ážááœá±áá°áá áºáá¯áá¯ááºáá±á¬ááºááẠáá±á¬ááºáá»á¬ážááᯠááá°ááẠruntime::input() áá¯ááºáá±á¬ááºáá»ááºááᯠáá¶á·ááá¯ážáá±ážáááºá Developer áá»á¬ážááẠáááẠbyte array ááᯠáááºáá¯ááºááẠZeroCopySource ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá ááááá¯á¶áž bytes á array ááẠinvoke method áá¡áááºááŒá áºááŒá®ážá áá±á¬ááºááœáẠmethod parameters áá»á¬ážááŒá áºáááºá
á á¬áá»á¯áẠá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá²á· ááááºá áááºááá¯áá²á
ontio_std á á¬ááŒáá·áºááá¯ááºá០áá¶á·ááá¯ážáá±ážáá¬ážáá±á¬ runtime::ret áá¯ááºáá±á¬ááºáá»ááºááẠáááºážáááºážáá¯ááºáá±á¬ááºááŸá¯á ááááºááᯠááŒááºáá±ážáááºá
ááŒá®ážááŒá±á¬ááºáá±á¬ áá±á«áºááá¯ááŸá¯áá¯ááºáá±á¬ááºáá»ááºááẠá€áá²á·ááá¯á· ááŒá áºáááº-
á á¬áá»á¯ááºá¡áá»ááºá¡áááºááᯠáá¶áá«ááºá ááºáááºááŒááºážááŸáá·áº ááœá²ááŒá¬ážáááºááŸááºááŒááºážá
á á¬áá»á¯ááºáá»á¬áž áá±ážááœá²ááŒááºáž áá¯ááºáááºážá ááºááœáẠdeveloper áá»á¬ážááẠáá±áá¬áá±á·á áºááœáẠstruct data á¡áá»áá¯ážá¡á á¬ážááᯠááááºážáááºážáááºážááŸáá·áº struct data type áá áºáá¯áááŸáááẠdatabase ááŸáááºáá±á¬ byte array ááᯠdeserialize áá¯ááºáááºážááá¯á·ááŸáá·áºá¡áá° á¡ááœá²ááá¯ááºááŸáá·áº deserialization ááá¯ááºáᬠááŒá¿áá¬áá»á¬ážááᯠá¡ááŒá²ááŒá¯á¶ááœá±á·áá±ááááºá
ontio_std á á¬ááŒáá·áºááá¯ááºááẠdata serialization ááŸáá·áº deserialization á¡ááœáẠdecoder ááŸáá·áº encoder interface áá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáá«áááºá struct áá áºáá¯á áááºáááºáá»á¬ážááẠáá¯ááºáá«ááŸáá·áº áá¯ááºáá« á¡ááºáá¬áá±á·á áºáá»á¬ážááᯠáá±á¬áºáá±á¬ááºáá±ážááẠááŒá áºáá±á¬ááŒá±á¬áá·áº ááœá²á·á ááºážáá¯á¶ááᯠá¡ááŸááºá áẠá á®á á¥áºáᬠáááºáá¯ááºááá¯ááºáááºááŒá áºáááºá áá±áá¬á¡áá»áá¯ážá¡á á¬ážá¡áá»áá¯ážáá»áá¯ážááᯠá¡ááŸááºá ááºááá¯ááºáá±á¬á¡áá« Sink class á Instance áá»á¬ážááᯠááá¯á¡ááºáá«áááºá Sink á¡áááºážá á¥ááá¬áá áºáá¯ááœáẠbyte á¡áá»áá¯ážá¡á á¬ážáá±áá¬ááᯠááááºážáááºážáá±ážááá·áº set-type field buf ááŸáááŒá®áž serialized data á¡á¬ážáá¯á¶ážááᯠbuf ááœáẠááááºážáááºážáá¬ážáááºá
áá¯á¶áá±á¡ááŸááºáá±áᬠ(á¥ááá¬- byteá u16á u32á u64 á áááºááŒáá·áº)á áá±áá¬ááᯠááá¯ááºáááºážáá»ááºážáá áºáá¯ááá¯á· ááá¯ááºááá¯ááºáá°ážááŒá±á¬ááºážááŒá®ážáá±á¬áẠbuf ááœáẠááááºážáááºážáá¬ážáááºá áá¯á¶áá±ááá¯ááºáá±á¬ á¡ááŸááºááá±áá¬á¡ááœááºá á¡ááŸááºááᯠáŠážá áœá¬á¡ááŸááºá ááºáá¬ážááááºááŒá áºááŒá®ážá ááá¯á·áá±á¬áẠDdata (á¥ááá¬á u16á u32á ááá¯á·ááá¯áẠu64 á áááºááŒáá·áº) á¡áá«á¡ááẠá¡áááºáááá¡ááœááºá¡á á¬ážá áááºááŸááºáááá¯ážáá¬ážáá±á¬ ááááºážááŒáá·áºáá»á¬ážá
Deserialization ááẠááá·áºáá»ááºáááºááŒá áºáááºá áá¶áá«ááºá ááºáá±ážáááºážááá¯ááºážá¡ááœáẠáááºááá¯ááºáᬠdeserialization method áá áºáá¯ááŸááá«áááºá Deserialization ááẠSource class á instance áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºááá¯á¡ááºáááºá ဠclass instance ááœáẠfields buf ááŸáá·áº pos ááŸá áºáá¯ááŸááááºá Buf ááẠáá±áá¬áá»á¬ážááᯠáááºáá¯ááºáááºá¡ááœáẠááááºážáááºážáááºá¡ááœáẠá¡áá¯á¶ážááŒá¯ááŒá®áž pos ááᯠáááºááŸááááºááŸá¯ááá·áºá¡áá±á¡áá¬ážááᯠááááºážáááºážáááºá¡ááœáẠá¡áá¯á¶ážááŒá¯áááºá áá±áá¬á¡áá»áá¯ážá¡á á¬ážáá áºáá¯á¡á¬áž áááºááá·áºá¡áá«á áááºážáá¡ááŸááºááá¯áááá«áá á¡áááºáááá¡ááŸááºááá±áá¬á¡ááœáẠááá¯ááºááá¯ááºáááºááá¯ááºáááºâá¡ááŸááºááᯠáŠážá áœá¬áááºáá«á ááá¯á·áá±á¬áẠá¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠáááºáá«á
ááœááºážáááºá¡ááœááºážááŸá áá±áá¬áá»á¬ážááᯠáááºáá±á¬ááºááŒá®áž á¡ááºááááºáá¯ááºáá«á
ontology-wasm-cdt-rust - ááœááºážáááºá¡ááœááºážááŸá áá±áá¬áá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºáááºá¡ááœáẠáááºáááºááŸá¯áááºážáááºážááᯠááá·áºááœááºážááŒááºážá áá»ááºááŒááºážá ááŒá±á¬ááºážáá²ááŒááºážááŸáá·áº á á¯á¶á ááºážáá±ážááŒááºážááŒááºážáá²á·ááá¯á·áá±á¬ áá¯ááºáááºážáá±á¬ááºááœááºááŸá¯áá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáááºá¡ááœáẠdeveloper áá»á¬ážá¡ááœáẠá¡áááºááŒá±á á±ááá·áº á¡á±á¬ááºáá«á¡ááá¯ááºáž ááœááºážáááºá¡ááœááºážááŸá áá±áá¬áá»á¬ážááᯠááá·áºááœááºážááŒááºážá
- áá±áá¬áá±á·á áº::get(áá±á¬á·) - ááœááºážáááºááŸáá±áá¬áá±á¬ááºážááá¯áááºá¡áá¯á¶ážááŒá¯áááºá AsRef á¡ááºáá¬áá±á·á áºááá¯á¡áá±á¬ááºá¡áááºáá±á¬áºáááºá¡ááááá±á¬ááºážááá¯ááŸá¯áá»á¬ážá
- áá±áá¬áá±á·á áº::put(áá±á¬á·á áááºááá¯áž) - ááœááºáááºáá±á«áºááœááºáá±áá¬ááááºážáááºážáááºá¡áá¯á¶ážááŒá¯áááºá Key ááẠAsRef á¡ááºáá¬áá±á·á áºááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠáá±á¬ááºážááá¯ááŒá®áž áááºááá¯ážááẠáá¯ááºáá« á¡ááºáá¬áá±á·á áºááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠáá±á¬ááºážááá¯áááºá
- áá±áá¬áá±á·á áº::áá»ááº(áá±á¬á·) - ááœááºážáááºááŸáá±áá¬áá»á¬ážááá¯áááºááŸá¬ážáááºááŸáá·áº AsRef á¡ááºáá¬áá±á·á áºááá¯á¡áá±á¬ááºá¡áááºáá±á¬áºáááºá¡ááááá±á¬ááºážááá¯ááŸá¯áá»á¬ážá
á á¬áá»á¯ááºá ááºážáááºááŒááºážá
á
á¬áá»á¯ááºáá
áºáá¯ááááºážáááºážáá»á¬ážááá¯á¡áá±á¬ááºá¡áááºáá±á¬áºáá±á¬á¡áá«ááœááºá áá»áœááºá¯ááºááá¯á·ááẠááœááºážáááºááŸááá±áá¬ááá¯áááºáá±á¬ááºááœáá·áºááá¯á¡ááºááŒá®áž á
á¬áá»á¯ááºá bytecode ááá¯áá¯ááºáá±á¬ááºáááºá¡ááœááºááá·áºáá»á±á¬áºáá±á¬ virtual machine áá
áºáá¯ááá¯á¡ááºáááºá ááá¯á·ááŒá±á¬áá·áºá
ááºážáááºáááºá¡ááœááºááœááºážáááºáá±á«áºááœááºá
á¬áá»á¯ááºááá¯á¡áá¯á¶ážááŒá¯áááºáá±áá¯áá»á¡á¬ážááŒáá·áºááá¯á¡ááºáá«áááºá áá«áá±ááá·áº áá®á
ááºážáááºááŸá¯áááºážáááºážá ááŒá¿áá¬áá«á á
á¬áá»á¯ááºáá»á¬ážááᯠá
ááºážáááºááẠdeveloper áá»á¬ážá¡ááœáẠááá¯ááá¯ááœááºáá°á
á±ááẠontio_std á
á¬ááŒáá·áºááá¯ááºááẠá
ááºážáááºáááºá¡ááœáẠáá¯á¶á
á¶áá° module áá
áºáá¯ááᯠáá±ážáá«áááºá ဠmodule ááẠcircuit á¡ááœááºážááŸá data áá»á¬ážááᯠsimulation áá±ážáááºá developer áá»á¬ážá¡ááœáẠá
á¬áá»á¯ááºáá« áááºážáááºážáá»á¬ážááᯠá
ááºážáááºááẠááœááºáá°á
á±áááºá áááá»áá±á¬ á¥ááá¬áá»á¬ážááᯠááœá±á·ááá¯ááºáááºá
áááºáááá¯áẠá¡ááŸá¬ážááŸá¬ááŒááºážá
console::debug(msg) ááẠá á¬áá»á¯ááºáá áºáá¯ááᯠá¡ááŸá¬ážááŸá¬áá±á ááºááœáẠá¡ááŸá¬ážááŸá¬ááŒááºááá·áº á¡áá»ááºá¡áááºááᯠááŒááááºá áááºáá±á·áá»áºá¡áá»ááºá¡áááºááᯠnode ááŸááºáááºážááá¯ááºááá¯á· áá±á«ááºážááá·áºáááºááŒá áºáááºá áá±ááá¹áá Ontology á ááºážáááºááŸá¯ node áá¯ááºáá±á¬ááºáá±áá»áááºááœáẠááŸááºáááºážááá¯ááºá¡ááá·áºááᯠá¡ááŸá¬ážááŸá¬ááŒááºáá¯ááºá¡ááŒá ẠáááºááŸááºááẠááá¯á¡ááºáááºá
runtime::notify(msg) ááẠá á¬áá»á¯ááºááᯠá¡ááŸá¬ážááŸá¬áá±áá»áááºááœáẠááá·áºáá»á±á¬áºáá±á¬ á¡ááŸá¬ážááŸá¬ááŒááºá¡áá»ááºá¡áááºááᯠáá¯ááºááœáŸááºáááºá á€áááºážáááºážááẠááœááºážáááºáá²ááá¯á· ááá·áºááœááºážáá¬ážáá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠááááºážáááºážáááºááŒá áºááŒá®áž getSmartCodeEvent áááºážáááºážááᯠá¡áá¯á¶ážááŒá¯á ááœááºážáááºá០áá±ážááŒááºážááá¯ááºáá«áááºá
áá±á¬ááºážáá«ážááᯠOntologyRussia á¡ááœáẠá¡áá°ážáááŒáá·áº Hashrate&Shares á áááºážááŒááºáá°áá»á¬ážá០áá¬áá¬ááŒááºáá¬ážáá«áááºá
ááá¯áá«á
áááºá developer áá
áºáá±á¬ááºáá¬ážá áá»áœááºá¯ááºááá¯á·ááááºážááá¬á¡ááá¯ááºážá¡ááá¯ááºážááœáẠáá«áááºááá¯ááºáá«á
Ontology
Ontology áááºááá¯áẠGitHub /á áááºááá¯ážááœá¬áž - ááœá±ážááá»ážá
á¬
á¡áá€áááá¹ /áá¯ááœá¬áž ááœá áºáᬠ/Reddit
source: www.habr.com