Как Π΄Π° напишСм смарт ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π° WebAssembly Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Ontology? Част 1: Rust

Как Π΄Π° напишСм смарт ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π° WebAssembly Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Ontology? Част 1: Rust

ВСхнология Ontology Wasm намалява Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅ Π½Π° смарт ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΈ dApp със слоТна бизнСс Π»ΠΎΠ³ΠΈΠΊΠ° Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ обогатявайки СкосистСмата Π½Π° dApp.

Настоящият ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ontology Wasm ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Rust ΠΈ C++. Rust ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Wasm, Π° гСнСрираният Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π΅ ΠΏΠΎ-прост, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΈ. И Ρ‚Π°ΠΊΠ°, ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Rust Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Ontology?

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Wasm-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Rust

БъздаванС Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚

Cargo β€” Π΅ Π΄ΠΎΠ±ΡŠΡ€ инструмСнт Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° софтуСр Π½Π° Rust, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎΠΌΠ°Π³Π° Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π΄Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Ρ‚ взаимодСйствиСто ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ΄Π° ΠΈ Π²ΡŠΠ½ΡˆΠ½ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π—Π° Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ Π½ΠΎΠ² Ontology Wasm-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚, просто ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

Как Π΄Π° напишСм смарт ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π° WebAssembly Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Ontology? Част 1: Rust

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, която тя Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°:

Как Π΄Π° напишСм смарт ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π° WebAssembly Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Ontology? Част 1: Rust

Π€Π°ΠΉΠ»ΡŠΡ‚ Cargo.toml сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° основна информация Π·Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ информация Π·Π° зависимитС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. БСкцията [lib] Π² Ρ„Π°ΠΉΠ»Π° трябва Π΄Π° бъдС Π·Π°Π΄Π°Π΄Π΅Π½Π° Π½Π° crate-type = ["cdylib"]. Π€Π°ΠΉΠ»ΡŠΡ‚ lib.rs сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° писанС Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°. ОсвСн Ρ‚ΠΎΠ²Π°, трябва Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π·Π° зависимости Π² сСкцията [dependencies] Π½Π° конфигурационния Ρ„Π°ΠΉΠ» Cargo.toml:

Как Π΄Π° напишСм смарт ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π° WebAssembly Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Ontology? Част 1: Rust

Π‘ Ρ‚Π°Π·ΠΈ зависимост Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚ интСрфСйси, взаимодСйстващи с Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π° Ontology, ΠΈ инструмСнти ΠΊΠ°Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° Π·Π° сСриализация.

Ѐункция Π·Π° Π²Ρ…ΠΎΠ΄ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°

Всяка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° ΠΈΠΌΠ° функция Π·Π° Π²Ρ…ΠΎΠ΄, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° main-функцията, Π½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΡŠΡ‚ няма main-функция. ΠšΠΎΠ³Π°Ρ‚ΠΎ сС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° Wasm-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ с Rust, функцията invoke ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°Ρ‚ΠΎ функция Π·Π° Π²Ρ…ΠΎΠ΄ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°. Π˜ΠΌΠ΅Ρ‚ΠΎ Π½Π° функцията Π² Rust Ρ‰Π΅ бъдС Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° изходния ΠΊΠΎΠ΄ Π½Π° Rust Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС изпълнява ΠΎΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° машина. Π—Π° Π΄Π° сС ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° излишСн ΠΊΠΎΠ΄ ΠΈ Π΄Π° сС Π½Π°ΠΌΠ°Π»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°, функцията invoke добавя анотация #[no_mangle].

Как функцията invoke ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π·Π° изпълнСниС Π½Π° транзакцията?

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ontio_std прСдоставя функция runtime::input(), Π·Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π·Π° изпълнСниС Π½Π° транзакция. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ZeroCopySource Π·Π° дСсСриализиранС Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ масив ΠΎΡ‚ Π±Π°ΠΉΡ‚ΠΎΠ²Π΅. ΠŸΡŠΡ€Π²ΠΈΡΡ‚ ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Π½ масив ΠΎΡ‚ Π±Π°ΠΉΡ‚ΠΎΠ²Π΅ Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° invoke ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π° слСд Ρ‚ΠΎΠ²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Как сС Π²Ρ€ΡŠΡ‰Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΎΡ‚ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°?

Ѐункцията runtime::ret, прСдоставСна ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ontio_std, Π²Ρ€ΡŠΡ‰Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΎΡ‚ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Π—Π°Π²ΡŠΡ€ΡˆΠ΅Π½Π°Ρ‚Π° invoke функция ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½:

Как Π΄Π° напишСм смарт ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π° WebAssembly Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Ontology? Част 1: Rust

БСриализация ΠΈ дСсСриализация Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°

Π’ процСса Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΈ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π²ΠΈΠ½Π°Π³ΠΈ сС ΡΠ±Π»ΡŠΡΠΊΠ²Π°Ρ‚ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ със сСриализацията ΠΈ дСсСриализацията, особСно ΠΊΠ°ΠΊ Π΄Π° запазят struct Ρ‚ΠΈΠΏ Π΄Π°Π½Π½ΠΈ Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΠΈ ΠΊΠ°ΠΊ Π΄Π° дСсСриализират масив ΠΎΡ‚ Π±Π°ΠΉΡ‚ΠΎΠ²Π΅, ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Π½ ΠΎΡ‚ Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ, Π·Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ struct Ρ‚ΠΈΠΏ Π΄Π°Π½Π½ΠΈ.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ontio_std прСдоставя интСрфСйси Π½Π° Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€ ΠΈ ΠΊΠΎΠ΄Π΅Ρ€ Π·Π° сСриализация ΠΈ дСсСриализация Π½Π° Π΄Π°Π½Π½ΠΈ. ΠŸΠΎΠ»Π΅Ρ‚Π°Ρ‚Π° Π½Π° структурата struct ΡΡŠΡ‰ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ интСрфСйси Π½Π° Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€ ΠΈ ΠΊΠΎΠ΄Π΅Ρ€, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ структурата ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС сСриализирана ΠΈ дСсСриализирана. Π˜Π½ΡΡ‚Π°Π½Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° класа Sink са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сСриализиратС Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ. Π˜Π½ΡΡ‚Π°Π½Ρ†ΠΈΡΡ‚Π° Π½Π° класа Sink ΠΈΠΌΠ° ΠΏΠΎΠ»Π΅ ΠΎΡ‚ Ρ‚ΠΈΠΏ set buf, ΠΊΠΎΠ΅Ρ‚ΠΎ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π±Π°ΠΉΡ‚ΠΎΠ²ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ, Π° всички сСриализирани Π΄Π°Π½Π½ΠΈ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² buf.

Π—Π° Π΄Π°Π½Π½ΠΈ с фиксирана дълТина (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: byte, u16, u32, u64 ΠΈ Ρ‚.Π½.) Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π² масив ΠΎΡ‚ Π±Π°ΠΉΡ‚ΠΎΠ²Π΅ ΠΈ слСд Ρ‚ΠΎΠ²Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² buf; Π·Π° Π΄Π°Π½Π½ΠΈ с нСстандартна дълТина, ΠΏΡŠΡ€Π²ΠΎ трябва Π΄Π° сС сСриализира Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π°, Π° слСд Ρ‚ΠΎΠ²Π° Π΄Π°Π½ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΈ Ρ†Π΅Π»ΠΈ числа с нСизвСстСн Ρ€Π°Π·ΠΌΠ΅Ρ€, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ u16, u32 ΠΈΠ»ΠΈ u64 ΠΈ Ρ‚.Π½.).

ДСсСриализацията Π΅ противополоТността Π½Π° сСриализацията. Π—Π° всСки ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° сСриализация ΠΈΠΌΠ° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‰ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° дСсСриализация. ДСсСриализацията изисква ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° инстанции Π½Π° класа Source. Π’Π°Π·ΠΈ инстанция ΠΈΠΌΠ° Π΄Π²Π΅ ΠΏΠΎΠ»Π΅Ρ‚Π° buf ΠΈ pos. Buf сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ дСсСриализирани, Π° pos сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, Π·Π° Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° позиция Π½Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅. ΠšΠΎΠ³Π°Ρ‚ΠΎ сС Ρ‡Π΅Ρ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½ΠΈ, Π°ΠΊΠΎ Π·Π½Π°Π΅Ρ‚Π΅ Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π° ΠΈΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ, Π·Π° Π΄Π°Π½Π½ΠΈ с нСизвСстна дълТина β€” ΠΏΡŠΡ€Π²ΠΎ ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π°, Π° слСд Ρ‚ΠΎΠ²Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ.

Π”ΠΎΡΡ‚ΡŠΠΏ ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π°

Ontology-wasm-cdt-rust β€” инкапсулира опСрационния ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½ΠΈ Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΡƒΠ΄ΠΎΠ±Π΅Π½ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π΄Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ добавянС, ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅, промяна ΠΈ Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½:

  • database::get(key) β€” ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° сС Π·Π° Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, Π° ΠΊΠ»ΡŽΡ‡ΡŠΡ‚ Π·Π°ΠΏΠΈΡ‚Π²Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° интСрфСйса AsRef;
  • database::put(key, value) β€” ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° сС Π·Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. ΠšΠ»ΡŽΡ‡ΡŠΡ‚ Π·Π°ΠΏΠΈΡ‚Π²Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° интСрфСйса AsRef, Π° стойността Π·Π°ΠΏΠΈΡ‚Π²Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° интСрфСйса Encoder;
  • database::delete(key) β€” ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° сС Π·Π° ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, Π° ΠΊΠ»ΡŽΡ‡ΡŠΡ‚ Π·Π°ΠΏΠΈΡ‚Π²Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° интСрфСйса AsRef.

ВСстванС Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°

ΠšΠΎΠ³Π°Ρ‚ΠΎ сС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°, ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π΄Π°Π½Π½ΠΈ Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° ΠΈ Π½ΠΈ трябва ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина, Π·Π° Π΄Π° изпълним Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°, Π·Π°Ρ‚ΠΎΠ²Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Ρ€Π°Π·Π²Π΅Ρ€Π½Π΅ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π·Π° тСстванС. Но Ρ‚Π°ΠΊΡŠΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° тСстванС Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅Π½. Π—Π° Π΄Π° улСсним Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΏΡ€ΠΈ тСстванСто Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΈΡ‚Π΅, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ontio_std прСдоставя mock-ΠΌΠΎΠ΄ΡƒΠ» Π·Π° тСстванС. Π’ΠΎΠ·ΠΈ ΠΌΠΎΠ΄ΡƒΠ» осигурява симулация Π½Π° Π΄Π°Π½Π½ΠΈ Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, улСснявайки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π² ΡŽΠ½ΠΈΡ‚-тСстиранСто Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈ Ρ‚ΡƒΠΊ.

Π”Π΅Π±ΡŠΠ³Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°

console::debug(msg) ΠΈΠ·ΠΊΠ°Ρ€Π²Π° информация Π·Π° дСбъгванС ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π΄Π΅Π±ΡŠΠ³Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΡ‚Π° msg Ρ‰Π΅ бъдС записана Π² Π»ΠΎΠ³-Ρ„Π°ΠΉΠ»Π° Π½Π° Π½ΠΎΠ΄Π°Ρ‚Π°. Π—Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ условиС Π΅ Π΄Π° Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ΠΎ Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° Π»ΠΎΠ³-Ρ„Π°ΠΉΠ»Π° Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° дСбъгванС, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ стартирана Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° тСстова Π½ΠΎΠ΄Π° Ontology.

runtime::notify(msg) ΠΈΠ·ΠΊΠ°Ρ€Π²Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° информация Π·Π° дСбъгванС ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π΄Π΅Π±ΡŠΠ³Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°. Π’ΠΎΠ·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‰Π΅ Π·Π°ΠΏΠ°Π·ΠΈ внСсСната информация Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π·Π°ΠΏΠΈΡ‚Π²Π°Π½ ΠΎΡ‚ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° getSmartCodeEvent.

Бтатията бСшС ΠΏΡ€Π΅Π²Π΅Π΄Π΅Π½Π° ΠΎΡ‚ рСдакцията Π½Π° Hashrate&Shares спСциално Π·Π° OntologyRussia. ΠΊΠ»ΠΈΠΊ

Π’ΠΈΠ΅ Π»ΠΈ стС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ? ΠŸΡ€ΠΈΡΡŠΠ΅Π΄ΠΈΠ½Π΅Ρ‚Π΅ сС към Π½Π°ΡˆΠ°Ρ‚Π° тСхничСска общност Π½Π° Discord. ОсвСн Ρ‚ΠΎΠ²Π°, ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ Π² Π¦Π΅Π½Ρ‚ΡŠΡ€ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° нашия сайт, Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ инструмСнти Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, докумСнтация ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ.

Ontology

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster