Iroha 2: DSL
Description
Iroha 2 currently has WASM-based smartcontracts. WASM, however, imposes a maintainer burden on the user, so upgrading these takes work.
We also have an ISI based on easily upgradeable smartcontract facilities, which are difficult to compose into arbitrary logic but require no manual intervention for upgrading to newer versions of Iroha.
We would like to involve the community in creating a domain-specific language for creating and composing logic made out of ISI.
Iroha 2 DSL is our most important project. Therefore, we would like it to be considered with top priority if not all Iroha-based projects can be considered for the internship programme.
Additional Information
We have an intern in mind, the author of the Cuik compiler. We highly encourage more people to apply but be warned: the competition is steep.
Learning Objectives
- Explore domain-specific optimisations not ordinarily possible in regular compiler design.
- Explore the design of ergonomic languages.
- Improve the understanding of Rust.
Expected Outcome
- (Optional) Well-defined Iroha DSL grammar
- A binary application (compiler) that parses DSL and produces ISI according to a well-defined grammar
- A set of example files written in the DSL covering the following simple use-cases
- Cross-blockchain transfer
- Modification of metadata
- Transference of permission tokens
Relation to Hyperledger
Hyperledger Iroha version 2 would benefit from a method of writing smartcontracts in an API-compatible way, avoiding issues of ABI compatibility. It is a planned feature; however, implementing the DSL with the help of an intern would also increase interest from the community and engagement and lead to better overall project health.
Mentee Skills
Understanding of Rust type and trait systems
Desired, but not required:
- Understanding of procedural macros and compile-time code generation mechanisms such as templating.
- Experience in compiler construction.
- knowledge of Rust trait objects or dynamic dispatch,
- Experience with algebraic data types in functional languages or, equivalently, enums
Future plans
This project will result in an actively supported part of Iroha.
Links
"Iroha 2 DSL" mentorship page on the LFX platform.
Mentor(s) Names and Contact Info
- Aleksandr Petrosyan: petrosyan@soramitsu.co.jp, @m3lcore
- Marin Versic: versic@soramitsu.co.jp, @mingler101