Как Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ смарт ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π° 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, ΠΈ инструмСнти ΠΊΠ°Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° Π·Π° сСриализация.

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

Всяка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° ΠΈΠΌΠ° функция Π·Π° Π²Ρ…ΠΎΠ΄, ΠΊΠ°ΠΊΠ²Π°Ρ‚ΠΎ Π΅ основната функция, която ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Π½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΡŠΡ‚ няма основна функция. ΠšΠΎΠ³Π°Ρ‚ΠΎ сС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° 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 ΠΈΠΌΠ° ΠΏΠΎΠ»Π΅ buf ΠΎΡ‚ Ρ‚ΠΈΠΏ set, ΠΊΠΎΠ΅Ρ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π±Π°ΠΉΡ‚ΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ, Π° всички сСриализирани Π΄Π°Π½Π½ΠΈ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² buf.

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

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

Π”ΠΎΡΡ‚ΡŠΠΏ ΠΈ актуализация Π½Π° Π΄Π°Π½Π½ΠΈ Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π°

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

  • database::get(key) β€” ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° сС, Π·Π° Π΄Π° поиска Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π°, Π° key ΠΏΠΈΡ‚Π° Π·Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° интСрфСйса AsRef;
  • database::put(key, value) β€” ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° сС, Π·Π° Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π΄Π°Π½Π½ΠΈ Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. Key ΠΏΠΈΡ‚Π° Π·Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° интСрфСйса AsRef, Π° value ΠΏΠΈΡ‚Π° Π·Π° рСализацията Π½Π° интСрфСйса Encoder;
  • database::delete(key) β€” ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° сС, Π·Π° Π΄Π° ΠΈΠ·Ρ‚Ρ€ΠΈΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π°, Π° 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