This repository contains a prototype implementation of a practical distributed key generation system with two execution modes:
async: asynchronous DKGpsync: partially synchronous DKG
This code builds on components from the following repositories:
- VSS: https://github.com/sourav1547/e2e-vss
- ACS: https://github.com/akhilsb/acss-rs/tree/master/consensus/acs
- Partially synchronous consensus: https://github.com/asonnino/hotstuff
The local runner expects:
- Rust and Cargo
tmuxlsofpython3
Use the runner script at the repo root:
./run_dkg.sh 4 asyncThis starts a 4-node asynchronous DKG run locally.
./run_dkg.sh 4 psyncThis starts a 4-node partially synchronous DKG run locally.
run_dkg.sh:
- regenerates local node configs
- generates latency input from the files in
config-files/ - starts one
tmuxsession per node - runs the
clibinary for each node
- Attach to node 0 with:
tmux attach -t cli_node0- The default node count is
4if omitted. - The default latency profile is
raw. - Generated configs are written under
tmpconfig/.