BlockBench is the first benchmarking framework for private blockchain systems. It serves as a fair means of comparison for different platforms and enables deeper understanding of different system design choices.
BlockBench comes with both macro benchmark workloads for evaluating the overall performance and micro benchmark workloads for evaluating performance of individual layers.
- YCSB (KVStore).
- SmallBank (OLTP).
- DoNothing (consensus layer).
- IOHeavy (data model layer, read/write oriented).
- Analytics (data model layer, analytical query oriented).
- CPUHeavy (execution layer).
- Smart contract sources are in benchmark/contracts directory.
- Instructions and scripts to run benchmarks for Ethereum, Hyperledger Fabric v0.6, v1.4 and v2.2, Parity and Quorum are in ethereum, hyperledger fabric v0.6 , hyperledger fabric v1.4, hyperledger fabric v2.2, parity , quorum_raft and quorum_vote directories respectively.
- Drivers for benchmark workloads are in src directory.
-
Note: we patched this library to include the "Expect: " header in POST requests, which considerably improves the speed for processing RPC request at Parity.
-
The patch file is include in benchmark/parity folder.
-
To patch: go to top-level directory of restclient-cpp, then:
patch -p4 < $BLOCK_BENCH_HOME/benchmark/parity/patch_restclient
-
The installation can then proceed as normal.
-
Go to micro directory and use npm install
to install the dependency libraries
- geth(ethereum)
- geth(parity)
- geth(quorum)
- hyperledger fabric v0.6
- hyperledger fabric v1.4
- hyperledger fabric v2.2
- [1] A. Dinh, J. Wang, G. Chen, R. Liu, B. C. Ooi, K.-L. Tan: BLOCKBENCH: A Framework for Analysing Private Blockchains. ACM SIGMOD 2017.
- [2] The Morning Paper Review 2017
- [3] A. Dinh, R. Liu, M. Zhang, G. Chen, B.C. Ooi, J. Wang: Untangling Blockchain: A Data Processing View of Blockchain Systems. IEEE Transactions on Knowledge and Data Engineering, July 2018.
- [4] FabricSharp -- an faster Fabric blockchain system.