Skip to content

Latest commit

 

History

History
49 lines (38 loc) · 2.26 KB

README.md

File metadata and controls

49 lines (38 loc) · 2.26 KB

exonum-timestamping benchmark

Simple client-based benchmarking tool for the exonum-timestamping service.

This tool was built from the need to have a high-throughput and efficient benchmarking tool for the Exonum blockchain. Using the nodeJS client for Exonum resulted in inconsistent results and would often be bottlenecked by the sending client.

By reusing the transactions schema from the Rust service implementation it becomes possible to properly benchmark the blockchain.

An adjusted frontend for the timestamping service with deployment and benchmarking scripts can be found at https://bitbucket.org/sigma67/exonum-log-timestamping/

Research Paper

You can find the associated research paper here:

A secure and auditable logging infrastructure based on a permissioned blockchain

Prerequisites

Initially you need to set up at least 4 instances of the Exonum blockchain with the timestamping service by following the instructions in examples/timestamping/README.md

# clone the main Exonum repository v0.11
git clone https://github.com/exonum/exonum/ --branch "0-11-1-release" --depth 1

cd exonum/examples/timestamping/backend
cargo install

To install the frontend, run

git clone https://bitbucket.org/sigma67/exonum-log-timestamping/ --depth 1
npm install
npm run build
npm start -- --port=2268 --api-root=http://127.0.0.1:8200

Build the benchmarking tool

# Clone this repository
git clone https://github.com/sigma67/exonum-bench
cargo install

For the build to succeed, the main exonum repository needs to be present in the same parent directory.

Run

The benchmarking tool sends a specific number of transactions to the configured blockchain node per second.

# Send 100 transactions per second for 60 seconds
exonum-bench 100 60 1

There is also an automated script for remote benchmarking spread across all blockchain nodes at https://bitbucket.org/sigma67/exonum-log-timestamping/src/master/deploy/run_benchmark.sh.

This results in a more realistic benchmark since all blockchain nodes receive an equal amount of transactions.