Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

...