This project is used to implement a blockChain with a weak asynchronous BFT -- BitFT. There are two protocols: BitFT and Layered BitFT.
Machines are divided into two types:
- WorkComputer: just configure
servers
at the initial stage, particularly viaansible
tool. - Servers: run daemons of
BitFT
, communicate with each other via P2P model.
- 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+
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
sudo apt install python3-pip
sudo pip3 install --upgrade pip
pip3 install ansible
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
sudo apt-get install sshpass
pip3 install paramiko
Download our code in your WorkComputer and build it.
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
Now you should enter the ansible directory to take the next operations.You need to change the ansible/hosts
first.
ansible -i ./hosts bit -m authorized_key -a "user=vagrant key='{{lookup('file', '/home/vagrant/.ssh/id_rsa.pub')}}' path='/home/vagrant/.ssh/authorized_keys' manage_dir=no" --ask-pass -c paramiko
ansible-playbook conf-server.yaml -i hosts
ansible-playbook run-server.yaml -i hosts
ansible-playbook clean-server.yaml -i hosts