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 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

    (COPM) design: functions (see the list in the project scope above) and API

    •  

      API should be RESTful, built on gRPC or socket.IO, designed to be integrated with the Cacti Client API and invoked by Cacti Connectors

  •  

    Implementation of COPM:

    •  Hyperledger Fabric: (required: all functions and API)
    •  R3 Corda: (best effort: some functions and associated API)
    •  Hyperledger Besu: (best effort: some functions and associated API)
  •  Selection of use cases (examples) for end-to-end testing: both Cactus (Node Server) and Weaver (Relay) modes
    •  Weaver data sharing using test networks (minimum required)
    •  Other Weaver use cases (asset exchange, asset transfer) (best effort)
    •  Cactus examples: TBD
  •  CI-automated testing of Core Operator Module COPM for all combinations
  •  

    Documentation of the above, including API documentation and getting started guide

  •  RFCs updated
  • :

    •  

      Updates to architecture, vision, design methodology (as required)

    •  

      Tutorials for running with Cacti samples

    •  FAQs (best effort) 
    •  

      Suggestive instructions for adaptation to users' scenarios (best effort)

  •  Updated RFCs: COPM design and API specifications

Optional Deliverables

  •  Unified cacti Cacti CI github GitHub workflows
  •  Weaver tests run-able in local environment via docker
  •  Weaver test examples updated to use core operators
  •  Dockerize Weaver test tooling for easy setup (equivalent of a the fabric-tools container offered by Fabric)
  •  Cactus REST APIs updated to use core operators
  •  Redundant code identified and removed
  •  Implementation of Core Operator Module in other DLTsDLTs other than Fabric, Corda, and Besu

Timeline

WeekTask/PlanStatus
June 03 - June 20On 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
Produce COPM design (with interface). Preliminary work (best effort): see list in the Project Scope section
July 8 - July 17Mentee vacation
July 17 - July 22Implement COPM skeleton with gprc and REST API interface. Implement one core operator in Fabric, Besu and
Corda 
Corda .
July 22 - July 261ST QUARTER MENTEE EVALUATION
July 27 - August 18Implement remaining core operators on Fabric


August 19 - September 01Finalize documentation
September 02 - September 06

MIDTERM EVALUATIONS


September 08 - September 22Implement remaining core operators for Besu
September 23 - October 19Implement remaining core operators for Corda
October 14 - October 183RD QUARTER MENTEE EVALUATION
October 19 - November 29Optional deliverables




(Greyed out entries in the above table are placeholders, subject to review and revision.)