Cacti: Integrated Core Operators Module

Project Title
Library and API for Core Interoperability Building Blocks
Status

UNSELECTED

Primary Focus

CODING DOCUMENTATION  

Description 

Cacti provides modules, toolkit, and protocols to enable networks built on distributed ledgers to interoperate and carry out transactions spanning their boundaries, such as asset transfers, asset swapping, and ledger data communication. The protocols enabling such transactions as well as more complex use cases require certain basic capabilities or building blocks that every distributed ledger or blockchain technology (e.g., Ethereum, Corda, Hyperledger technologies like Fabric, Sawtooth, Iroha, and Besu) can support, though using specific and distinct implementations. These capabilities, or core operators, include the ability to lock or freeze assets for a given time period, claim or unfreeze assets by a deadline, generate and verify proofs of ledger state authenticity, and access control. They also include, at a basic level, the ability to write or query a ledger and its transaction log, using the native modes supported by a given DLT, e.g., UTXO spending, smart contract interfaces.

For ease of building DLT-agnostic protocols in Cacti, we need to build modules corresponding to various DLTs supported by Cacti that implement these core operators and expose them using a standard API. These modules, which will typically be engineered as smart contracts or distributed applications, will be deployed on the networks that seek to interoperate with others, and can be invoked on demand by the connector plugins and business logic at higher layers in Cacti.

The Cacti project repository currently contains legacy code from the Cactus and Weaver Labs respositories, which form its constituent parts. The goal of this project is to (i) design and build sample core operator modules for Cacti by using and integrating existing building block operators from Cactus plugins as well as Weaver Labs modules, (ii) design and implement a common DLT-agnostic API for this module that can be invoked by the higher layer business logic, and (iii) add suitable API support within the common Cacti client API for ease of application development.

Additional Information

Code development repository: https://github.com/hyperledger/cacti. See the project roadmap at https://github.com/hyperledger/cacti/blob/main/ROADMAP.md for a high-level overview and illustration of the integrated Cacti architecture, a part of which this project seeks to realize.

As this project seeks to integrate the Cactus and Weaver modules, whose code bases are currently aggregated within Cacti, see both the Cactus documentation starting at https://github.com/hyperledger/cacti/blob/main/README-cactus.md and the Weaver documentation starting at https://github.com/hyperledger/cacti/blob/main/weaver/README.md.

Learning Objectives

Working with, and augmenting, legacy software.

Repository maintenance and quality control using tests and CI/CD.

Designing developer-friendly and usable interfaces (API).

Art of documentation targeted at both developers and users.

Comprehensive and diverse blockchain/DLT development experience, spanning at least Fabric, Besu, and Corda.

Expected Outcome

  • Implementation of a Core Ledger Operators Module for Fabric, Besu, and Corda.
  • Designing a DLT-agnostic interface for the Core Ledger Operators Module and exposing it through a standard protocol like GRPC or socket.io.
  • Augment Cacti client API to connect with and invoke the capabilities of this module, allowing application business logic to harness the power of cross-network interoperability.
  • Demonstrating and testing end-to-end example use cases of asset swaps and ledger data sharing by exercising this module.
  • Documentation: setup instructions, tutorial, RFC updates

Relation to Hyperledger 

Core contribution: Hyperledger Cacti

Usage: Hyperledger Fabric, Besu, (Optional) Sawtooth, Iroha

Mentee Skills

  • Knowledge of Node.js (JavaScript, TypeScript), GoLang, and Java/Kotlin programming languages a strong plus, or ability and willingness to learn quickly.
  • Understanding web services and design of service interfaces (HTTP, RESTful interfaces, GRPC).
  • Experience with Hyperledger Fabric and/or Besu and/or Corda a strong plus.

Future plans

Mentee can continue to contribute to other integration tasks within Cacti. Also, other features listed in the project's roadmap, as well as performance evaluation and benchmarking.

Depending on the nature of the work done and the lessons learned, a research paper or blog article could be written.

Mentor(s) Names and Contact Info

Venkatraman Ramakrishna, vramakr2@in.ibm.com, Ramakrishna#6645 (Discord), IBM Research

Peter Somogyvari, peter.somogyvari@accenture.competer_somogyvari#3365 (Discord), Accenture

Izuru Sato, sato.izuru@fujitsu.com, Izuru Sato#6434 (Discord), Fujitsu

Sandeep Nishad, sandeep.nishad1@ibm.com, sandeepn#1092 (Discord), IBM Research

Takuma Takeuchi, takeuchi.takuma@fujitsu.com, takeutak#7220 (Discord), Fujitsu