Project TitleIroha 2 DSL
Status

COMPLETED

Primary Focus

CODING 

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:

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