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

BRI-1 and BRI-2 comparison

Here is a comparison of the reference implementations:
Service Type
bri-1
bri-2
Eth. client
Nchain
commit-mgr + ITX
Key managment
Provide Vault
Codefi Orchestrate
P2P Messenger
NATS
NATS

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.
1
make build
2
make start
Copied!

Workflow creation

After the docker containers have successfully initialized, make the following request to workflow-mgr in order to create a new workflow.
1
POST http://localhost:5001/workflows?type=signature
2
{
3
"description": "signature test",
4
"clientType": "test client",
5
"chainId": "101010",
6
"identities": [
7
"4bd3822517db41e55a9d234187b22215187d20ba37d83208ddc7788dc473f31e"
8
]
9
}
Copied!
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

In 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
1
cd dashboard
2
npm install
3
npm run build
4
npm run dev
Copied!
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:
1
make clean
2
make build
3
make start
Copied!
  • You may need to run make build twice in order to properly compile smart contracts
    Note: 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 modified 2mo ago