Cacti: Implement Standardized Secure Asset Transfer Protocol
Description
Cacti enables two blockchain or DLT networks to transfer digital assets between each other using different mechanisms and modules, inherited from the older Cactus and Weaver projects. The Node Server acts as a container for business logic to orchestrate (or trigger) transactions across multiple networks toward achieving some desired simultaneous state change in those networks. The Relay acts as a gateway, or an ingress/egress appliance, for a given network to send communication to, and receive communication from, another network. Using the Relay or the Node Server or both, one can effect a digital asset transfer from one network to another, sample protocols for which have already been implemented in Cacti with samples for demonstration.
Parallelly, there is an ongoing effort to standardize blockchain/DLT interoperation protocols through consultation and brainstorming among experts within the field under the IETF's aegis. The IETF has instituted an official Working Group titled Secure Asset Transfer Protocol or SATP to staandardize the specific use case whereby two gateways working on behalf of networks can trade assets with each other. Cacti maintainers are also involved in this standardization effort, and as a leading enterprise interoperability platform, Cacti must both conform to this standard as it emerges and also, through implementation and evaluation, shape the standard RFCs in return.
The goal of this project is to implement the more current SATP draft specification in Cacti, in the process augmenting the Cacti Relay to be a gateway that provides a reference or template for any other standardized implementation. Using other Cacti modules and sample apps, secure transfers of digital assets using SATP must also be demonstrated. If time permits, performance measurements may also be conducted to benchmark the protocol, and specifically the Relay.
Additional Information
The Cacti repository lies in https://github.com/hyperledger/cacti. The present implementation of the relay lies in https://github.com/hyperledger/cacti/tree/main/weaver/core/relay, with specifications in https://github.com/hyperledger/cacti/blob/main/weaver/rfcs/models/infrastructure/relays.md and https://github.com/hyperledger/cacti/blob/main/weaver/rfcs/protocols/data-sharing/generic.md, and setup/testing instructions in https://labs.hyperledger.org/weaver-dlt-interoperability/docs/external/getting-started/guide (this will be ported to Cacti docs in the future).
The present IETF SATP draft specifications can be found in https://datatracker.ietf.org/wg/satp/about/. Links to drafts are as follows:
- https://datatracker.ietf.org/doc/draft-hardjono-sat-architecture/
- https://datatracker.ietf.org/doc/draft-hargreaves-sat-core/
- https://datatracker.ietf.org/doc/draft-ramakrishna-sat-use-cases/
A sample implementation of an older version of SATP, called ODAP, can be found in https://github.com/hyperledger/cacti/tree/main/packages/cactus-plugin-odap-hermes.
Learning Objectives
- Write software according to standardized public specifications
- Development of distributed and decentralized fault tolerant protocols
- Art of writing good documentation, both targeted at developers and at users
- Blockchain/DLT application development: specifically Fabric, Besu, Corda
- Science of blockchain/DLT interoperation
Expected Outcome
- Implement/augment Relay as an SATP gateway, with the ability to run SATP protocol units, communicate SATP messages, maintain logs for audit, and carry out operations in a fault tolerant manner.
- Implement and demonstrate end-to-end asset transfer example across two networks running on Fabric, Besu, or Corda.
- Documentation: update Cacti RFC specifications, setup instructions, tutorials.
- (Potentially) Use lessons learned from implementation to update IETF SATP specification draft.
- (Optional) Run performance measurements to benchmark SATP and the Cacti Relay/gateway.
Relation to Hyperledger
- Core development in Hyperledger Cacti
- Use Hyperledger Fabric and Besu to construct and demonstrate end-to-end example use case.
Mentee Skills
- Rust programming strongly preferred as Cacti Relay is built on Rust, or ability and willingness to learn quickly
- Node.js and Java/Kotlin a strong plus: building example apps will require these skills
- Knowledge of distributed or client-server programming
- Building fault tolerant software a strong plus.
- Experience with Hyperledger Fabric, Besu, or Corda, a plus.
Future plans
Mentee can contribute to Cacti development and/or the drafting of the IETF SATP standard.
Performance measurement work can be carried out and the results published in a research paper.
Mentor(s) Names and Contact Info
Venkatraman Ramakrishna, vramakr2@in.ibm.com, Ramakrishna#6645 (Discord), IBM Research
Rafael Belchior, rafael.belchior@tecnico.ulisboa.pt, rafaelapb#6679 (Discord), Blockdaemon and Técnico Lisboa, University of Lisbon, Portugal; and MIT Media Lab
Sandeep Nishad, sandeep.nishad1@ibm.com, sandeepn#1092 (Discord), IBM Research
Sikhar Patranabis, sikhar.patranabis@ibm.com, Sikhar#9160, IBM Research