Skip to content

The Baseline Protocol is an open source initiative that combines advances in cryptography, messaging, and blockchain to execute secure and private business processes at low cost via the public Ethereum Mainnet. The protocol will enable confidential and complex collaboration between enterprises without leaving any sensitive data on-chain

License

Notifications You must be signed in to change notification settings

albertxos/baseline

 
 

Repository files navigation

Welcome to Baseline

Combining advances in cryptography, messaging, and blockchain to execute
secure and private business processes via the public Ethereum Mainnet.

Read the full documentation here at docs.baseline-protocol.org.

Join our Slack workspace for Baseline news and updates!


Baseline is an open source initiative with a large and growing team of supporting companies. The first code was donated by Ernst & Young and ConsenSys, with support from Microsoft, and is now receiving contributions from many other companies. The purpose of the project is to bring enterprises and complex business processes to the Ethereum Mainnet, while guarding the privacy constraints and needs of a typical group of enterprises.

The Baseline Protocol defines a series of steps to privately and securely synchronize data and business logic between multiple independent systems of record, using the Ethereum Mainnet as an auditable common frame of reference. This protocol implements best practices around data consistency and compartmentalization, and leverages public Ethereum for verifying execution of private transactions, contracts and tokens on the Mainnet using ZKP (zkSnarks). The Baseline Protocol is designed such that it can be extended and applied to any database/workflow.

Radish34 Demo

In order to demonstrate the Baseline Protocol, we needed a use-case. The use-case chosen was product procurement within a supply-chain, and the custom application built for this workflow is called Radish34. This application was built as a proof of concept for the Baseline Protocol.

The Baseline Protocol code is currently embedded inside the /radish-api directory, but we are in the process of moving that code into the /baseline directory to clearly distinguish the protocol from the use-case. Once this move is complete, radish-api will import baseline as a module, which will be the same process that other projects will need to follow to implement Baseline.

Quickstart

A Makefile has been included for convenience; most of its targets wrap npm, docker and solc invocations.

Just want to get the Baseline Protocol running locally? The following sequence will build the monorepo, start the Baseline Protocol stack locally, deploy contracts and run the full test suite. Note: this typically takes at least 30 minutes to complete.

make
make deploy-contracts
make start
make test

Here are the targets currently exposed by the Makefile:

Target Description
make Alias for make build.
make build Build and dockerize all modules within the monorepo; perform initial zk circuit setups.
make clean Reclaim disk used by all modules (i.e. node_modules/) and the local docker environment. This effectively uninstalls your local Baseline environment and will require building from scratch.
make contracts Compile the Solidity contracts.
make deploy-contracts Deploy the Solidity contracts. Requires the stack to be running.
make npm-install npm ci wrapper for all modules in the monorepo.
make start Start the full Baseline stack. Requires docker service to be running with at least 12 GB RAM allocation.
make stop Stop the running Baseline stack.
make reset Clean out the docker networks and volumes. Requires make deploy-contracts before the next make start.
make test Run the full test suite. Requires the stack to be running.
make zk-circuits Perform zk-SNARK trusted setups for circuits contained within zkp/circuits

Running Radish34

To run the Radish34 application, follow the instructions in radish34/README.md.

cd radish34 and go from there 🚀

What is here?

The root directory of this repo (where this Readme currently lives) contains the following folders:

.
├── baseline  <-- Future home to the Baseline Protocol libraries
├── bin <-- Scripts to run across the entire project
├── docs <-- auto-generated and artisanal hand crafted documentation 
└── radish34 <-- The demonstration POC (you probably are looking for this)

Running scripts across the project

To use the top level scripts (currently just documentation auto-generation and collection) do the following:

Required: NodeJS 11.15 (nvm is recommended)

  • run npm install to install the top level packages
  • run npm run bootstrap to install all the packages in all the project components (using lerna)

optionally npm run clean to clean out any node_modules folders installed by the bootstrap command.

How to contribute?

See our contributing guidelines

License

All code in this repo is released under the CC0 1.0 Universal public domain dedication. For the full license text, refer to license.md.

About

The Baseline Protocol is an open source initiative that combines advances in cryptography, messaging, and blockchain to execute secure and private business processes at low cost via the public Ethereum Mainnet. The protocol will enable confidential and complex collaboration between enterprises without leaving any sensitive data on-chain

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 82.8%
  • Solidity 14.2%
  • Python 1.4%
  • Shell 0.5%
  • Dockerfile 0.5%
  • HTML 0.3%
  • Other 0.3%