/tec-blockbench

Time-Energy-Cost Benchmarking of Blockchain Systems

Primary LanguageC++Apache License 2.0Apache-2.0

Time-Energy-Cost Benchmarking of Blockchain Systems

This repository is based on BlockBench, the first benchmarking framework for permissioned blockchain systems. Different from the original BlockBench, this repository:

  • adds benchmarking support for Fabric 2+ (e.g., v2.3.1) and Quorum (e.g., v20.10.0).
  • adds system-level benchmarks (in benchmark/systems_benchmarks)
  • adds scripts to do profiling (with Linux perf)
  • adds scripts to capture and parse power and energy

Experiments Reproducibility

Please see Benchmarking.md on how to reproduce the experiments presented in the paper "Characterizing the Performance and Cost of Blockchains on the Cloud and at the Edge".

Running Fabric v2+ Benchmarks

Please see the README.

Running Quorum Benchmarks

Please see the README for Quorum Raft.

Please see the README for Quorum IBFT.

Running Systems Benchmarks

Please see the README for systems benchmarks.

Other Information

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

Node.js libraries

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

Blockchain

Issues

For any issues, please open an issue in Github here.