Project Scope
The process of integrating the Cactus and Weaver modules and workflows to create a common Cacti platform conforming to the architecture illustrated in the Cacti Roadmap (and below) must follow a particular sequence of steps in order to ensure backward compatibility and avoid breaking preexisting user dependencies on exported Cacti packages and images.
As described in the project proposal, the first step we have identified in the integration process is the building of a Core Operators module (let's call it COPM) that directly acts on a network's (or system's) ledger, which can be seen at the right end of the above diagram. (Note: because different ledgers are built on different DLTs, Cacti will support an extensible suite of COPMs, one for each DLT.)
In this project, we need to do the following:
- Design a generic structure and interface (API) for the COPM that is portable across DLTs (while being implemented in DLT-specific ways for each ledger type.)
- Identify a list of Core Operator primitives to implement. Thus far, we have identified a limited set of such operators, which in some combinations can fulfil the three canonical DLT interoperability use cases: data sharing, asset exchange, and asset transfer. (Note: this set is meant to be extensible, to accommodate more operators if we discover functions that are not covered by the below list)
- lockAsset
- pledgeAsset
- claimAsset
- generateProof
- verifyProof
- accessControl
- noop (this is a passthrough option, for Cacti modules and connectors that do not need to invoke any of the above operators)
- Implement a COPM for Hyperledger Fabric
- On a best effort basis, implement a COPM (in part or whole) for Corda
- On a best effort basis, implement a COPM (in part or whole) for Besu/Ethereum
- Sketch out a template for porting to arbitrary DLTs and write documentation (this may end up being part of the Cacti whitepaper)
- Write scripts to deploy COPMs on a given network
- Refactor existing Cacti packages (select a few) to invoke the appropriate COPM
- Pick some end-to-end examples to showcase (this should cover existing Cactus examples, existing Weaver examples on data sharing, asset exchange, and asset transfer)
Preliminary work:
- Test and evaluate Cactus setups and examples using instructions in the documentation.
- Test and evaluate Weaver setups and samples using instructions in the documentation.
- Document bugs, required upgrades in software, instruction typos, and identify automation scripts that can help make tooling and CI more efficient.
- Expose Weaver modules and libraries through symlinks in the
packages
folder to simplify the integration process.
(The intention of this project is to unify multiple interoperability frameworks by creating a reusable set of operators so that the existing frameworks can be migrated to them.)
Key Deliverables
Cacti Core Operators Module, with grpc or socket IO external interface, and REST API integrated into the Cacti Client API. These operators are to be implemented in:
- corda
- hyperledger fabric
- hyperledger besu
- CI-automated testing of Core Operator Module for all combinations
Documentation of the above, including API documentation and getting started guide
- RFCs updated
Optional Deliverables
- Unified cacti CI github workflows
- Weaver tests run-able in local environment via docker
- Weaver test examples updated to use core operators
- Cactus REST APIs updated to use core operators
- Redundant code identified and removed
- Implementation of Core Operator Module in other DLTs
Timeline
Week | Task/Plan | Status |
---|---|---|
June 03 - June 20 | On boarding/orientation sessions. Meet with the mentors, discuss project implementation details, deliverables and scope. Initiate the project plan. | |
June 20 - June 27 | Finalize project plan, attempt to run examples, flagging project examples that no longer work | |
June 27 - July 7 | Implement Core Operator Module skeleton with gprc and REST API interface | |
July 8 - July 17 | Mentee vacation | |
July 17 - July 22 | Implement one core operator in Fabric, Besu and Corda | |
July 22 - July 26 | 1ST QUARTER MENTEE EVALUATION | |
July 27 - August 18 | Implement remaining core operators on Fabric | |
August 19 - September 01 | Finalize documentation | |
September 02 - September 06 | MIDTERM EVALUATIONS | |
September 08 - September 22 | Implement remaining core operators for Besu | |
September 23 - October 19 | Implement remaining core operators for Corda | |
October 14 - October 18 | 3RD QUARTER MENTEE EVALUATION | |
October 19 - November 29 | Optional deliverables | |
1 Comment
Ramakrishna V
Jennifer Bell I updated the Project Scope section with more details. We can discuss them briefly in today's call (though I'll only have 15 minutes). I'll edit the rest of the page tomorrow and we can then iterate until June 30 (i.e., before we notify Min.)