Project TitleExtend data sharing protocol support for networks built on Hyperledger Besu or for public Ethereum
Status

Primary Focus

   Select the PRIMARY focus of the mentorship project and remove other labels. 


Description 

Cacti provides a protocol and trigger mechanism for the sharing of ledger data or data derived from smart contracts (called "view", and identified by a "view address") deployed in a network with another network using relays for communication and consensus-driven proof generation and verification in the end networks. Some parts of the protocol are generic and DLT-agnostic but others, specifically protocol drivers or connectors and core ledger operators (typically built as smart contracts) are DLT-specific. Presently, Cacti provides DLT-specific data sharing mechanisms for Hyperldger Fabric and Corda. The goal of this project is to add similar support, i.e., build modules, plugins, and API for permissioned networks built on Hyperledger Besu. As an optional extension, these mechanisms will then be extrapolated to share data to and from public Ethereum. This will involve designing and basic building blocks or capabilities for view proof generation, proof verification, and access control of remote data requests, in the form of smart contracts. Higher up the stack, the Cacti SDK for Besu must then be augmented to enable network apps to trigger data sharing requests and submitting the responses for validation to local smart contracts.

The initial phase of the project will require some research and design that builds on existing research done by Cacti maintainers. The implementation will be validated by demonstrating data sharing among test networks within Cacti built on Besu, Fabric, and Corda, and using sample apps available in Cacti. If time permits, the end-to-end data sharing protocol can also be augmented with end-to-end confidentiality features whereby the data and proof are kept confidential from the relays, which are intermediary communication modules.

Additional Information

Cacti repository where code will be developed and designs will be specified: https://github.com/hyperledger/cacti.

Present location of data sharing protocol RFC specifications: https://github.com/hyperledger/cacti/blob/main/weaver/rfcs/protocols/data-sharing/generic.md

Tutorial to setup sample networks and test data sharing: https://labs.hyperledger.org/weaver-dlt-interoperability/docs/external/getting-started/guide/ (these docs will be ported to Cacti docs soon, as Weaver is now a constituent part of Cacti).

Reference paper on data sharing: https://arxiv.org/abs/1911.01064. (Also see other references at the bottom of https://github.com/hyperledger/cacti/blob/main/weaver/OVERVIEW.md for additional info.)

Existing design discussion threads for reference: https://github.com/hyperledger-labs/weaver-dlt-interoperability/issues/218 (these issues will be ported to Cacti soon)

Learning Objectives

Expected Outcome

Relation to Hyperledger 

Core development will occur in HYperledger Cacti.

Hyperledger Besu will be used and exercised extensively.

Hyperledger Fabric will be used for testing and demonstrating example use cases.

Mentee Skills

Solidity and Node.js programming skills a strong plus.

Experience in protocol development or client-server programming.

Hyperledger Besu or Ethereum development experience a strong plus.

Hyperledger Fabric or Corda development a plus.

Knowledge of basic system security, cryptography, and access control concepts a plus.

Future plans

Mentee can continue to contribute to open source development within Cacti on the optional features if they are not completed before the end of term. Another potential extension is the supporting of asset transfers to and from Besu networks, which will require the engineering of a different type of protocol.

Depending on the nature of work done, the lessons learned, and evaluations carried out, we could consider writing a research paper or at least a blog article.

Mentor(s) Names and Contact Info

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

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

Sikhar Patranabis, sikhar.patranabis@ibm.com, Sikhar#9160 (Discord), IBM Research