Versions Compared

Key

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

...

Nikolai Iushkevich, Nikolay Yushkevich , nikolai@soramitsu.co.jp

Project Plan

The main purpose of this internship is to create an environment for smart contracts. Hyperledger Iroha developers would like to try different smart contract engines. One of them is Ethereum Virtual Machine from Hyperledger Burrow project.  Intern Ivan Tyulyandin is working on the integration of it into Iroha.

  •  Add interaction with Burrow EVM using CGO and Golang compiler buildmode option  
    •  Add new command inside Iroha to pass parameters to Burrow VM  
    •  Develop a wrapper to connect Iroha and Burrow EVM  
      •  Simulate EVM storage structure inside Postgres
      •  Implement interaction between Burrow EVM and Postgres in the wrapper. Need it to get and set the data about smart contract execution
  •  Provide a scalable interface to connect Iroha and Burrow EVM (or another smart contract engine)  
    •  Replace the previous way of interaction with communication via local HTTP server
  •  Tests, integration, and documentation  
    •  Tests for the new command and data processing inside it  
    •  Tests for interaction between Iroha and Burrow VM  
    •  Documentation  
    •  Configure Docker 
      •  Add tools (such as Solidity compiler)  to simplify interaction with smart contracts 
  •  Optional: think about JSON-RPC
    •  Implement it If enough time

Since Burrow is written in Golang, there is the option to compile the source code of EVM (which is part of the Burrow project) into static library and C header file. It will be possible to use the header and the library inside Iroha C++ code. 

Next milestone is to provide a scalable interface to connect Iroha and a smart contract engine. The idea is to send parameters from Iroha to the engine and back through the HTTP server, where Iroha will be a client, and the code, calling the smart contracts engine, is a server. Such way of communication will let to use different smart contract engines. To use another one, a developer needs to change only the parameters, which are passed between Iroha and the engine, and code, responsible for parameters processing.

Of course, tests should be written to have some assurance about code correctness. Also, the functionality should be integrated and be ready to use.