Cacti: Ledger Data Sharing with Proof in Besu and Ethereum
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
- Multi-hop protocol design and implementation, and understanding how operations can be distributed and decentralized
- Blockchain development on Hyperledger Besu and Ethereum
- Art of writing good documentation, both targeted at developers and at users
- Designing software with security and privacy considerations in mind
- Science of blockchain interoperability
Expected Outcome
- The following features are expected to be completed by the end of the project:
- Besu protocol driver for data sharing
- Besu interoperation module with core ledger operators for proof generation, proof verification, policy management, membership management, and access control
- Besu SDK augmented with data sharing trigger capabilities
- Besu protocol driver for data sharing
- Sample applications and end-to-end data sharing test runs for networks built on Besu, Fabric, and Corda (data sharing for Fabric and Corda is already available in Cacti)
- Documentation: setup instructions, RFCs, tutorials
- (Optional) Extrapolate mechanisms built for Besu to support data sharing in public Ethereum
- (Optional) end-to-end confidentiality (i.e., encryption and decryption) support for data sharing to/from Besu networks
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