Skip to content
View TopToy's full-sized avatar

Block or report TopToy

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
TopToy/README.md

TopToy

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.

Getting Started

TopToy is supported only on an Ubuntu linux machine requires the following

Prerequisites

  1. Install Java
    sudo apt update
    sudo apt install default-jdk
    
  2. Install docker
    1. Remove an old version (if exists)
      sudo apt-get remove docker docker-engine docker.io containerd runc
      
    2. 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"
      
    3. Install Docker
      sudo apt-get update
      sudo apt-get install docker-ce docker-ce-cli containerd.io
      
    4. Add permissions for your current user to run docker
      sudo groupadd docker
      sudo usermod -aG docker $USER
      
    5. Restart (or logout and login) your system
    6. 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
      
  3. Install maven
    sudo apt update
    sudo apt install maven
    
  4. Install make
    sudo apt install make
    

Installation

  1. Clone this repository
    git clone https://github.com/TopToy/TopToy.git
    
  2. Build the project
    make build
    

Benchmarks

This project has a couple of dockers based benchmarks that demonstrate its abilities
The benchmarks parameters are described in the wiki.

Benchmarks Description

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

Running A Benchmark

  1. Go to definitions.sh and set n and f
  2. Go to make_scripts/tests/tests_conf.txt and mark the benchmarks to run
    • To exclude a benchmark, mark it with '#'
  3. Build the project using make docker-full-build
  4. Run the benchmarks using make docker-run-tests
  5. See the results and logs at /tmp/dtoy/out

Popular repositories Loading

  1. TopToy TopToy Public

    An efficient and frugal blockchain platform

    Java 3 1

  2. Spinner Spinner Public

    A front end RESTFul server for negotiating TopToy

    Python

  3. Geppetto Geppetto Public

    A runner for docker based TOP application

    Python