Skip to content
Snippets Groups Projects
  1. May 08, 2024
    • Svyatoslav Nikolsky's avatar
      Bridge: check bridge GRANDPA pallet call limits from signed extension (#4385) · 17b56fae
      Svyatoslav Nikolsky authored
      silent, because it'll be deployed with the
      https://github.com/paritytech/polkadot-sdk/pull/4102, where this code
      has been introduced
      
      I've planned originally to avoid doing that check in the runtime code,
      because it **may be** checked offchain. But actually, the check is quite
      cheap and we could do that onchain too.
    • Dino Pačandi's avatar
      [pallet-balances] `burn_allow_death` extrinsic (#3964) · c3e57c1b
      Dino Pačandi authored
      
      Adds an additional extrinsic call to the `pallet-balances` to _burn_
      tokens.
      Depending on the `keep_alive` flag, the call might or might not reap the
      account.
      
      Required modification of the _fungible's_ `Mutate` trait, `burn_from`
      function to allow the `Preservation` argument.
      
      **TODO**
      - [x] run benchmarks & update weights
      - [x] make sure prdoc is required & properly formatted
      
      Related issue: https://github.com/paritytech/polkadot-sdk/issues/3943
      
      ---------
      
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      Co-authored-by: command-bot <>
    • Francisco Aguirre's avatar
      XcmDryRunApi - Dry-running extrinsics to get their XCM effects (#3872) · 7213e363
      Francisco Aguirre authored
      
      # Context
      
      Estimating fees for XCM execution and sending has been an area with bad
      UX.
      The addition of the
      [XcmPaymentApi](https://github.com/paritytech/polkadot-sdk/pull/3607)
      exposed the necessary components to be able to estimate XCM fees
      correctly, however, that was not the full story.
      The `XcmPaymentApi` works for estimating fees only if you know the
      specific XCM you want to execute or send.
      This is necessary but most UIs want to estimate the fees for extrinsics,
      they don't necessarily know the XCM program that's executed by them.
      
      # Main addition
      
      A new runtime API is introduced, the `XcmDryRunApi`, that given an
      extrinsic, or an XCM program, returns its effects:
      - Execution result
      - Local XCM (in the case of an extrinsic)
      - Forwarded XCMs
      - List of events
      
      This API can be used on its own for dry-running purposes, for
      double-checking or testing, but it mainly shines when used in
      conjunction with the `XcmPaymentApi`.
      UIs can use these two APIs to estimate transfers.
      
      # How it works
      
      New tests are added to exemplify how to incorporate both APIs.
      There's a mock test just to make sure everything works under
      `xcm-fee-payment-runtime-api`.
      There's a real-world test using Westend and AssetHubWestend under
      `cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/xcm_fee_estimation.rs`.
      Added both a test for a simple teleport between chains and a reserve
      transfer asset between two parachains going through a reserve.
      
      The steps to follow:
      - Use `XcmDryRunApi::dry_run_extrinsic` to get local XCM program and
      forwarded messages
      - For each forwarded message
      - Use `XcmPaymentApi::query_delivery_fee` LOCALLY to get the delivery
      fees
      - Use `XcmPaymentApi::query_xcm_weight` ON THE DESTINATION to get the
      remote execution weight
      - (optional) Use `XcmPaymentApi::query_acceptable_payment_assets` ON THE
      DESTINATION to know on which assets the execution fees can be paid
      - Use `XcmPaymentApi::query_weight_to_asset_fee` ON THE DESTINATION to
      convert weight to the actual remote execution fees
      - Use `XcmDryRunApi::dry_run_xcm` ON THE DESTINATION to know if a new
      message will be forwarded, if so, continue
      
      # Dear reviewer
      
      The changes in this PR are grouped as follows, and in order of
      importance:
      - Addition of new runtime API
      - Definition, mock and simple tests:
      polkadot/xcm/xcm-fee-payment-runtime-api/*
      - Implemented on Westend, Asset Hub Westend and Penpal, will implement
      on every runtime in a following PR
      - Addition of a new config item to the XCM executor for recording xcms
      about to be executed
        - Definition: polkadot/xcm/xcm-executor/*
        - Implementation: polkadot/xcm/pallet-xcm/*
      - had to update all runtime xcm_config.rs files with `type XcmRecorder =
      XcmPallet;`
      - Addition of a new trait for inspecting the messages in queues
        - Definition: polkadot/xcm/xcm-builder/src/routing.rs
        - Implemented it on all routers:
          - ChildParachainRouter: polkadot/runtime/common/src/xcm_sender.rs
      - ParentAsUmp: cumulus/primitives/utility/src/lib.rs (piggybacked on
      implementation in cumulus/pallets/parachain-system/src/lib.rs)
          - XcmpQueue: cumulus/pallets/xcmp-queue/src/lib.rs
          - Bridge: bridges/modules/xcm-bridge-hub-router/src/lib.rs
      - More complicated and useful tests:
      -
      cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/xcm_fee_estimation.rs
      
      ## Next steps
      
      With this PR, Westend, AssetHubWestend, Rococo and AssetHubRococo have
      the new API.
      UIs can test on these runtimes to create better experiences around
      cross-chain operations.
      
      Next:
      - Add XcmDryRunApi to all system parachains
      - Integrate xcm fee estimation in all emulated tests
      - Get this on the fellowship runtimes
      
      ---------
      
      Co-authored-by: default avatarAdrian Catangiu <adrian@parity.io>
  2. May 07, 2024
    • Branislav Kontur's avatar
      Generate XCM weights for coretimes (#4396) · c91c13b9
      Branislav Kontur authored
      Addressing comment:
      https://github.com/paritytech/polkadot-sdk/pull/3455#issuecomment-2094829076
      
      ---------
      
      Co-authored-by: command-bot <>
    • Derek Colley's avatar
    • Tsvetomir Dimitrov's avatar
      Update prdoc for 2226 (#4401) · b6dcd1b6
      Tsvetomir Dimitrov authored
      
      Mention that offenders are no longer chilled and suggest node operators
      and nominators to monitor their nodes/nominees closely.
      
      ---------
      
      Co-authored-by: default avatarMaciej <maciej.zyszkiewicz@parity.io>
    • Eugen Snitko's avatar
      Code coverage preparations (#4387) · 1c8595ad
      Eugen Snitko authored
      Added manual jobs for code coverage (triggered via `codecov-start` job):
       - **codecov-start** - initialize Codecov report for commit/pr
      - **test-linux-stable-codecov** - perform `nextest run` and upload
      coverage data parts
      - **codecov-finish** - finalize uploading of data parts and generate
      Codecov report
      
      Coverage requires code to be built with `-C instrument-coverage` which
      causes build errors (e .g. ```error[E0275]: overflow evaluating the
      requirement `<mock::Test as pallet::Config>::KeyOwnerProof == _\` ```,
      seems like related to
      [2641](https://github.com/paritytech/polkadot-sdk/issues/2641)) and
      unstable tests behavior
      ([example](https://gitlab.parity.io/parity/mirrors/polkadot-sdk/-/jobs/6004731)).
      This is where we'll nee the developers assistance
      
      closing [[polkadot-sdk] Add code coverage
      #902](https://github.com/paritytech/ci_cd/issues/902)
    • Dónal Murray's avatar
      Add Kusama People Chain genesis chainspec (#4394) · 930b0462
      Dónal Murray authored
      Generated with the script from
      https://github.com/paritytech/polkadot-sdk/pull/2931
      
      Edit: previously linked to a very similar PR
    • jimdssd's avatar
      chore: fix typos (#4395) · 29c8130b
      jimdssd authored
    • Branislav Kontur's avatar
      Add support for versioned notification for HRMP pallet (#4281) · b709dccd
      Branislav Kontur authored
      
      Closes: https://github.com/paritytech/polkadot-sdk/issues/4003 (please
      see for the problem description)
      
      ## TODO
      - [x] add more tests covering `WrapVersion` corner cases (e.g. para has
      lower version, ...)
      - [x] regenerate benchmarks `runtime_parachains::hrmp` (fix for Rococo
      is here: https://github.com/paritytech/polkadot-sdk/pull/4332)
      
      ## Questions / possible improvements
      - [ ] A `WrapVersion` implementation for `pallet_xcm` initiates version
      discovery with
      [note_unknown_version](https://github.com/paritytech/polkadot-sdk/blob/master/polkadot/xcm/pallet-xcm/src/lib.rs#L2527C5-L2527C25),
      there is possibility to avoid this overhead in this HRMP case to create
      new `WrapVersion` adapter for `pallet_xcm` which would not use
      `note_unknown_version`. Is it worth to do it or not?
      - [ ] There's a possibility to decouple XCM functionality from the HRMP
      pallet, allowing any relay chain to generate its own notifications. This
      approach wouldn't restrict notifications solely to the XCM. However,
      it's uncertain whether it's worthwhile or desirable to do so? It means
      making HRMP pallet more generic. E.g. hiding HRMP notifications behind
      some trait:
      	```
      	trait HrmpNotifications {
      
      		fn on_channel_open_request(
      			sender: ParaId,
      			proposed_max_capacity: u32,
      			proposed_max_message_size: u32) -> primitives::DownwardMessage;
      
      fn on_channel_accepted(recipient: ParaId) ->
      primitives::DownwardMessage;
      
      fn on_channel_closing(initiator: ParaId, sender: ParaId, recipient:
      ParaId) -> primitives::DownwardMessage;
      	}
      	```
      and then we could have whatever adapter, `impl HrmpNotifications for
      VersionedXcmHrmpNotifications {...}`,
      	```
      	impl parachains_hrmp::Config for Runtime {
      	..
      		type HrmpNotifications = VersionedXcmHrmpNotifications;
      	..
      	}
      	```
      
      ---------
      
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
  3. May 06, 2024
    • Egor_P's avatar
      Improve Create release draft workflow + templates for the free notes and... · e434176e
      Egor_P authored
      Improve Create release draft workflow + templates for the free notes and docker images sections in the notes (#4371)
      
      This PR has the following changes:
      
      - New templates for the free notes and docker images sections in the
      release notes. There is going to be a section for the manual additions
      to the release notes + a section with the links to the docker images for
      `polkadot` and `polkadot-parachain` binaries at the end of the release
      draft.
      - Fix for matrix section in the Create release draft flow (adds the
      release environment variable)
      - Reduction of the message which is posted to the announcement chats, as
      the current one with the full release notes text is too big.
    • Jun Jiang's avatar
      Upgrade a few deps (#4381) · 6e3059a8
      Jun Jiang authored
      Split from #4374
      
      This PR helps to reduce dependencies and align versions, which would
      help to move them to workspace dep
    • gupnik's avatar
      Introduces `TypeWithDefault<T, D: Get<T>>` (#4034) · 73c89d30
      gupnik authored
      
      Needed for: https://github.com/polkadot-fellows/runtimes/issues/248
      
      This PR introduces a new type `TypeWithDefault<T, D: Get<T>>` to be able
      to provide a custom default for any type. This can, then, be used to
      provide the nonce type that returns the current block number as the
      default, to avoid replay of immortal transactions.
      
      ---------
      
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
  4. May 04, 2024
  5. May 03, 2024
    • Lulu's avatar
      Add validate field to prdoc (#4368) · f45847b8
      Lulu authored
    • cheme's avatar
    • Kris Bitney's avatar
      Fix: dust unbonded for zero existential deposit (#4364) · 51986233
      Kris Bitney authored
      When a staker unbonds and withdraws, it is possible that their stash
      will contain less currency than the existential deposit. If that
      happens, their stash is reaped. But if the existential deposit is zero,
      the reap is not triggered. This PR adjusts `pallet_staking` to reap a
      stash in the special case that the stash value is zero and the
      existential deposit is zero.
      
      This change is important for blockchains built on substrate that require
      an existential deposit of zero, becuase it conserves valued storage
      space.
      
      There are two places in which ledgers are checked to determine if their
      value is less than the existential deposit and they should be reaped: in
      the methods `do_withdraw_unbonded` and `reap_stash`. When the check is
      made, the condition `ledger_total == 0` is also checked. If
      `ledger_total` is zero, then it must be below any existential deposit
      greater than zero and equal to an existential deposit of 0.
      
      I added a new test for each method to confirm the change behaves as
      expected.
      
      Closes https://github.com/paritytech/polkadot-sdk/issues/4340
      
      ---------
      
      Co-authored-by: command-bot <>
    • Svyatoslav Nikolsky's avatar
      Bridge: added subcommand to relay single parachain header (#4365) · 1680977e
      Svyatoslav Nikolsky authored
      Related to
      https://github.com/paritytech/parity-bridges-common/issues/2962
      Relay companion:
      https://github.com/paritytech/parity-bridges-common/pull/2978
      
      Example usage:
      ```
      ./target/release/substrate-relay relay-parachain-head rococo-to-bridge-hub-westend \
          --source-host localhost --source-port 9942 \
          --target-host localhost --target-port 8945 --target-signer //Alice \
          --at-relay-block 61
      ```
    • Svyatoslav Nikolsky's avatar
      Bridge: fix zombienet tests (#4367) · 87128178
      Svyatoslav Nikolsky authored
      Due to recent bump of Rococo/Westend versions + the fact that
      https://github.com/paritytech/parity-bridges-common/pull/2894 has
      finally reached this repo, tests now fail, because we've started
      checking all client versions (even source) unless we specify
      `--source-version-mode Auto` in CLI arguments. This looks like an
      overkill, but all those version checks will be fixed by
      https://github.com/paritytech/polkadot-sdk/pull/4256, so now it makes
      sense just to add this CLI option. We also need to propagate it to
      running relays eventually.
    • Alexander Samusev's avatar
      [WIP][CI] Add more GHA jobs (#4270) · ad72cd8d
      Alexander Samusev authored
      cc https://github.com/paritytech/ci_cd/issues/939
  6. May 02, 2024
  7. May 01, 2024
    • Branislav Kontur's avatar
      HRMP - set `DefaultChannelSizeAndCapacityWithSystem` with dynamic values... · e5a93fbc
      Branislav Kontur authored
      HRMP - set `DefaultChannelSizeAndCapacityWithSystem` with dynamic values according to the `ActiveConfig` (#4332)
      
      ## Summary
      This PR enhances the capability to set
      `DefaultChannelSizeAndCapacityWithSystem` for HRMP. Currently, all
      testnets (Rococo, Westend) have a hard-coded value set as 'half of the
      maximum' determined by the live `ActiveConfig`. While this approach
      appears satisfactory, potential issues could arise if the live
      `ActiveConfig` are adjusted below these hard-coded values, necessitating
      a new runtime release with updated values. Additionally, hard-coded
      values have consequences, such as Rococo's benchmarks not functioning:
      https://gitlab.parity.io/parity/mirrors/polkadot-sdk/-/jobs/6082656.
      
      ## Solution
      The proposed solution here is to utilize
      `ActiveConfigHrmpChannelSizeAndCapacityRatio`, which reads the current
      `ActiveConfig` and calculates `DefaultChannelSizeAndCapacityWithSystem`,
      for example, "half of the maximum" based on live data. This way,
      whenever `ActiveConfig` is modified,
      `ActiveConfigHrmpChannelSizeAndCapacityRatio` automatically returns
      adjusted values with the appropriate ratio. Thus, manual adjustments and
      new runtime releases become unnecessary.
      
      
      Relates to a comment/discussion:
      https://github.com/paritytech/polkadot-sdk/pull/3721/files#r1541001420
      Relates to a comment/discussion:
      https://github.com/paritytech/polkadot-sdk/pull/3721/files#r1549291588
      
      ---------
      
      Co-authored-by: command-bot <>
    • Maciej's avatar
      Statement Distribution Per Peer Rate Limit (#3444) · 6d392c7e
      Maciej authored
      - [x] Drop requests from a PeerID that is already being served by us.
      - [x] Don't sent requests to a PeerID if we already are requesting
      something from them at that moment (prioritise other requests or wait).
      - [x] Tests
      - [ ] ~~Add a small rep update for unsolicited requests (same peer
      request)~~ not included in original PR due to potential issues with
      nodes slowly updating
      - [x] Add a metric to track the amount of dropped requests due to peer
      rate limiting
      - [x] Add a metric to track how many time a node reaches the max
      parallel requests limit in v2+
      
      Helps with but does not close yet:
      https://github.com/paritytech-secops/srlabs_findings/issues/303
  8. Apr 30, 2024
  9. Apr 29, 2024
    • Shawn Tabrizi's avatar
      Refactor XCM Simulator Example (#4220) · 4875ea11
      Shawn Tabrizi authored
      
      This PR does a "developer experience" refactor of the XCM Simulator
      Example.
      
      I was looking for existing code / documentation where developers could
      better learn about working with and configuring XCM.
      
      The XCM Simulator was a natural starting point due to the fact that it
      can emulate end to end XCM scenarios, without needing to spawn multiple
      real chains.
      
      However, the XCM Simulator Example was just 3 giant files with a ton of
      configurations, runtime, pallets, and tests mashed together.
      
      This PR breaks down the XCM Simulator Example in a way that I believe is
      more approachable by a new developer who is looking to navigate the
      various components of the end to end example, and modify it themselves.
      
      The basic structure is:
      
      - xcm simulator example
          - lib (tries to only use the xcm simulator macros)
          - tests
          - relay-chain
              - mod (basic runtime that developers should be familiar with)
              - xcm-config
                  - mod (contains the `XcmConfig` type
                  - various files for each custom configuration  
          - parachain
              - mock_msg_queue (custom pallet for simulator example)
              - mod (basic runtime that developers should be familiar with)
              - xcm-config
                  - mod (contains the `XcmConfig` type
                  - various files for each custom configuration
      
      I would like to add more documentation to this too, but I think this is
      a first step to be accepted which will affect how documentation is added
      to the example
      
      ---------
      
      Co-authored-by: default avatarFrancisco Aguirre <franciscoaguirreperez@gmail.com>
      Co-authored-by: default avatarKian Paimani <5588131+kianenigma@users.noreply.github.com>
    • Ankan's avatar
      [Staking] Not allow reap stash for virtual stakers (#4311) · 0031d49d
      Ankan authored
      Related to https://github.com/paritytech/polkadot-sdk/pull/3905.
      
      Since virtual stakers does not have a real balance, they should not be
      allowed to be reaped.
      
      The proper reaping for agents slashed will be done in a separate PR.
    • Tin Chung's avatar
      Remove hard-coded indices from pallet-xcm tests (#4248) · f34d8e3c
      Tin Chung authored
      
      # ISSUE
      - Link to issue: https://github.com/paritytech/polkadot-sdk/issues/4237
      
      # DESCRIPTION
      Remove all ModuleError with hard-coded indices to pallet Error. For
      example:
      ```rs
      Err(DispatchError::Module(ModuleError {
      	index: 4,
      	error: [2, 0, 0, 0],
      	message: Some("Filtered")
      }))
      ```
      To 
      ```rs
      let expected_result = Err(crate::Error::<Test>::Filtered.into());
      assert_eq!(result, expected_result);
      ```
      # TEST OUTCOME
      ```
      test result: ok. 74 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
      ```
      
      ---------
      
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
  10. Apr 28, 2024
    • dependabot[bot]'s avatar
      Bump snow from 0.9.3 to 0.9.6 (#4061) · 92a348f5
      dependabot[bot] authored
      
      Bumps [snow](https://github.com/mcginty/snow) from 0.9.3 to 0.9.6.
      <details>
      <summary>Release notes</summary>
      <p><em>Sourced from <a
      href="https://github.com/mcginty/snow/releases">snow's
      releases</a>.</em></p>
      <blockquote>
      <h2>v0.9.6</h2>
      <ul>
      <li>Validate invalid PSK positions when building a Noise protocol.</li>
      <li>Raise errors in various typos/mistakes in Noise patterns when
      parsing.</li>
      <li>Deprecate the <code>sodiumoxide</code> backend, as that crate is no
      longer maintained. We may eventually migrate it to a maintaned version
      of the crate, but for now it's best to warn users.</li>
      <li>Set a hard limit in <code>read_message()</code> in transport mode to
      65535 to be fully compliant with the Noise specification.</li>
      </ul>
      <p><strong>Full Changelog</strong>: <a
      href="https://github.com/mcginty/snow/compare/v0.9.5...v0.9.6">https://github.com/mcginty/snow/compare/v0.9.5...v0.9.6</a></p>
      <h2>v0.9.5</h2>
      <p>This is a security release that fixes a logic flaw in decryption in
      <code>TransportState</code> (i.e. the stateful one), where the nonce
      could increase even when decryption failed, which can cause a desync
      between the sender and receiver, opening this up as a denial of service
      vector if the attacker has the ability to inject packets in the channel
      Noise is talking over.</p>
      <p>More details can be found in the advisory: <a
      href="https://github.com/mcginty/snow/security/advisories/GHSA-7g9j-g5jg-3vv3">https://github.com/mcginty/snow/security/advisories/GHSA-7g9j-g5jg-3vv3</a></p>
      <p>All users are encouraged to update.</p>
      <h2>v0.9.4</h2>
      <p>This is a dependency version bump release because a couple of
      important dependencies released new versions that needed a
      <code>Cargo.toml</code> bump:</p>
      <ul>
      <li><code>ring</code> 0.17</li>
      <li><code>pqcrypto-kyber</code> 0.8</li>
      <li><code>aes-gcm</code> 0.10</li>
      <li><code>chacha20poly1305</code> 0.10</li>
      </ul>
      </blockquote>
      </details>
      <details>
      <summary>Commits</summary>
      <ul>
      <li><a
      href="https://github.com/mcginty/snow/commit/a4be73faa042c5967f39662aa66919f774831a9a"><code>a4be73f</code></a>
      meta: v0.9.6 release</li>
      <li><a
      href="https://github.com/mcginty/snow/commit/9e53dcf5bbea869b5e3e9ed26866d683906bc848"><code>9e53dcf</code></a>
      TransportState: limit read_message size to 65535</li>
      <li><a
      href="https://github.com/mcginty/snow/commit/faf05609e19f4106cd47b78123415dfeb9330861"><code>faf0560</code></a>
      Deprecate sodiumoxide resolver</li>
      <li><a
      href="https://github.com/mcginty/snow/commit/308a24d23da13cb01a173f0ec23f140898801fb9"><code>308a24d</code></a>
      Add warnings about multiple calls to same method in Builder</li>
      <li><a
      href="https://github.com/mcginty/snow/commit/f280991ae408685d72e098545314f2be160e57f9"><code>f280991</code></a>
      Error when extraneous parameters are included in string to parse</li>
      <li><a
      href="https://github.com/mcginty/snow/commit/dbdcc4803aae6e5d9910163a7d52e0df8def4310"><code>dbdcc48</code></a>
      Error on duplicate modifiers in parameter string</li>
      <li><a
      href="https://github.com/mcginty/snow/commit/8b1a819c93ceae98f9ba0a1be192fa61fdec78c2"><code>8b1a819</code></a>
      Validate PSK index in pattern to avoid panic</li>
      <li><a
      href="https://github.com/mcginty/snow/commit/74e30cf591d6d89c8a1670ee713ecc4e9607e38f"><code>74e30cf</code></a>
      meta: v0.9.5 release</li>
      <li><a
      href="https://github.com/mcginty/snow/commit/12e8ae55547ae297d5f70599e5c884ea891303eb"><code>12e8ae5</code></a>
      Stateful nonce desync fix</li>
      <li><a
      href="https://github.com/mcginty/snow/commit/02c26b7551cb7e221792a9d3d3a94730e6a34e8a"><code>02c26b7</code></a>
      Remove clap from simple example</li>
      <li>Additional commits viewable in <a
      href="https://github.com/mcginty/snow/compare/v0.9.3...v0.9.6">compare
      view</a></li>
      </ul>
      </details>
      <br />
      
      
      [![Dependabot compatibility
      score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=snow&package-manager=cargo&previous-version=0.9.3&new-version=0.9.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
      
      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 this major version` will close this PR and stop
      Dependabot creating any more for this major version (unless you reopen
      the PR or upgrade to it yourself)
      - `@dependabot ignore this minor version` will close this PR and stop
      Dependabot creating any more for this minor version (unless you reopen
      the PR or upgrade to it yourself)
      - `@dependabot ignore this dependency` will close this PR and stop
      Dependabot creating any more for this dependency (unless you reopen the
      PR or upgrade to it yourself)
      You can disable automated security fix PRs for this repo from the
      [Security Alerts
      page](https://github.com/paritytech/polkadot-sdk/network/alerts).
      
      </details>
      
      Signed-off-by: default avatardependabot[bot] <support@github.com>
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>