https://github.com/cgcl-codes/wahoo

Implement the accepted paper [TIFS'24] Wahoo in Golang

https://github.com/cgcl-codes/wahoo

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.1%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Implement the accepted paper [TIFS'24] Wahoo in Golang

Basic Info
  • Host: GitHub
  • Owner: CGCL-codes
  • License: apache-2.0
  • Language: Go
  • Default Branch: main
  • Homepage:
  • Size: 72.3 KB
Statistics
  • Stars: 0
  • Watchers: 3
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created about 2 years ago · Last pushed about 2 years ago
Metadata Files
Readme License

README.md

Description

This project is used to implement Tusk, GradedDAG and Wahoo.You can learn more about wahoo in our Wahoo: A DAG-based BFT Consensus with Low Latency and Communication Overhead paper.

Usage

1. Machine types

Machines are divided into two types: - WorkComputer: just configure servers at the initial stage, particularly via ansible tool. - Servers: run daemons of Wahoo, communicate with each other via P2P model.

2. Precondition

  • Recommended OS releases: Ubuntu 18.04 (other releases may also be OK)
  • Go version: 1.16+ (with Go module enabled)
  • Python version: 3.6.9+

2.1 Install go

``` sudo apt-get update mkdir tmp cd tmp wget https://dl.google.com/go/go1.16.15.linux-amd64.tar.gz sudo tar -xvf go1.16.15.linux-amd64.tar.gz sudo mv go /usr/local

echo 'export PATH=$PATH:~/.local/bin:/usr/local/go/bin' >> ~/.bashrc source ~/.bashrc go env -w GO111MODULE="on"
go env -w GOPROXY=https://goproxy.io ```

2.2 Install ansible

sudo apt update sudo apt install software-properties-common sudo apt-get install ansible sudo apt-get install sshpass

3. Run the protocol

Download our code in your WorkComputer and build it.

3.1 Generate configurations

You need to change the config_gen/config_template.yaml first, and next you can generate configurations for all Servers. cd config_gen go run main.go

3.2 Run

Now you should enter the ansible directory to take the next operations.You need to change the ansible/hosts first.

3.2.1 Login without passwords

The following code needs to be adjusted according to your actual situation. ansible -i ./hosts BFT -m authorized_key -a "user=root key='{{lookup('file', '/home/root/.ssh/id_rsa.pub')}}' path='/home/root/.ssh/authorized_keys' manage_dir=no" --ask-pass -c paramiko

3.2.2 Configure servers via ansible

ansible-playbook copycode.yaml -i hosts ansible-playbook copyconfig.yaml -i hosts

3.2.3 Run servers via ansible

ansible-playbook run-server.yaml -i hosts

3.2.4 Kill servers via ansible

ansible-playbook clean-server.yaml -i hosts

Owner

  • Name: CGCL-codes
  • Login: CGCL-codes
  • Kind: organization

CGCL/SCTS/BDTS Lab

GitHub Events

Total
  • Watch event: 3
Last Year
  • Watch event: 3

Dependencies

go.mod go
  • github.com/hashicorp/go-hclog v1.3.1
  • github.com/hashicorp/go-msgpack v1.1.5
  • github.com/klauspost/reedsolomon v1.9.14
  • github.com/spf13/viper v1.13.0
  • go.dedis.ch/kyber/v3 v3.0.14
go.sum go
  • 857 dependencies