Awesome
Haya - blockchain with fast finality based on EOS
Haya implements randpa finality for EOS. Randpa was inspired by grandpa. We will publish a whitepaper soon.
Build Status
Branch | Build Status |
---|---|
Master | |
Develop |
Build
./scripts/haya_build.sh
Run tests
All tests
Without mongo
cd build
ctest -E mongo
With mongo
cd build
./$HOME/bin/mongod --dbpath $HOME/data/mongodb -f $HOME/etc/mongod.conf --logpath $HOME/var/log/mongodb/mongod.log &
PATH=$PATH:$HOME/opt/mongodb/bin ctest
Randpa tests
Plugin unit tests
cd build
ctest -R randpa_plugin
Simulator tests
We have also coded our own blockchain simulator for testing. It saves us a ton of time when debugging.
cd build
ctest -R simulator
Run one node
For the purpose of this tutorial we have provided basic config files in the tutorials/randpa-tutorial/configs directory.
Assuming you have your executable in the build directory you can start the node by running
./bin/haya-node --delete-all-blocks -c ../tutorials/randpa-tutorial/configs/config0.ini
...
info 2019-04-24T11:42:24.505 thread-0 producer_plugin.cpp:1597 produce_block ] Produced block 00000002c38eb2c3... #2 @ 2019-04-24T11:42:24.500 signed by eosio [trxs: 0, lib: 0, confirmed: 0]
info 2019-04-24T11:42:24.509 thread-2 randpa.hpp:585 finish_round ] Randpa round reached supermajority, round num: 0, best block id: 00000002c38eb2c3cbebceb88129aa6d189c33d1449bb0397e0340cccc81840d, best block num: 2
info 2019-04-24T11:42:25.004 thread-0 producer_plugin.cpp:1597 produce_block ] Produced block 000000039de520a9... #3 @ 2019-04-24T11:42:25.000 signed by eosio [trxs: 0, lib: 2, confirmed: 0]
info 2019-04-24T11:42:25.504 thread-0 producer_plugin.cpp:1597 produce_block ] Produced block 000000043a87c431... #4 @ 2019-04-24T11:42:25.500 signed by eosio [trxs: 0, lib: 3, confirmed: 0]
info 2019-04-24T11:42:25.507 thread-2 randpa.hpp:585 finish_round ] Randpa round reached supermajority, round num: 1, best block id: 000000039de520a9a62390ed3abc545ef3ae80428513fc35ba515edba09acd1c, best block num: 3
info 2019-04-24T11:42:26.004 thread-0 producer_plugin.cpp:1597 produce_block ] Produced block 0000000590e6067f... #5 @ 2019-04-24T11:42:26.000 signed by eosio [trxs: 0, lib: 4, confirmed: 0]
info 2019-04-24T11:42:26.508 thread-0 producer_plugin.cpp:1597 produce_block ] Produced block 00000006510daf43... #6 @ 2019-04-24T11:42:26.500 signed by eosio [trxs: 0, lib: 5, confirmed: 0]
info 2019-04-24T11:42:26.511 thread-2 randpa.hpp:585 finish_round ] Randpa round reached supermajority, round num: 2, best block id: 0000000590e6067f9390cfe2e643de0ffc6dc5094ab750bd5bf1f3b159e62595, best block num: 5
info 2019-04-24T11:42:27.003 thread-0 producer_plugin.cpp:1597 produce_block ] Produced block 00000007b7dbaaf8... #7 @ 2019-04-24T11:42:27.000 signed by eosio [trxs: 0, lib: 6, confirmed: 0]
info 2019-04-24T11:42:27.506 thread-0 producer_plugin.cpp:1597 produce_block ] Produced block 00000008e2d399a5... #8 @ 2019-04-24T11:42:27.500 signed by eosio [trxs: 0, lib: 7, confirmed: 0]
info 2019-04-24T11:42:27.508 thread-2 randpa.hpp:585 finish_round ] Randpa round reached supermajority, round num: 3, best block id: 00000007b7dbaaf833cfa95495192a2dd117fb81428c9ba6e25f141a0cd37e19, best block num: 7
If you see "Randpa reached supermajority" messages then you have successfully launched your node.
Run multiple nodes
Running N nodes is as easy as running one with an additional step of setting block producers
1.Run 3 nodes
./bin/haya-node --delete-all-blocks -c ../tutorials/randpa-tutorial/config0.ini
./bin/haya-node --delete-all-blocks -c ../tutorials/randpa-tutorial/config1.ini
./bin/haya-node --delete-all-blocks -c ../tutorials/randpa-tutorial/config2.ini
2.Set block producers
./../tutorials/randpa-tutorial/setup.sh <your-wallet-pass>
3.Check for "Randpa reached suppermajority" messages in node logs
Contributing to Haya
Interested in contributing? That's awesome! Please follow our git flow: