ZerocashBFT is an Ethereum-based distributed ledger protocol with transaction/contract privacy and new consensus mechanisms.
ZerocashBFT is a fork of go-ethereum and is updated in line with go-ethereum releases.
Key enhancements over go-ethereum:
- Privacy - ZerocashBFT supports private transactions and private contracts through public/private state separation, and utilises peer-to-peer encrypted message exchanges (see Tessera) for directed transfer of private data to network participants
- Alternative Consensus Mechanisms - with no need for POW/POS in a permissioned network, ZerocashBFT instead offers multiple consensus mechanisms that are more appropriate for consortium chains:
- QBFT - Improved version of IBFT that is interoperable with Hyperledger Besu
- Istanbul BFT - a PBFT-inspired consensus algorithm with transaction finality, by AMIS.
- Clique POA Consensus - a default POA consensus algorithm bundled with Go Ethereum.
- Raft-based Consensus - a consensus model for faster blocktimes, transaction finality, and on-demand block creation
- Peer Permissioning - node/peer permissioning, ensuring only known parties can join the network
- Account Management - ZerocashBFT introduced account plugins, which allows ZerocashBFT or clef to be extended with alternative methods of managing accounts including external vaults.
- Pluggable Architecture - allows adding additional features as plugins to the core
geth
, providing extensibility, flexibility, and distinct isolation of ZerocashBFT features. - Higher Performance - ZerocashBFT offers significantly higher performance throughput than public geth
The above diagram is very high-level overview of component architecture used by ZerocashBFT. For more in-depth discussion of the components and how they interact.
The easiest way to get started is to use zerocash-quickstart - a command line tool that allows users to set up a development ZerocashBFT network on their local machine in less than 2 minutes.
The official docker containers can be found under https://hub.docker.com/u/avenbreak/zerocashbft
The go-ethereum library (i.e. all code outside of the cmd
directory) is licensed under the
GNU Lesser General Public License v3.0, also
included in our repository in the COPYING.LESSER
file.
The go-ethereum binaries (i.e. all code inside of the cmd
directory) is licensed under the
GNU General Public License v3.0, also included
in our repository in the COPYING
file.
Any project planning to use the crypto/secp256k1
sub-module must use the specific secp256k1 standalone library licensed under 3-clause BSD.