...
As described in the project proposal, a number of Core Operator primitives for DLT interoperability have been identified. They are: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
- Noop
All three DLT interoperability use cases – data sharing, asset transfer, and asset swap – are a combination of the above primitives.
- 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 out various Cactus and Weaver (especially, as these operators are currently mostly implemented as Weaver contracts and DApps) setups and samples
- Fix any obvious bugs and patches, write automation scripts as needed (create a "service pack"), update CI GitHub Actions accordingly
- 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
...