This project is the implementation of the TOY algorithm and its orchestrating platform, TOP, as was presented in TOY: a Total ordering Optimistic sYstem for Permissioned Blockchains.
TOY is a unique frugal optimistic blockchain algorithm.
TOP runs TOYS as workers and is capable to deal with tens to hundreds of thousands of TPS while deployed on dozens to hundreds machines.
TopToy is supported only on an Ubuntu linux machine requires the following
- Install Java
sudo apt update sudo apt install default-jdk - Install docker
- Remove an old version (if exists)
sudo apt-get remove docker docker-engine docker.io containerd runc - Set Up The Repository
sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD88 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" - Install Docker
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io - Add permissions for your current user to run docker
sudo groupadd docker sudo usermod -aG docker $USER - Restart (or logout and login) your system
- Install docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
- Remove an old version (if exists)
- Install maven
sudo apt update sudo apt install maven - Install
makesudo apt install make
- Clone this repository
git clone https://github.com/TopToy/TopToy.git - Build the project
make build
This project has a couple of dockers based benchmarks that demonstrate its abilities
The benchmarks parameters are described in the wiki.
| Benchmark | Description |
|---|---|
| test_correct | Test the system when no failures occur |
| test_benign_failure | Test the system with f benign failures |
| test_async | Test the system in a asynchronous period |
| test_byz_failure | Test the system with (i) f Byzantine failures and (ii) in an asynchronous period |
| test_clients_performance | Test the system when no failures occur with clients running on top of docker containers |
- Go to
definitions.shand set n and f - Go to
make_scripts/tests/tests_conf.txtand mark the benchmarks to run- To exclude a benchmark, mark it with '#'
- Build the project using
make docker-full-build - Run the benchmarks using
make docker-run-tests - See the results and logs at
/tmp/dtoy/out
