https://github.com/cgcl-codes/wahoo
Implement the accepted paper [TIFS'24] Wahoo in Golang
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
Repository
Implement the accepted paper [TIFS'24] Wahoo in Golang
Basic Info
Statistics
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
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
- Website: http://grid.hust.edu.cn/
- Repositories: 35
- Profile: https://github.com/CGCL-codes
CGCL/SCTS/BDTS Lab
GitHub Events
Total
- Watch event: 3
Last Year
- Watch event: 3
Dependencies
- 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
- 857 dependencies