BRI-2
Baseline Reference Implementation-2
Overview
bri-2
is the second "baseline reference implementation". The purpose of this project is to show a baseline stack using different services compared to bri-1
, but this stack must still comply with the baseline standards and specificiations, therefore allowing interoperability with other baseline stacks. bri-2
introduces the commit-mgr
service to baseline
. The commit-mgr
acts as an extension to a web3 provider, which allows a variety of Ethereum clients to become "baseline compatible".
Note:
bri-2
is still a work in progress. Components such as a vault/key manager and P2P messenger need to be added to make it a complete reference implementation.
Architecture
The purple/orange blocks in the following diagram have been built. The green blocks are proposed services to be added and interact with the exisiting services.
BRI-1 and BRI-2 comparison
Here is a comparison of the reference implementations:
BRI-2 Quickstart
Requirements
docker
docker-compose
node v12.16
npm
ConsenSys Quorum account (for
vault
+key-manager
services)
Note: Create a free ConsenSys Quorum trial account here. Access the API documention for the
key-manager
service here.
Workflow creation
After the docker containers have successfully initialized, make the following request to workflow-mgr
in order to create a new workflow.
This request should initiate the following sequence of events. The sequencing of steps is accomplished by using NATS as a job queuing service. If successful, steps 1-8 will be completed and the workflow object will have a ZkCircuitId, Shield contract address, Verifier address, and a status of success-track-shield
.
Run dashboard
front-end
dashboard
front-endIn order to run interact with the bri-2
stack through a browser, please run the following commands.
Note: be sure to use
node v12.16
Navigate to http://localhost:3000
on your web browser to view the dashboard
.
Troubleshooting
If you have an existing bri-2 build, run the following sequence to remove old build artifacts:
You may need to run
make build
twice in order to properly compile smart contractsNote: Environment variables default to use
ganache
as the Ethereum network
Current Capabilities
Create new commitments (hashes of JSON objects) for the Workflows
Push the commitments (hashes) into the on-chain merkle tree inside the Shield contract
P2P messenger service for communicating commitment details to counterparties
Integrated L2 to reduce mainnet gas fees
Automated integration level test suite
Codefi Orchestrate Key-Manager service integrated for Eth/EDDSA key storage and signing capabilities
Future Capabilities
Create new workflows
Automatically generate, compile, and run setup for zero-knowledge signature-checking circuit
Automatically compile newly created Verifier Solidity smart contract
Automatically deploy Shield and signature-checking Verifier smart contracts to
ganach
Last updated