Snowbridge is a trustless bridge between Polkadot and Ethereum. For documentation, visit https://docs.snowbridge.network.
The Snowbridge project lives in two repositories:
- Snowfork/polkadot-sdk: The Snowbridge parachain and pallets live in a fork of the polkadot-sdk. Changes are eventually contributed back to paritytech/polkadot-sdk
- Snowfork/snowbridge: The rest of the Snowbridge components, like contracts, off-chain relayer, end-to-end tests and test-net setup code.
Polkadot parachain and our pallets. See https://github.com/Snowfork/polkadot-sdk.
Ethereum contracts and unit tests. See contracts/README.md
Off-chain relayer services for relaying messages between Polkadot and Ethereum. See relayer/README.md
Scripts to provision a local testnet, running the above services to bridge between local deployments of Polkadot and Ethereum. See web/packages/test/README.md.
Integration tests for our local testnet. See smoketest/README.md.
We use the Nix package manager to provide a reproducible and maintainable developer environment.
After installing nix Nix, enable flakes:
mkdir -p ~/.config/nix
echo 'experimental-features = nix-command flakes' >> ~/.config/nix/nix.conf
Then activate a developer shell in the root of our repo, where
flake.nix
is located:
nix develop
Also make sure to run this initialization script once:
scripts/init.sh
To ensure your code editor (such as VS Code) can execute tools in the nix shell, startup your editor within the interactive shell.
Example for VS Code:
nix develop
code .
The developer shell is bash by default. To preserve your existing shell:
nix develop --command $SHELL
To automatically enter the developer shell whenever you open the project, install
direnv
and use the template .envrc
:
cp .envrc.example .envrc
direnv allow
Sometimes we would like to upgrade rust toolchain. First update polkadot-sdk/rust-toolchain.toml
as required and then
update flake.lock
running
nix flake lock --update-input rust-overlay
Check the contents of all .envrc
files.
Remove untracked files:
git clean -idx
Ensure that the current Rust toolchain is the one selected in scripts/init.sh
.
Ensure submodules are up-to-date:
git submodule update
Check untracked files & directories:
git clean -ndx | awk '{print $3}'
After removing node_modules
directories (eg. with git clean above
), clear the pnpm cache:
pnpm store prune
Check Nix config in ~/.config/nix/nix.conf
.
Run a pure developer shell (note that this removes access to your local tools):
nix develop -i --pure-eval
The security policy and procedures can be found in SECURITY.md.