The DKG is a multi-party computation protocol that generates a group public and private key. We aim to use this group keypair to sign arbitrary messages that will govern protocols deployed around the blockchain ecosystem. One primary purpose for the DKG is to govern and facilitate operations of the private signature bridge/anchor system.
For additional information, please refer to the Webb DKG Rust Docs (opens in a new tab). Have feedback on how to improve the dkg? Or have a specific question to ask? Checkout the DKG Feedback Discussion (opens in a new tab) 💬.
This guide uses https://rustup.rs (opens in a new tab) installer and the
rustup tool to manage the Rust toolchain.
First install and configure
# Install curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # Configure source ~/.cargo/env
Configure the Rust toolchain to default to the latest stable version, add nightly and the nightly wasm target:
rustup default nightly rustup update rustup update nightly rustup target add wasm32-unknown-unknown
cargo build --release
NOTE: You must use the release builds! The optimizations here are required as in debug mode, it is expected that nodes are not able to run fast enough to produce blocks.
- Install Nix (opens in a new tab)
- Enable Flakes (opens in a new tab)
- If you have direnv (opens in a new tab) installed, everything should work out of the box.
- Run `nix develop`` in the root of this repo to get a shell with all the dependencies installed.
Standalone Local Testnet
This should start the local testnet, you can view the logs in /tmp directory for all the authorities and use polkadotJS to view the running testnet.
The following instructions outline how to run dkg-substrate's base test suite and E2E test suite.
To run base tests:
Copy code cargo test To run the test orchestrator E2E tests (recommended):
# Build the dkg-standalone node cargo build --release -p dkg-standalone-node --features=integration-tests,testing # run the orchestrator, making sure to use the proper config cargo run --package dkg-test-orchestrator --release --features=testing -- --config /path/to/orchestrator_config.toml
Setting up debugging logs:
If you would like to run the dkg with verbose logs you may add the following arguments during initial setup. You may change the target to include `debug | error | info| trace | warn``. You may also want to review Substrate runtime debugging.
-ldkg=debug \ -ldkg_metadata=debug \ -lruntime::offchain=debug \ -ldkg_proposal_handler=debug \ -ldkg_proposals=debug
Interested in contributing to the Webb Relayer Network? Thank you so much for your interest! We are always appreciative for contributions from the open-source community!
If you have a contribution in mind, please check out our Contribution Guide for information on how to do so. We are excited for your first contribution!
Licensed under GNU General Public License v3.0.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the GNU General Public License v3.0 license, shall be licensed as above, without any additional terms or conditions.