Skip to content

BLOCKBENCH: A Framework for Analyzing Private Blockchains. Blockbench contains workloads for measuring the data processing performance, and workloads for understanding the performance of different layers of Blockchain systems.

License

Notifications You must be signed in to change notification settings

melhindi/blockbench

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BlockBench

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.

Workloads

Macro-benchmark

  • YCSB (KVStore).
  • SmallBank (OLTP).

Micro-benchmark

  • DoNothing (consensus layer).
  • IOHeavy (data model layer, read/write oriented).
  • Analytics (data model layer, analytical query oriented).
  • CPUHeavy (execution layer).

Source file structure

Dependency

C++ libraries

  • restclient-cpp

    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.

  • libcurl

  • Docker-Container The container folder contains a Dockerfile that creates a Docker container with all required C++ dependencies. You can use this Container to build the kvstore workload

Node.js libraries

Go to micro directory and use npm install to install the dependency libraries

Blockchain

About

BLOCKBENCH: A Framework for Analyzing Private Blockchains. Blockbench contains workloads for measuring the data processing performance, and workloads for understanding the performance of different layers of Blockchain systems.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 46.6%
  • Shell 13.3%
  • Go 12.2%
  • JavaScript 11.7%
  • Python 7.5%
  • Java 5.9%
  • Other 2.8%