Skip to content
Snippets Groups Projects
  1. Mar 17, 2025
  2. Mar 14, 2025
  3. Mar 13, 2025
    • PG Herveou's avatar
      [pallet-revive] precompiles 2->9 (#7810) · 4c74a109
      PG Herveou authored
      
      Add missing pre-compiles 02 -> 09
      
      [weights
      changes](https://weights.tasty.limo/compare?repo=polkadot-sdk&threshold=10&path_pattern=substrate%2Fframe%2F**%2Fsrc%2Fweights.rs%2Cpolkadot%2Fruntime%2F*%2Fsrc%2Fweights%2F**%2F*.rs%2Cpolkadot%2Fbridges%2Fmodules%2F*%2Fsrc%2Fweights.rs%2Ccumulus%2F**%2Fweights%2F*.rs%2Ccumulus%2F**%2Fweights%2Fxcm%2F*.rs%2Ccumulus%2F**%2Fsrc%2Fweights.rs&method=asymptotic&ignore_errors=true&unit=time&old=master&new=pg%2Fprecompiles02_09&pallet=revive)
      
      ---------
      
      Co-authored-by: default avatarcmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
      4c74a109
    • Francisco Aguirre's avatar
      Use non-native token to benchmark xcm on asset hub (#7893) · c4b8ec12
      Francisco Aguirre authored
      
      Asset Hub was using the native token for benchmarking xcm instructions.
      This is not the best since it's cheaper than using something in
      `pallet-assets` for example.
      Had to remove some restrictive checks from `pallet-xcm-benchmarks`.
      
      I'll bring back the checks with a better framework in the future that
      allows for handling multiple assets (`fungibles::*` traits).
      
      ---------
      
      Co-authored-by: default avatarcmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
      c4b8ec12
    • PG Herveou's avatar
      [pallet-revive] fixture as dev dep (#7844) · 8265c65f
      PG Herveou authored
      
      Update pallet-revive-fixtures so that it can build without looking up
      dependencies from the workspace
      
      ---------
      
      Co-authored-by: default avatarcmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
      8265c65f
    • Alexandru Vasile's avatar
      notifications/libp2p: Punish notification protocol misbehavior on outbound substreams (#7781) · aa67d2ae
      Alexandru Vasile authored
      
      This PR punishes behaviors that deviate from the notification spec. When
      a peer misbehaves by writing data on an unidirectional read stream, the
      peer is banned and disconnected immediately.
      
      In this PR:
      - The `NotificationOutError` is enriched with termination reason and
      made publically available for higher levels
      - The protocol misbehavior is propagated through the `CloseDesired`
      events
      - The network behavior of the protocol is responsible for banning the
      peer.
      - The peer is banned immediately and, as a result, the reputation system
      disconnects the malicious / misbehaving peer
      - Logs are enriched with protocol names
      
      Closes: https://github.com/paritytech/polkadot-sdk/issues/7722
      
      
      cc @paritytech/networking
      
      ---------
      
      Signed-off-by: default avatarAlexandru Vasile <alexandru.vasile@parity.io>
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      aa67d2ae
    • Matteo Muraca's avatar
      Remove `pallet::getter` usage from bridges/modules (#7120) · 66e3196a
      Matteo Muraca authored
      
      # Description
      
      Part of #3326 
      
      As per title, the `pallet:getter` usage has been removed from:
      - `pallet-bridge-beefy`
      - `pallet-bridge-grandpa`
      - `pallet-bridge-messages`
      - `pallet-bridge-relayers`
      - `pallet-xcm-bridge-hub-router`
      
      
      polkadot address: 12poSUQPtcF1HUPQGY3zZu2P8emuW9YnsPduA4XG3oCEfJVp
      
      ---------
      
      Co-authored-by: default avatarBranislav Kontur <bkontur@gmail.com>
      Co-authored-by: default avatarcmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
      66e3196a
    • PG Herveou's avatar
      [pallet-revive] Support blocktag in eth_getLogs RPC (#7879) · ab7c6080
      PG Herveou authored
      
      Support "latest" blocktag in ethGetLogs from_block and to_block
      parameters
      This is not in specs
      (https://github.com/ethereum/execution-apis/blob/main/src/schemas/filter.yaml#L17)
      
      but defined and used by 3rd parties and in some other reference docs 
      
      See 
      
      https://docs.metamask.io/services/reference/ethereum/json-rpc-methods/eth_getlogs/
      
      ---------
      
      Co-authored-by: default avatarcmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
      ab7c6080
    • ordian's avatar
      staking: add `manual_slash` extrinsic (#7805) · f8c90b2a
      ordian authored
      This PR adds a convenience extrinsic `manual_slash` for the governance
      to slash a validator manually.
      
      ## Changes
      
      * The `on_offence` implementation for the Staking pallet accepts a slice
      of `OffenceDetails` including the full validator exposure, however, it
      simply
      [ignores](https://github.com/paritytech/polkadot-sdk/blob/c8d33396
      
      /substrate/frame/staking/src/pallet/impls.rs#L1864)
      that part. I've extracted the functionality into an inherent
      `on_offence` method that takes `OffenceDetails` without the full
      exposure and this is called directly in `manual_slash`
      * `manual_slash` creates an offence for a validator with a given slash
      percentange
      
      ## Questions
      
      - [x] should `manual_slash` accept session instead of an era when the
      validator was in the active set? staking thinks in terms of eras and we
      can check out of bounds this way, which is why it was chosen for this
      implementation, but if there are arguments against, happy to change to
      session index
      - [X] should the accepted origin be something more than just root?
      Changed to `T::AdminOrigin` to align with `cancel_deferred_slash`
      - [X] should I adapt this PR also against
      https://github.com/paritytech/polkadot-sdk/pull/6996? looking at the
      changes, it should apply mostly without conflicts
      
      ---------
      
      Co-authored-by: default avatarTsvetomir Dimitrov <tsvetomir@parity.io>
      Co-authored-by: default avatarAnkan <10196091+Ank4n@users.noreply.github.com>
      f8c90b2a
  4. Mar 12, 2025
  5. Mar 11, 2025
    • Alexandru Vasile's avatar
      network: Make litep2p the default backend in Kusama (#7866) · bcc272a1
      Alexandru Vasile authored
      This PR makes the litep2p backend the default network backend in Kusama.
      
      We performed a gradual rollout in Kusama by asking validators to
      manually switch to litep2p. The rollout went smoothly, with 250
      validators running litep2p without issues. This PR represents the next
      step in testing the backend at scale.
      
      Thanks to everyone who contributed to making this happen! A special
      shoutout to the validators for their prompt support and cooperation :pray:
      
      While at it, the litep2p release is bumped to the latest 0.9.2, which
      downgrades a spamming log to debug.
      
      
      ### CLI Testing Done
      
      
      ```
      ### Kusama without network backend specified
      RUST_LOG=info ./target/release/polkadot --chain kusama --pruning=1000 --in-peers 50 --out-peers 50 --sync=warp --detailed-log-output
      2025-03-10 14:24:18.503  INFO main sub-libp2p: Running litep2p network backend
      
      ### Kusama with libp2p
      RUST_LOG=info ./target/release/polkadot --chain kusama --pruning=1000 --in-peers 50 --out...
      bcc272a1
    • PG Herveou's avatar
      [pallet-revive] Add support for eip1898 block notation (#7848) · fb98291e
      PG Herveou authored
      
      [pallet-revive] Add support for eip1898 block notation
      https://eips.ethereum.org/EIPS/eip-1898
      
      ---------
      
      Co-authored-by: default avatarcmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
      fb98291e
    • Serban Iorga's avatar
      Fix XCM decoding inconsistencies (#7856) · 2a239206
      Serban Iorga authored
      This PR includes:
      
      - deduplicating some XCM decoding logic
      - making use of `decode_with_depth_limit` consistently for
      `VersionedXcm`
      - some cleanup
      2a239206
    • Sebastian Kunert's avatar
      slot-based-collator: Allow multiple blocks per slot (#7569) · 8ddb0714
      Sebastian Kunert authored
      **Summary:** This PR enables authoring of multiple blocks in one AURA
      slot in the slot-based collator and stabilizes the slot-based collator.
      
      ## CLI Changes
      The flag `--experimental-use-slot-based` is now marked as deprecated. I
      opted to introduce `--authoring slot-based` instead of just removing the
      `experimental` prefix. By introducing the `authoring` variant, we get
      some future-proofing in case we want to introduce further options.
      
      ## Change Description
      With elastic-scaling, we are able to author multiple blocks with a
      single relay-chain parent. In the initial iteration, the interval
      between two blocks was determined by the `slot_duration` of the
      parachain. This PR introduces a more flexible model, where we try to
      author multiple blocks in a single slot if the runtime allows it.
      
      The block authoring loop is largely the same. The
      [`SlotTimer`](https://github.com/paritytech/polkadot-sdk/blob/f1935bd9/cumulus/client/consensus/aura/src/collators/slot_based/slot_timer.rs#L48-L48)
      now lives in a separate module and is updated with the last seen [core
      count](https://github.com/paritytech/polkadot-sdk/blob/f1935bd9
      
      /cumulus/client/consensus/aura/src/collators/slot_based/block_builder_task.rs#L231-L231).
      It will then trigger rounds in the block-building loop based on the core
      count.
      
      This allows some flexibility where elastic-scaling chains can run on a
      single core in quiet times. Previously, running on 1 core with a 3-core
      elastic-scaling chain would result in authors getting skipped because
      the `slot_duration` was too low.
      
      ## Parameter Considerations
      The core logic does not change, so there are a few things to consider:
      - The `ConsensusHook` implementation still determines how many blocks
      are allowed per relay-chain block. So if you add arbitrary cores to an
      async-backing, 6-second parachain, `can_build_upon` in the runtime will
      deny block-building of additional blocks.
      - The `MINIMUM_PERIOD` in the runtime needs to be configured to allow
      enough blocks in the slot. A "classic" configuration of
      `SLOT_DURATION/2` will lead to slot mismatches when running with 3
      cores.
      - We fetch available cores at least once every relay chain block. So if
      a parachain runs with a 12-second slot duration and 1 fixed core, we
      would still author 2 blocks if the parachain runtime allows it.
      
      ---------
      
      Co-authored-by: default avatarcmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
      Co-authored-by: default avatarMichal Kucharczyk <1728078+michalkucharczyk@users.noreply.github.com>
      Co-authored-by: default avatarJavier Viola <javier@parity.io>
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      8ddb0714
  6. Mar 10, 2025
  7. Mar 07, 2025
    • girazoki's avatar
      Make pallet-transaction-payment-benchmark work with ed 0 (#7820) · 6b980646
      girazoki authored
      # Description
      
      Chains like moonbeam work with an ED deposit of 0 (insecure-ed-0) which
      is unsable with the current pallet-transaction-payment benchmark. This
      PR adds an if-else case in case the existential deposit found is 0.
      6b980646
    • Michal Kucharczyk's avatar
      `fatxpool`: improved handling of finality stalls (#7639) · 24a4b55e
      Michal Kucharczyk authored
      #### PR Description
      
      This pull request introduces measures to handle finality stalls by :
      - notifying outdated transactions with a
      [`FinalityTimeout`](https://github.com/paritytech/polkadot-sdk/blob/d821c84d/substrate/client/transaction-pool/api/src/lib.rs#L145-L147)
      event.
      - removing outdated views from the `view_store`
      
      An item is considered _outdated_ when the difference between its
      associated block and the current block exceeds a pre-defined threshold.
      
      #### Note for Reviewers
      The core logic is provided in the following small commits:
      - `ViewStore`: new method
      [`finality_stall_view_cleanup`](https://github.com/paritytech/polkadot-sdk/blob/d821c84d/substrate/client/transaction-pool/src/fork_aware_txpool/view_store.rs#L869-L903)
      for removing stale views was added: 64267000
      - `ForkAwareTransactionPool`: core logic for tracking finality stalls
      added here: 7b37ea6f. Entry point in
      [`...
      24a4b55e
    • Bastian Köcher's avatar
      `apply_authorized_upgrade`: Remote authorization if the version check fails (#7812) · 6ce9948e
      Bastian Köcher authored
      
      This pr ensures that we remove the `authorization` for a runtime upgrade
      if the version check failed. If that check is failing, it means that the
      runtime upgrade is invalid and the check will never succeed.
      
      Besides that the pr is doing some clean ups.
      
      ---------
      
      Co-authored-by: default avatarcmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
      6ce9948e
  8. Mar 06, 2025
    • thiolliere's avatar
      Improve metadata for `SkipCheckIfFeeless` (#7813) · 9dbcc0e4
      thiolliere authored
      
      If the inner transaction extension used inside `SkipCheckIfFeeless` are
      multiples then the metadata is not correct, it is now fixed.
      
      E.g. if the transaction extension is `SkipCheckIfFeeless::<Runtime,
      (Payment1, Payment2)>` then the metadata was wrong.
      
      ---------
      
      Co-authored-by: default avatarcmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      9dbcc0e4
    • Utkarsh Bhardwaj's avatar
      add poke_deposit extrinsic to pallet-proxy (#7801) · 4f7a9388
      Utkarsh Bhardwaj authored
      
      # Description
      
      * This PR adds a new extrinsic `poke_deposit` to `pallet-proxy`. This
      extrinsic will be used to re-adjust the deposits made in the pallet to
      create a proxy or to create an announcement.
      * Part of #5591 
      
      ## Review Notes
      
      * Added a new extrinsic `poke_deposit` in `pallet-proxy`.
      * This extrinsic checks and adjusts the deposits made for either
      creating a proxy or creating an announcement or both.
      * Added a new event `DepositPoked` to be emitted upon a successful call
      of the extrinsic.
      * Although the immediate use of the extrinsic will be to give back some
      of the deposit after the AH-migration, the extrinsic is written such
      that it can work if the deposit decreases or increases (both).
      * The call to the extrinsic would be `free` if an actual adjustment is
      made to the deposit for creating a proxy or to the deposit for creating
      an announcement or both and `paid` otherwise (when no deposit is
      changed).
      * Added a new enum `DepositKind` to differentiate between proxy deposit
      adjusted and announcement deposit adjusted when emitting events.
      * Added tests to test all scenarios.
      
      ## TO-DOs
      * [ ] Run CI cmd bot to benchmark
      
      ---------
      
      Co-authored-by: default avatarcmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
      4f7a9388
    • Andrii's avatar
      [XCM] Add generic location to account converter that also works with external... · d5bd15b2
      Andrii authored
      [XCM] Add generic location to account converter that also works with external ecosystems for bridge hubs (#7809)
      
      That's the continuation of
      [PR#7313](https://github.com/paritytech/polkadot-sdk/pull/7313)
      d5bd15b2
    • clangenb's avatar
      [glutton-westend] and add sudo key to genesis config (#7794) · a377caec
      clangenb authored
      
      I discovered in https://github.com/paritytech/polkadot-sdk/pull/7459,
      that the overhead benchmark is not working for glutton-westend, as the
      client can't send `system.remark` extrinsics. This was due to 2 issues:
      
      1. Alice was not set as sudo. Hence, the `CheckOnlySudoAccount` deemed
      the extrinsic as invalid.
      2. The `CheckNonce` TxExtension also marked the extrinsic as invalid, as
      the account doesn't exist (because glutton has no balances pallet).
      
      This PR fixes the 1.) for now. I wanted to simply remove the
      `CheckNonce` in the TxExtension to fix 2., but it turns out that this is
      not possible, as the tx-pool needs the nonce tag to identify the
      transaction. https://github.com/paritytech/polkadot-sdk/pull/6884 will
      fix sending extrinsics on glutton.
      
      ---------
      
      Co-authored-by: default avatarcmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      Co-authored-by: default avatars0me0ne-unkn0wn <48632512+s0me0ne-unkn0wn@users.noreply.github.com>
      a377caec
    • Dónal Murray's avatar
      Add westend system chains as a trusted teleporters (#7787) · 6893fb22
      Dónal Murray authored
      
      Asset Hub Next has been deployed on Westend as parachain 1100, but it's
      not yet a trusted teleporter.
      This minimal PR adds it in stable2412 so that it can be deployed right
      away without waiting for the rest of the release to be finalised and
      deployed.
      
      ---------
      
      Co-authored-by: default avatarcmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
      6893fb22
    • Raymond Cheung's avatar
      Ensure Logs Are Captured for Assertions and Printed During Tests (#7769) · ce5f89c6
      Raymond Cheung authored
      This PR enhances **`test_log_capture`**, ensuring logs are **captured
      for assertions** and **printed to the console** during test execution.
      
      ## **Motivation**  
      
      - Partially addresses #6119 and #6125, to improves developer **tracing
      and debugging** in XCM-related tests.
      - Builds on #7594, improving **log visibility** while maintaining test
      **log capture capabilities**.
      - While writing tests for #7234, I noticed this function was missing.
      This PR adds it to streamline log handling in unit tests.
      
      ## **Changes**  
      
      - Ensures logs up to `TRACE` level are **captured** (for assertions) and
      **printed** (for visibility).
      - Refines documentation to clearly specify **when to use** each
      function.
      - **Removes ANSI escape codes** from captured logs to ensure clean,
      readable assertions.
      
      ## **When to Use?**  
      
      | Usage | Captures Logs? | Prints Logs? | Example |
      
      |----------------------------------------------|-----------------|--------------|-----------------------------------------------|
      | `init_log_capture(LevelFilter::INFO, false)` | :white_check_mark: Yes | :x: No | Capture
      logs for assertions without printing. |
      | `init_log_capture(LevelFilter::TRACE, true)` | :white_check_mark: Yes | :white_check_mark: Yes | Capture
      logs and print them in test output. |
      | `sp_tracing::init_for_tests()` | :x: No | :white_check_mark:
      
       Yes | Print logs to the
      console without capturing. |
      
      ---------
      
      Co-authored-by: default avatarcmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
      ce5f89c6
    • Andrei Sandu's avatar
      Dynamic uncompressed code size limit (#7760) · f02134c8
      Andrei Sandu authored
      
      Fixes https://github.com/paritytech/polkadot-sdk/issues/7664
      
      The discussion in https://github.com/paritytech/polkadot-sdk/pull/7710
      should provide the context for why this solution was picked.
      
      ---------
      
      Signed-off-by: default avatarAndrei Sandu <andrei-mihail@parity.io>
      Co-authored-by: default avatarcmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
      f02134c8
    • PG Herveou's avatar
      [pallet-revive] eth-rpc-tester quick fixes (#7818) · cbc0faa4
      PG Herveou authored
      
      Small tweaks to the eth-rpc-tester bin
      
      ---------
      
      Co-authored-by: default avatarcmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
      cbc0faa4
  9. Mar 05, 2025
  10. Mar 04, 2025
  11. Mar 03, 2025
    • polka.dom's avatar
      Add Serialize & Deserialize to umbrella crate derive module (#7764) · 9d9ae348
      polka.dom authored
      
      When working with storage types that are to be set in the genesis block,
      deriving serde::Serialize & serde::Deserialize is necessary (to my
      knowledge). This PR introduces Serialize and Deserialize into the
      umbrella crate derive (and indirectly prelude) module, allowing for
      similar access as the other storage value derives.
      
      ---------
      
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      9d9ae348
    • Andrei Eres's avatar
      Fix unspecified Hash in NodeBlock (#7756) · df99fb94
      Andrei Eres authored
      # Description
      
      Working with https://github.com/paritytech/polkadot-sdk/pull/7556 I
      encountered an internal compiler error on polkadot-omni-node-lib: see
      bellow or [in
      CI](https://github.com/paritytech/polkadot-sdk/actions/runs/13521547633/job/37781894640).
      
      ```
      error: internal compiler error: compiler/rustc_traits/src/codegen.rs:45:13: Encountered error `SignatureMismatch(SignatureMismatchData { found_trait_ref: <{closure@sp_state_machine::trie_backend_essence::TrieBackendEssence<sc_service::Arc<dyn sp_state_machine::trie_backend_essence::Storage<<<<NodeSpec as common::spec::BaseNodeSpec>::Block as common::NodeBlock>::BoundedHeader as sp_runtime::traits::Header>::Hashing>>, <<<NodeSpec as common::spec::BaseNodeSpec>::Block as common::NodeBlock>::BoundedHeader as sp_runtime::traits::Header>::Hashing, sp_trie::cache::LocalTrieCache<<<<NodeSpec as common::spec::BaseNodeSpec>::Block as common::NodeBlock>::BoundedHeader as sp_runtime::traits::Header>::Hashing>, sp_trie::recorder::Recorder<<<<NodeSpec as common::spec::BaseNodeSpec>::Block as common::NodeBlock>::BoundedHeader as sp_runtime::traits::Header>::Hashing>>::storage::{closure#1}} as std::ops::FnOnce<(std::option::Option<&mut dyn trie_db::TrieRecorder<sp_core::H256>>, std::option::Option<&mut dyn trie_db::TrieCache<sp_trie::node_codec::NodeCodec<<<<NodeSpec as common::spec::BaseNodeSpec>::Block as common::NodeBlock>::BoundedHeader as sp_runtime::traits::Header>::Hashing>>>)>>, expected_trait_ref: <{closure@sp_state_machine::trie_backend_essence::TrieBackendEssence<sc_service::Arc<dyn sp_state_machine::trie_backend_essence::Storage<<<<NodeSpec as common::spec::BaseNodeSpec>::Block as common::NodeBlock>::BoundedHeader as sp_runtime::traits::Header>::Hashing>>, <<<NodeSpec as common::spec::BaseNodeSpec>::Block as common::NodeBlock>::BoundedHeader as sp_runtime::traits::Header>::Hashing, sp_trie::cache::LocalTrieCache<<<<NodeSpec as common::spec::BaseNodeSpec>::Block as common::NodeBlock>::BoundedHeader as sp_runtime::traits::Header>::Hashing>, sp_trie::recorder::Recorder<<<<NodeSpec as common::spec::BaseNodeSpec>::Block as common::NodeBlock>::BoundedHeader as sp_runtime::traits::Header>::Hashing>>::storage::{closure#1}} as std::ops::FnOnce<(std::option::Option<&mut dyn trie_db::TrieRecorder<<<<NodeSpec as common::spec::BaseNodeSpec>::Block as common::NodeBlock>::BoundedHeader as sp_runtime::traits::Header>::Hash>>, std::option::Option<&mut dyn trie_db::TrieCache<sp_trie::node_codec::NodeCodec<<<<NodeSpec as common::spec::BaseNodeSpec>::Block as common::NodeBlock>::BoundedHeader as sp_runtime::traits::Header>::Hashing>>>)>>, terr: Sorts(ExpectedFound { expected: Alias(Projection, AliasTy { args: [Alias(Projection, AliasTy { args: [Alias(Projection, AliasTy { args: [NodeSpec/#0], def_id: DefId(0:410 ~ polkadot_omni_node_lib[7cce]::common::spec::BaseNodeSpec::Block), .. })], def_id: DefId(0:507 ~ polkadot_omni_node_lib[7cce]::common::NodeBlock::BoundedHeader), .. })], def_id: DefId(229:1706 ~ sp_runtime[5da1]::traits::Header::Hash), .. }), found: sp_core::H256 }) })` selecting `<{closure@sp_state_machine::trie_backend_essence::TrieBackendEssence<sc_service::Arc<dyn sp_state_machine::trie_backend_essence::Storage<<<<NodeSpec as common::spec::BaseNodeSpec>::Block as common::NodeBlock>::BoundedHeader as sp_runtime::traits::Header>::Hashing>>, <<<NodeSpec as common::spec::BaseNodeSpec>::Block as common::NodeBlock>::BoundedHeader as sp_runtime::traits::Header>::Hashing, sp_trie::cache::LocalTrieCache<<<<NodeSpec as common::spec::BaseNodeSpec>::Block as common::NodeBlock>::BoundedHeader as sp_runtime::traits::Header>::Hashing>, sp_trie::recorder::Recorder<<<<NodeSpec as common::spec::BaseNodeSpec>::Block as common::NodeBlock>::BoundedHeader as sp_runtime::traits::Header>::Hashing>>::storage::{closure#1}} as std::ops::FnOnce<(std::option::Option<&mut dyn trie_db::TrieRecorder<<<<NodeSpec as common::spec::BaseNodeSpec>::Block as common::NodeBlock>::BoundedHeader as sp_runtime::traits::Header>::Hash>>, std::option::Option<&mut dyn trie_db::TrieCache<sp_trie::node_codec::NodeCodec<<<<NodeSpec as common::spec::BaseNodeSpec>::Block as common::NodeBlock>::BoundedHeader as sp_runtime::traits::Header>::Hashing>>>)>>` during codegen
      ```
      
      Trying to parse the error I found that TrieRecorder was not supposed to
      work with H256:
      - Expected: `&mut dyn TrieRecorder<<<<NodeSpec as
      common::spec::BaseNodeSpec>::Block as common::NodeBlock>::BoundedHeader
      as Header>::Hash>>`
      - Found: `&mut dyn TrieRecorder<sp_core::H256>>`
      
      The error happened because I added to
      `new_full_parts_with_genesis_builder` interaction with Trie Cache which
      eventually uses `TrieRecorder<H256>`. Here is the path:
      - In polkadot-omni-node-lib trait BaseNodeSpec defined with Block as
      `NodeBlock: BlockT<Hash = DbHash>`, where DbHash is H256.
      - BaseNodeSpec calls [new_full_parts_record_import::<Self::Block, …
      >](https://github.com/paritytech/polkadot-sdk/blob/75726c65/cumulus/polkadot-omni-node/lib/src/common/spec.rs#L184-L189)
      and eventually it goes to
      [new_full_parts_with_genesis_builder](https://github.com/paritytech/polkadot-sdk/blob/08b30246
      
      /substrate/client/service/src/builder.rs#L195).
      - In `new_full_parts_with_genesis_builder` we accessed storage,
      initiating TrieRecorder with H256 what never happened before.
      
      I believe the compiler found a mismatch checking types for TrieRecorder:
      NodeBlock inherits from the trait `Block<Hash = DbHash>`, but it uses
      BoundedHeader, which inherits from the trait Header with the default
      Hash.
      
      ---------
      
      Co-authored-by: default avatarcmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
      df99fb94