Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Page Properties
label


Status

Status
colourYellowGreen
titleIn progressDECIDED
 

Stakeholders武宮誠 Bogdan Mingela Pavel Golovkin
OutcomeWASM will be introduced into Iroha2
Taskshttps://app.zenhub.com/workspaces/iroha-v2-60ddb820813b9100181fc060/issues/hyperledger/iroha/1425
Due date

 

Owner


...

Prototype: https://github.com/soramitsu/iroha2-wasm-prototype

proscons
  1. Well known and established in Blockchain space (Polkadot, Kusama, other Substrate based networks)
  2. Well known and developing fast in web programming space
  3. Officially supported by Rust compiler as a target
  4. Rust core team is contributing to wasmtime
  5. It might be required for bridging Substrate based networks
  6. We have experience in it within our team and teams closely working to us
  7. Developed by wide community
  8. Execution can be easily limited with `fuel` (approximate of number of assembly instructions that any script is allowed to execute at most)
  1. Requires nightly* for the smart contracts themselves
  2. Difficult to limit memory further than 3GB in wasmtime (needs more research)
  3. No Interface Types Support - so it has to be simulated through passing serialized bytes or mapping memory

*- Nightly Rust means that some of it its features are unstable and may be removed or changed in the later versions of the language.

Rust - eBPF

Language: Rust

Assembly: eBPF

Runtime: solana_rbpf rbpf

proscons
  1. Might be faster than alternatives
  2. Simple low level instruction set (simpler than wasm)
  3. More mature than wasm and battle tested in linux kernel and in other blockchains
  4. Developed by wide community
  5. Officially supported by rust team
  6. Has static analyzers and it is possible to easily make specific one
  7. Execution can be easily limited with `fuel` (approximate of number of assembly instructions that any script is allowed to execute at most)
  1. Runtime for Rust is supported only by one specific blockchain company

Needs more research

Lua

Language: Lua

Runtime: rlua

proscons
  1. Well established as scripting language for game engines and many other tools
  2. easily embedded
  1. has gc and would be slower than alternatives

Needs more research

Rhai

Language: Rhai

Runtime: cutsom custom

proscons
  1. Minimalist
  2. Easy interoperability with Rust types at the first glance
  3. Looks similar to Rust but simpler
  4. Interpretable (no jit)
  1. Developed by small community

Needs more research if deemed necessary

...

Risks

Additional Information

Useful links:
https://www.w3.org/TR/wasm-core-1/#control-instructions%E2%91%A0
https://learnxinyminutes.com/docs/wasm/
https://blog.dbrgn.ch/2019/12/24/testing-for-no-std-compatibility/