Bumps the known_good_semver group with 4 updates: [serde](https://github.com/serde-rs/serde), [serde_json](https://github.com/serde-rs/json), [clap](https://github.com/clap-rs/clap) and [serde_yaml](https://github.com/dtolnay/serde-yaml). Updates `serde` from 1.0.193 to 1.0.194 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p> <blockquote> <h2>v1.0.194</h2> <ul> <li>Update proc-macro2 to fix caching issue when using a rustc-wrapper such as sccache</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/serde-rs/serde/commit/d2d977a6c6dcff237ae956336d18b0c900c61aad"><code>d2d977a</code></a> Release 1.0.194</li> <li><a href="https://github.com/serde-rs/serde/commit/a9a6ee9d7f2e3a3306ad7c7a8f21dcf369c6acb7"><code>a9a6ee9</code></a> Pull in proc-macro2 sccache fix</li> <li><a href="https://github.com/serde-rs/serde/commit/28c5d215c11b66368b725f04cb92e49e4350bcdc"><code>28c5d21</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2669">#2669</a> from dtolnay/optionifletelse</li> <li><a href="https://github.com/serde-rs/serde/commit/3d6a789562579fb7ea783e0d7f35530914d8baca"><code>3d6a789</code></a> Remove option_if_let_else clippy suppression</li> <li><a href="https://github.com/serde-rs/serde/commit/a0e68698e33fa928f1d9f208d68b17df9f8bb568"><code>a0e6869</code></a> Work around doc_link_with_quotes pedantic clippy lint</li> <li>See full diff in <a href="https://github.com/serde-rs/serde/compare/v1.0.193...v1.0.194">compare view</a></li> </ul> </details> <br /> Updates `serde_json` from 1.0.108 to 1.0.110 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p> <blockquote> <h2>v1.0.109</h2> <ul> <li>Documentation improvements</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/serde-rs/json/commit/df5cf215b70fb6341b255e7c0a210c06f64c0669"><code>df5cf21</code></a> Release 1.0.110</li> <li><a href="https://github.com/serde-rs/json/commit/c35856a93c37b48b3d6efc4fec8e05554dd3f9d5"><code>c35856a</code></a> Pull in proc-macro2 sccache fix</li> <li><a href="https://github.com/serde-rs/json/commit/f88bf1fccb05aa4de129675de44eb6aaf3fec0a0"><code>f88bf1f</code></a> Release 1.0.109</li> <li><a href="https://github.com/serde-rs/json/commit/bb62c73ecef901e689b0a7a67ed613a32975520c"><code>bb62c73</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/json/issues/1097">#1097</a> from serde-rs/doccfg</li> <li><a href="https://github.com/serde-rs/json/commit/df36d109fd9f9cdd22a874c0177cafec12237f95"><code>df36d10</code></a> Restore doc cfg on re-exports</li> <li><a href="https://github.com/serde-rs/json/commit/c3670913423329c166add9d85ecdfc3e3da21e7a"><code>c367091</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/json/issues/1095">#1095</a> from dtolnay/hashtest</li> <li><a href="https://github.com/serde-rs/json/commit/b328ee7df4dd772922f084600aa7cea39218b694"><code>b328ee7</code></a> Eliminate hash closure in favor of calling hash_one directly</li> <li><a href="https://github.com/serde-rs/json/commit/b9bcbad3c094042f79f1a45189ec0edbb8f9f322"><code>b9bcbad</code></a> Use BuildHasher::hash_one</li> <li><a href="https://github.com/serde-rs/json/commit/7ff6c9e30c2ecc2cdcf089ed86c7ccfe7a41721c"><code>7ff6c9e</code></a> Use random hasher state for number hashing test</li> <li><a href="https://github.com/serde-rs/json/commit/fe031cd1de4dde5b47e0f18934632b41bd18b48d"><code>fe031cd</code></a> Delete trace_macros! functionality from test</li> <li>Additional commits viewable in <a href="https://github.com/serde-rs/json/compare/v1.0.108...v1.0.110">compare view</a></li> </ul> </details> <br /> Updates `clap` from 4.4.11 to 4.4.12 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p> <blockquote> <h2>v4.4.12</h2> <h2>[4.4.12] - 2023-12-28</h2> <h3>Performance</h3> <ul> <li>Only ask <code>TypedValueParser</code> for possible values if needed</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p> <blockquote> <h2>[4.4.12] - 2023-12-28</h2> <h3>Performance</h3> <ul> <li>Only ask <code>TypedValueParser</code> for possible values if needed</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/clap-rs/clap/commit/6d601e6f312857d78f47741268f1748840484d4a"><code>6d601e6</code></a> chore: Release</li> <li><a href="https://github.com/clap-rs/clap/commit/048e7f0fbc4f8108894e4307af768c8d332a0576"><code>048e7f0</code></a> docs: Update changelog</li> <li><a href="https://github.com/clap-rs/clap/commit/53f5b820988c1c03f0d2696fc144857ad461edc1"><code>53f5b82</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/5267">#5267</a> from vermiculus/sa/avoid-pv-expansion-in-help</li> <li><a href="https://github.com/clap-rs/clap/commit/05cd057978db743a65fb5fde33213af752d064e7"><code>05cd057</code></a> perf: Avoid retrieving possible_values unless used</li> <li><a href="https://github.com/clap-rs/clap/commit/29208083b0598ba7d1b80e79821c0ba3eb2342ce"><code>2920808</code></a> test: Update snapshots</li> <li><a href="https://github.com/clap-rs/clap/commit/28763ebb6d8714f6ca588bf477729040e0e760b0"><code>28763eb</code></a> chore: Release</li> <li><a href="https://github.com/clap-rs/clap/commit/ace7bb5b4570b030f7c2d0fa91e0afaaac1b0030"><code>ace7bb5</code></a> docs(complete): Update changelog</li> <li><a href="https://github.com/clap-rs/clap/commit/76beca4d4d42a817bbb578f23553c64ded2aea97"><code>76beca4</code></a> docs(complete): Polish API reference for dynamic</li> <li><a href="https://github.com/clap-rs/clap/commit/3630e582d3ec59912b8e9369c38687695ddb1f43"><code>3630e58</code></a> Merge pull request <a href="https://redirect.github.com/clap-rs/clap/issues/5273">#5273</a> from epage/docsrs</li> <li><a href="https://github.com/clap-rs/clap/commit/3724b9e2e4c2a2e69337b6d809949b246d3fef39"><code>3724b9e</code></a> docs: Include more content on docs.rs</li> <li>See full diff in <a href="https://github.com/clap-rs/clap/compare/v4.4.11...v4.4.12">compare view</a></li> </ul> </details> <br /> Updates `serde_yaml` from 0.9.29 to 0.9.30 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/dtolnay/serde-yaml/releases">serde_yaml's releases</a>.</em></p> <blockquote> <h2>0.9.30</h2> <ul> <li>Update proc-macro2 to fix caching issue when using a rustc-wrapper such as sccache</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/dtolnay/serde-yaml/commit/09ee25156f608f95150b27edd120bd5471db3c64"><code>09ee251</code></a> Release 0.9.30</li> <li><a href="https://github.com/dtolnay/serde-yaml/commit/caea939ece85ab54ac41de0672d683905f1e406a"><code>caea939</code></a> Pull in proc-macro2 sccache fix</li> <li><a href="https://github.com/dtolnay/serde-yaml/commit/d255918c141fd72d01f169bb5aa0152234981699"><code>d255918</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/serde-yaml/issues/403">#403</a> from dtolnay/optionifletelse</li> <li><a href="https://github.com/dtolnay/serde-yaml/commit/8cfeedd766f83dab24d03b9fb11b72886a247425"><code>8cfeedd</code></a> Remove option_if_let_else clippy suppression</li> <li>See full diff in <a href="https://github.com/dtolnay/serde-yaml/compare/0.9.29...0.9.30">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Parachain modules
Configuration
Note: This section is not necessary for local development, as there are scripts to auto-configure the parachain in the test directory.
For a fully operational chain, further configuration of the initial chain spec is required. The specific configuration will depend heavily on your environment, so this guide will remain high-level.
After completing a release build of the parachain, build an initial spec for the snowbase runtime:
target/release/snowbridge build-spec --chain snowbase --disable-default-bootnode > spec.json
Now edit the spec and configure the following:
- Recently finalized ethereum header and difficulty for the ethereum light client
- Contract addresses for the Ether, Erc20, and Dot apps.
- Authorized principal for the basic channel
For an example configuration, consult the setup script
for our local development stack. Specifically the start_polkadot_launch bash function.
Tests
To run the parachain tests locally, use cargo test --workspace. For the full suite of tests, use
cargo test --workspace --features runtime-benchmarks.
Optionally exclude the top-level and runtime crates:
cargo test --workspace \
--features runtime-benchmarks \
--exclude snowbridge \
--exclude snowbridge-runtime \
--exclude snowblink-runtime \
--exclude snowbase-runtime
Updating test data for inbound channel unit tests
To regenerate the test data, use a test with multiple submit calls in ethereum/test/test_basic_outbound_channel.js, eg.
"should increment nonces correctly".
Add the following preamble:
const rlp = require("rlp");
const contract = BasicOutboundChannel;
const signature = 'Message(address,address,uint64,uint64,bytes)';
For each encoded log you want to create, find a transaction object tx returned from a submit call and run this:
const rawLog = tx.receipt.rawLogs[0];
const encodedLog = rlp.encode([rawLog.address, rawLog.topics, rawLog.data]).toString("hex");
console.log(`encodedLog: ${encodedLog}`);
const iface = new ethers.utils.Interface(contract.abi);
const decodedEventLog = iface.decodeEventLog(
signature,
rawLog.data,
rawLog.topics,
);
console.log(`decoded rawLog.data: ${JSON.stringify(decodedEventLog)}`);
Place the encodedLog string in the message.data field in the test data. Use the decoded rawLog.data field to
update the comments with the decoded log data.
Generating pallet weights from benchmarks
Build the parachain with the runtime benchmark flags for the chosen runtime:
runtime=snowbase
cargo build \
--release \
--no-default-features \
--features "$runtime-native,rococo-native,runtime-benchmarks,$runtime-runtime-benchmarks" \
--bin snowbridge
List available pallets and their benchmarks:
./target/release/snowbridge benchmark pallet --chain $runtime --list
Run a benchmark for a pallet, generating weights:
target/release/snowbridge benchmark pallet \
--chain=$runtime \
--execution=wasm \
--wasm-execution=compiled \
--pallet=basic_channel_inbound \
--extra \
--extrinsic=* \
--repeat=20 \
--steps=50 \
--output=pallets/basic-channel/src/inbound/weights.rs \
--template=templates/module-weight-template.hbs
Generating beacon test fixtures and benchmarking data
Minimal Spec
To generate minimal test data and benchmarking data, make sure to start the local E2E setup to spin up a local beacon
node instance to connect to:
cd web/packages/test
./scripts/start-services.sh
Wait for output Testnet has been initialized.
In a separate terminal, from the snowbridge directory, run:
mage -d relayer build && relayer/build/snowbridge-relay generate-beacon-data --spec "minimal" && cd parachain &&
cargo +nightly fmt -- --config-path rustfmt.toml && cd -
Mainnet Spec
We only use the mainnet spec for generating fixtures for pallet weight benchmarks.
To generate the data we can connect to the Lodestar Goerli public node. The script already connects to the Lodestar node, so no need to start up additional services. In the event of the Lodestar node not being available, you can start up your own stack with these commands:
cd web/packages/test
./scripts/start-goerli.sh
From the snowbridge directory, run:
mage -d relayer build && relayer/build/snowbridge-relay generate-beacon-data --spec "mainnet" && cd parachain &&
cargo +nightly fmt -- --config-path rustfmt.toml && cd -
Benchmarking tests
To run the benchmark tests
cd parachain/pallets/ethereum-beacon-client
cargo test --release --features runtime-benchmarks