Iroha 2: FFIĀ client library bindings

Project TitleIroha 2 FFI client library bindings
Status

COMPLETED

Primary Focus

CODING

Description 

Currently, the Hyperledger Iroha v2 clients are linked statically or via a sophisticated code generation process that is both brittle and necessitates an inordinate amount of work for each ABI-breaking change to the Hyperledger Iroha v2 core library.

Instead, we plan to create a shared C-ABI-based dynamically linked library that will be used by all clients and SDKs and the reference implementation of a Rust client: iroha_client_cli.

Additional Information

Since this project would be a part of Iroha core code, there are no links to add, but the questions are welcome.

Learning Objectives

The mentee shall learn about

  • The C-ABI
  • The Rust facilities for dynamic linkage
  • unsafe programming in Rust
  • low-level structure representations
  • Undefined behaviour

Expected Outcome

This project would enable the dynamic linking of SDK, resulting in an improved SDK ecosystem and better support for existing languages like Python or TypeScript.

Relation to Hyperledger 

Iroha SDK is a part of Hyperledger Iroha 2 project.

Mentee Skills

  • Basic knowledge of Rust

Useful knowledge or willingness to learn:

  • FFI
  • C-bindings generators
  • The ideas of ABI stability
  • The basics of code refactoring

Links

"Hyperledger - Iroha 2 FFI client library bindings" mentorship page on the LFX platform.

Future plans

Enhanced FFI client bindings will be used in many Iroha 2 SDKs as an actively supported part of it.

Mentor(s) Names and Contact Info