This project is currently at the prototype stage and does not contain full functionality. Codebase uploaded only for demonstration purpose and does not reflect the final quiality. For production usage, please visit Drand Golang implementation
We aim to enhance the robustness and security of linked nodes by mitigating the risk of a single point of failure associated with software implementation. Additionally, we are exploring the opportunities of the system in terms of Rust language features.
- General picture of implemented modules mapped into two phases of public randomness. Aligned to be compatible with v1.5.8 drand golang implementation.
Binaries in make_demo folder can be reused or obtained in next 2 steps:
- Compile project using one of the features to specify backend:
cargo build --release --features arkworks
# or
cargo build --release --features blstrs
- Download golang binary binary v1.5.8 (tested on linux amd64)
Rename binaries into drand_go and drand_rs accordingly and place them into make_demo folder.
Execute ./run script to start Setup and Generation. Script configured to perform next scenario
Setup and Generation:
Group: 4 nodes Scheme beacon id
leader: golang impl (1 node) pedersen-bls-chained AAA
members: rust impl (3 nodes) pedersen-bls-unchained BBB
bls-unchained-g1-rfc9380 CCC
Number of nodes can be modified for various scenaries, for example:
Setup and Generation:
Group: 4 nodes Scheme beacon id
leader: golang impl (1 node) pedersen-bls-chained AAA
members: rust impl (3 nodes)
Group: 7 nodes Scheme beacon id
leader: golang impl (1 node) pedersen-bls-unchained BBB
members: rust impl (6 nodes)
Group: 10 nodes Scheme beacon id
leader: golang impl (1 node) bls-unchained-g1-rfc9380 CCC
members: rust impl (9 nodes)