**Update:** Pushed additional changes based on the review comments. **This pull request fixes various spelling mistakes in this repository.** Most of the changes are contained in the first **3** commits: - `Fix spelling mistakes in comments and docs` - `Fix spelling mistakes in test names` - `Fix spelling mistakes in error messages, panic messages, logs and tracing` Other source code spelling mistakes are separated into individual commits for easier reviewing: - `Fix the spelling of 'authority'` - `Fix the spelling of 'REASONABLE_HEADERS_IN_JUSTIFICATION_ANCESTRY'` - `Fix the spelling of 'prev_enqueud_messages'` - `Fix the spelling of 'endpoint'` - `Fix the spelling of 'children'` - `Fix the spelling of 'PenpalSiblingSovereignAccount'` - `Fix the spelling of 'PenpalSudoAccount'` - `Fix the spelling of 'insufficient'` - `Fix the spelling of 'PalletXcmExtrinsicsBenchmark'` - `Fix the spelling of 'subtracted'` - `Fix the spelling of 'CandidatePendingAvailability'` - `Fix the spelling of 'exclusive'` - `Fix the spelling of 'until'` - `Fix the spelling of 'discriminator'` - `Fix the spelling of 'nonexistent'` - `Fix the spelling of 'subsystem'` - `Fix the spelling of 'indices'` - `Fix the spelling of 'committed'` - `Fix the spelling of 'topology'` - `Fix the spelling of 'response'` - `Fix the spelling of 'beneficiary'` - `Fix the spelling of 'formatted'` - `Fix the spelling of 'UNKNOWN_PROOF_REQUEST'` - `Fix the spelling of 'succeeded'` - `Fix the spelling of 'reopened'` - `Fix the spelling of 'proposer'` - `Fix the spelling of 'InstantiationNonce'` - `Fix the spelling of 'depositor'` - `Fix the spelling of 'expiration'` - `Fix the spelling of 'phantom'` - `Fix the spelling of 'AggregatedKeyValue'` - `Fix the spelling of 'randomness'` - `Fix the spelling of 'defendant'` - `Fix the spelling of 'AquaticMammal'` - `Fix the spelling of 'transactions'` - `Fix the spelling of 'PassingTracingSubscriber'` - `Fix the spelling of 'TxSignaturePayload'` - `Fix the spelling of 'versioning'` - `Fix the spelling of 'descendant'` - `Fix the spelling of 'overridden'` - `Fix the spelling of 'network'` Let me know if this structure is adequate. **Note:** The usage of the words `Merkle`, `Merkelize`, `Merklization`, `Merkelization`, `Merkleization`, is somewhat inconsistent but I left it as it is. ~~**Note:** In some places the term `Receival` is used to refer to message reception, IMO `Reception` is the correct word here, but I left it as it is.~~ ~~**Note:** In some places the term `Overlayed` is used instead of the more acceptable version `Overlaid` but I also left it as it is.~~ ~~**Note:** In some places the term `Applyable` is used instead of the correct version `Applicable` but I also left it as it is.~~ **Note:** Some usage of British vs American english e.g. `judgement` vs `judgment`, `initialise` vs `initialize`, `optimise` vs `optimize` etc. are both present in different places, but I suppose that's understandable given the number of contributors. ~~**Note:** There is a spelling mistake in `.github/CODEOWNERS` but it triggers errors in CI when I make changes to it, so I left it as it is.~~
Snowbridge ·
Snowbridge is a trustless bridge between Polkadot and Ethereum. For documentation, visit https://docs.snowbridge.network.
Components
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.
Parachain
Polkadot parachain and our pallets. See README.md.
Contracts
Ethereum contracts and unit tests. See Snowfork/snowbridge/contracts/README.md
Relayer
Off-chain relayer services for relaying messages between Polkadot and Ethereum. See Snowfork/snowbridge/relayer/README.md
Local Testnet
Scripts to provision a local testnet, running the above services to bridge between local deployments of Polkadot and Ethereum. See Snowfork/snowbridge/web/packages/test/README.md.
Smoke Tests
Integration tests for our local testnet. See Snowfork/snowbridge/smoketest/README.md.
Development
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
Support for code editors
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 .
Custom shells
The developer shell is bash by default. To preserve your existing shell:
nix develop --command $SHELL
Automatic developer shells
To automatically enter the developer shell whenever you open the project, install
direnv and use the template .envrc:
cp .envrc.example .envrc
direnv allow
Upgrading the Rust toolchain
Sometimes we would like to upgrade rust toolchain. First update rust-toolchain.toml as required and then
update flake.lock running
nix flake lock --update-input rust-overlay
Troubleshooting
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
Security
The security policy and procedures can be found in SECURITY.md.