Blueprint-like interface for Iroha Special Instructions

Project TitleBlueprint-like interface for Iroha Special Instructions
Status

COMPLETED

Difficulty

 MEDIUM  

Description

The task will be to implement a visual blueprint frontend similar to Blockly, Scratch, or Unreal Engine Blueprints for the Iroha Special Instructions smart contract language.

Iroha Special Instructions (or ISI) are a composable smart contract language for Iroha v2 providing an opportunity to execute logic on-chain. In their raw form they represent a syntactical tree, which is not very convenient to write. We think that the structure of the ISI will perfectly match a visual blueprint language and therefore make developing Iroha v2 smart contracts more comfortable for everyone.

The app to be developed should allow the user to compose ISI, potentially validating the correspondent types of outputs of each of the blocks. After the program of blueprints is composed, the app should provide a way to transpile the blocks into the file of raw ISI in their byte format. Potentially the app can also act like a client and submit the ISI directly to a Hyperledger Iroha network to be executed right away.

Additional Information

RFC with general description of Iroha Special Instructions

Slides for ISI extension in the form of Expressions

Learning Objectives

  1. Introduction to open source culture and collaboration tools
  2. Introduction to Application Architectural Design
  3. Introduction to Test Driven Development
  4. Introduction to interacting with an external API
  5. Introduction to Domain Specific Languages

Expected Outcome

Features

  1. User should be able to use visual interface to construct smart contracts with block representations of ISI

  2. User should be able to save and load programs that are currently in development
  3. User should be able to serialize the constructed program into the raw byte representation of ISI
  4. (Optional) User should be able to connect to the network and submit ISI to the ledger
  5. (Optional) The app should provide automatic type analysis of the constructed programs

Technologies

We envision the visual blueprint frontend as a Web App. The exact programming language and web framework is up to the intern to choose. Though we strongly recommend to use statically typed languages such as TypeScript, Elm and Rust (WASM).

Using Rust with WebAssembly to build this web app, might be an interesting optional objective, which we as a team of the project written in Rust will wholeheartedly support. But of course this is not required.

Relation to Hyperledger 

Hyperledger Iroha v2

Education Level

Undergraduate

Skills

  1. UI/UX design familiarity
  2. Web Development experience

Future plans

Depending on the results of the internship, the visual frontend for ISI might be put in our official documentation as a recommended way of getting acquainted with ISI programming for Iroha v2.

Preferred Hours and Length of Internship

Both full-time and part-time are acceptable.

Mentor(s) Names and Contact Info

Egor Ivkov, ivkov@soramitsu.co.jp

Ivan Rybin, rybin@soramitsu.co.jp

Mentee

Zoe Krucky Colorado State University

Project Results

https://github.com/zkrucky/isi-interface

Final Report

Project Presentation Session Recording