Skip to content
  1. Nov 17, 2023
  2. Nov 16, 2023
  3. Nov 15, 2023
  4. Nov 14, 2023
    • PG Herveou's avatar
      Contracts expose pallet-xcm (#1248) · f517900a
      PG Herveou authored
      
      
      This PR introduces:
      - XCM  host functions `xcm_send`, `xcm_execute`
      - An Xcm trait into the config. that proxy these functions to to
      `pallet_xcm`, or disable their usage by using `()`.
      - A mock_network and xcm_test files to test the newly added xcm-related
      functions.
      
      ---------
      
      Co-authored-by: default avatarKeith Yeung <[email protected]>
      Co-authored-by: default avatarSasha Gryaznov <[email protected]>
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarFrancisco Aguirre <[email protected]>
      Co-authored-by: default avatarAlexander Theißen <[email protected]>
      f517900a
    • Alin Dima's avatar
      add NodeFeatures field to HostConfiguration and runtime API (#2177) · fc12f435
      Alin Dima authored
      Adds a `NodeFeatures` bitfield value to the runtime `HostConfiguration`,
      with the purpose of coordinating the enabling of node-side features,
      such as: https://github.com/paritytech/polkadot-sdk/issues/628 and
      https://github.com/paritytech/polkadot-sdk/issues/598.
      These are features that require all validators enable them at the same
      time, assuming all/most nodes have upgraded their node versions.
      
      This PR doesn't add any feature yet. These are coming in future PRs.
      
      Also adds a runtime API for querying the state of the client features
      and an extrinsic for setting/unsetting a feature by its index in the bitfield.
      
      Note: originally part of:
      https://github.com/paritytech/polkadot-sdk/pull/1644, but posted as
      standalone to be reused by other PRs until the initial PR is merged
      fc12f435
    • PG Herveou's avatar
      Contracts: Bump contracts rococo (#2286) · 1cd38c2c
      PG Herveou authored
      1cd38c2c
    • georgepisaltu's avatar
      Add simple collator election mechanism (#1340) · 7d735fc8
      georgepisaltu authored
      
      
      Fixes https://github.com/paritytech/polkadot-sdk/issues/106
      
      Port of cumulus PR https://github.com/paritytech/cumulus/pull/2960
      
      This PR adds the ability to bid for collator slots even after the max
      number of collators have already registered. This eliminates the first
      come, first served mechanism that was in place before.
      
      Key changes:
      - added `update_bond` extrinsic to allow registered candidates to adjust
      their bonds in order to dynamically control their bids
      - added `take_candidate_slot` extrinsic to try to replace an already
      existing candidate by bidding more than them
      - candidates are now kept in a sorted list in the pallet storage, where
      the top `DesiredCandidates` out of `MaxCandidates` candidates in the
      list will be selected by the session pallet as collators
      - if the candidacy bond is increased through a `set_candidacy_bond`
      call, candidates which don't meet the new bond requirements are kicked
      
      
      # Checklist
      
      - [ ] My PR includes a detailed description as outlined in the
      "Description" section above
      - [ ] My PR follows the [labeling
      requirements](https://github.com/paritytech/polkadot-sdk/blob/master/docs/CONTRIBUTING.md#process)
      of this project (at minimum one label for `T` required)
      - [ ] I have made corresponding changes to the documentation (if
      applicable)
      - [ ] I have added tests that prove my fix is effective or that my
      feature works (if applicable)
      - [ ] If this PR alters any external APIs or interfaces used by
      Polkadot, the corresponding Polkadot PR is ready as well as the
      corresponding Cumulus PR (optional)
      
      ---------
      
      Signed-off-by: default avatargeorgepisaltu <[email protected]>
      7d735fc8
    • Adrian Catangiu's avatar
      xcm-emulator: add Rococo<>Westend bridge and add tests for assets transfers over the bridge (#2251) · 39cc9574
      Adrian Catangiu authored
      - switch from Rococo<>Wococo to Rococo<>Westend bridge
      - add bidirectional simple tests
      - remove Wococo chains from xcm-emulator
      - added tests for assets transfers over Rococo<>Westend bridge 
      
      fixes https://github.com/paritytech/parity-bridges-common/issues/2405
      39cc9574
    • Liam Aharon's avatar
      Delete undecodable Westend Asset Hub `Balances::Hold` and `Nfts::ItemMetadataOf` (#2309) · 54ca4f13
      Liam Aharon authored
      Closes https://github.com/paritytech/polkadot-sdk/issues/2241
      
      See issue comments for more details about this storage.
      54ca4f13
  5. Nov 13, 2023
    • Adrian Catangiu's avatar
      pallet-xcm: enhance `reserve_transfer_assets` to support remote reserves (#1672) · 18257373
      Adrian Catangiu authored
      
      
      ## Motivation
      
      `pallet-xcm` is the main user-facing interface for XCM functionality,
      including assets manipulation functions like `teleportAssets()` and
      `reserve_transfer_assets()` calls.
      
      While `teleportAsset()` works both ways, `reserve_transfer_assets()`
      works only for sending reserve-based assets to a remote destination and
      beneficiary when the reserve is the _local chain_.
      
      ## Solution
      
      This PR enhances `pallet_xcm::(limited_)reserve_withdraw_assets` to
      support transfers when reserves are other chains.
      This will allow complete, **bi-directional** reserve-based asset
      transfers user stories using `pallet-xcm`.
      
      Enables following scenarios:
      - transferring assets with local reserve (was previously supported iff
      asset used as fee also had local reserve - now it works in all cases),
      - transferring assets with reserve on destination,
      - transferring assets with reserve on remote/third-party chain (iff
      assets and fees have same remote reserve),
      - transferring assets with reserve different than the reserve of the
      asset to be used as fees - meaning can be used to transfer random asset
      with local/dest reserve while using DOT for fees on all involved chains,
      even if DOT local/dest reserve doesn't match asset reserve,
      - transferring assets with any type of local/dest reserve while using
      fees which can be teleported between involved chains.
      
      All of the above is done by pallet inner logic without the user having
      to specify which scenario/reserves/teleports/etc. The correct scenario
      and corresponding XCM programs are identified, and respectively, built
      automatically based on runtime configuration of trusted teleporters and
      trusted reserves.
      
      #### Current limitations:
      - while `fees` and "non-fee" `assets` CAN have different reserves (or
      fees CAN be teleported), the remaining "non-fee" `assets` CANNOT, among
      themselves, have different reserve locations (this is also implicitly
      enforced by `MAX_ASSETS_FOR_TRANSFER=2`, but this can be safely
      increased in the future).
      - `fees` and "non-fee" `assets` CANNOT have **different remote**
      reserves (this could also be supported in the future, but adds even more
      complexity while possibly not being worth it - we'll see what the future
      holds).
      
      Fixes https://github.com/paritytech/polkadot-sdk/issues/1584
      Fixes https://github.com/paritytech/polkadot-sdk/issues/2055
      
      ---------
      
      Co-authored-by: default avatarFrancisco Aguirre <[email protected]>
      Co-authored-by: default avatarBranislav Kontur <[email protected]>
      18257373
  6. Nov 10, 2023
    • PG Herveou's avatar
      Contracts: Add XCM traits to interface with contracts (#2086) · 6b7be115
      PG Herveou authored
      
      
      We are introducing a new set of `XcmController` traits (final name yet
      to be determined).
      These traits are implemented by `pallet-xcm` and allows other pallets,
      such as `pallet_contracts`, to rely on these traits instead of tight
      coupling them to `pallet-xcm`.
      
      Using only the existing Xcm traits would mean duplicating the logic from
      `pallet-xcm` in these other pallets, which we aim to avoid. Our
      objective is to ensure that when these APIs are called from
      `pallet-contracts`, they produce the exact same outcomes as if called
      directly from `pallet-xcm`.
      
      The other benefits is that we can also expose return values to
      `pallet-contracts` instead of just calling `pallet-xcm` dispatchable and
      getting a `DispatchResult` back.
      
      See traits integration in this PR
      https://github.com/paritytech/polkadot-sdk/pull/1248, where the traits
      are used as follow to define and implement `pallet-contracts` Config.
      ```rs
      // Contracts config:
      pub trait Config: frame_system::Config {
        // ...
      
        /// A type that exposes XCM APIs, allowing contracts to interact with other parachains, and
        /// execute XCM programs.
        type Xcm: xcm_executor::traits::Controller<
      	  OriginFor<Self>,
      	  <Self as frame_system::Config>::RuntimeCall,
      	  BlockNumberFor<Self>,
        >;
      }
      
      // implementation
      impl pallet_contracts::Config for Runtime {
              // ...
      
      	type Xcm = pallet_xcm::Pallet<Self>;
      }
      ```
      
      ---------
      
      Co-authored-by: default avatarAlexander Theißen <[email protected]>
      Co-authored-by: command-bot <>
      6b7be115
  7. Nov 09, 2023
    • Oliver Tale-Yazdi's avatar
      Add descriptions to all published crates (#2029) · 48ea86f0
      Oliver Tale-Yazdi authored
      
      
      Missing descriptions (47):  
      
      - [x] `cumulus/client/collator/Cargo.toml`
      - [x] `cumulus/client/relay-chain-inprocess-interface/Cargo.toml`
      - [x] `cumulus/client/cli/Cargo.toml`
      - [x] `cumulus/client/service/Cargo.toml`
      - [x] `cumulus/client/relay-chain-rpc-interface/Cargo.toml`
      - [x] `cumulus/client/relay-chain-interface/Cargo.toml`
      - [x] `cumulus/client/relay-chain-minimal-node/Cargo.toml`
      - [x] `cumulus/parachains/pallets/parachain-info/Cargo.toml`
      - [x] `cumulus/parachains/pallets/ping/Cargo.toml`
      - [x] `cumulus/primitives/utility/Cargo.toml`
      - [x] `cumulus/primitives/aura/Cargo.toml`
      - [x] `cumulus/primitives/core/Cargo.toml`
      - [x] `cumulus/primitives/parachain-inherent/Cargo.toml`
      - [x] `cumulus/test/relay-sproof-builder/Cargo.toml`
      - [x] `cumulus/pallets/xcmp-queue/Cargo.toml`
      - [x] `cumulus/pallets/dmp-queue/Cargo.toml`
      - [x] `cumulus/pallets/xcm/Cargo.toml`
      - [x] `polkadot/erasure-coding/Cargo.toml`
      - [x] `polkadot/statement-table/Cargo.toml`
      - [x] `polkadot/primitives/Cargo.toml`
      - [x] `polkadot/rpc/Cargo.toml`
      - [x] `polkadot/node/service/Cargo.toml`
      - [x] `polkadot/node/core/parachains-inherent/Cargo.toml`
      - [x] `polkadot/node/core/approval-voting/Cargo.toml`
      - [x] `polkadot/node/core/dispute-coordinator/Cargo.toml`
      - [x] `polkadot/node/core/av-store/Cargo.toml`
      - [x] `polkadot/node/core/chain-api/Cargo.toml`
      - [x] `polkadot/node/core/prospective-parachains/Cargo.toml`
      - [x] `polkadot/node/core/backing/Cargo.toml`
      - [x] `polkadot/node/core/provisioner/Cargo.toml`
      - [x] `polkadot/node/core/runtime-api/Cargo.toml`
      - [x] `polkadot/node/core/bitfield-signing/Cargo.toml`
      - [x] `polkadot/node/network/dispute-distribution/Cargo.toml`
      - [x] `polkadot/node/network/bridge/Cargo.toml`
      - [x] `polkadot/node/network/collator-protocol/Cargo.toml`
      - [x] `polkadot/node/network/approval-distribution/Cargo.toml`
      - [x] `polkadot/node/network/availability-distribution/Cargo.toml`
      - [x] `polkadot/node/network/bitfield-distribution/Cargo.toml`
      - [x] `polkadot/node/network/gossip-support/Cargo.toml`
      - [x] `polkadot/node/network/availability-recovery/Cargo.toml`
      - [x] `polkadot/node/collation-generation/Cargo.toml`
      - [x] `polkadot/node/overseer/Cargo.toml`
      - [x] `polkadot/runtime/parachains/Cargo.toml`
      - [x] `polkadot/runtime/common/slot_range_helper/Cargo.toml`
      - [x] `polkadot/runtime/metrics/Cargo.toml`
      - [x] `polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml`
      - [x] `polkadot/utils/generate-bags/Cargo.toml`
      - [x]  `substrate/bin/minimal/runtime/Cargo.toml`
      
      ---------
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      Signed-off-by: default avataralindima <[email protected]>
      Co-authored-by: default avatarordian <[email protected]>
      Co-authored-by: default avatarTsvetomir Dimitrov <[email protected]>
      Co-authored-by: default avatarMarcin S <[email protected]>
      Co-authored-by: default avataralindima <[email protected]>
      Co-authored-by: default avatarSebastian Kunert <[email protected]>
      Co-authored-by: default avatarDmitry Markin <[email protected]>
      Co-authored-by: default avatarjoe petrowski <[email protected]>
      Co-authored-by: default avatarLiam Aharon <[email protected]>
      48ea86f0
  8. Nov 08, 2023
    • RadiumBlock's avatar
      Add RadiumBlock Bootnodes for parachains (#2224) · 6a23c231
      RadiumBlock authored
      
      
      # Description
      
      We would like to add our bootnodes to the following parachains:
      
      Westend: Westmint, Bridgehub
      
      Kusama: Statemine, Bridgehub
      
      Polkadot: Statemint, Bridgehub, Collectives
      
      Thank you.
      
      ---------
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      6a23c231
    • Vincent Geddes's avatar
      BridgeHub Runtimes: Change registration order of `MessageQueue` pallet (#2230) · 3f7c743d
      Vincent Geddes authored
      This PR changes the registration order of the `MessageQueue` pallet so
      that it is registered last.
      
      This is necessary so that the
      [on_initialize](https://github.com/Snowfork/snowbridge/blob/df8d5da8/parachain/pallets/outbound-queue/src/lib.rs#L267)
      hooks for Snowbridge can run before `MessageQueue` delivers messages
      using its own `on_initialize`.
      
      Generally, I think this is preferable regardless of Snowbridge's
      particular requirements. Other pallets may want to do housekeeping
      before MessageQueue starts delivering messages.
      
      I'm hoping this PR, if accepted, can be included in the same release as
      https://github.com/paritytech/polkadot-sdk/pull/1246. As otherwise,
      changing the order of pallet registration is an ABI-breaking change.
      3f7c743d
    • Michal Kucharczyk's avatar
      integrations-test: `build_genesis_storage` name fix (#2232) · eabf9fb8
      Michal Kucharczyk authored
      Some legacy tests were mistakenly merged in #1256 for `emulated-integration-tests-common` crate.
      This PR fixes the function name `build_genesis_storage` (no need to use `legacy` suffix, even though the genesis is built from `RuntimeGenesisConfig`).
      eabf9fb8
    • Ignacio Palacios's avatar
      [xcm-emulator] Chains generic over Network & Integration tests restructure (#2092) · ffa0e30e
      Ignacio Palacios authored
      Closes:
      - #1383 
      - Declared chains can be now be imported and reused in a different
      crate.
      - Chain declaration are now generic over a generic type `N` (the
      Network)
      - #1389
      - Solved #1383, chains and networks declarations can be restructure to
      avoid having to compile all chains when running integrations tests where
      are not needed.
      - Chains are now declared on its own crate (removed from
      `integration-tests-common`)
      - Networks are now declared on its own crate (removed from
      `integration-tests-common`)
          - Integration tests will import only the relevant Network crate
      - `integration-tests-common` is renamed to
      `emulated-integration-tests-common`
      
      All this is necessary to be able to implement what is described here:
      https://github.com/paritytech/roadmap/issues/56#issuecomment-1777010553
      
      ---------
      
      Co-authored-by: command-bot <>
      ffa0e30e
    • Adrian Catangiu's avatar
      [testnets][xcm-emulator] add bridge-hub-westend and hook it up to emulator (#2204) · 2e2a75ff
      Adrian Catangiu authored
      
      
      `bridge-hub-westend-runtime` was added to cumulus/parachains, but wasn't
      hooked up to xcm-emulator to run tests against it.
      
      This commit addresses that ^.
      
      Signed-off-by: default avatarAdrian Catangiu <[email protected]>
      2e2a75ff
  9. Nov 07, 2023
  10. Nov 06, 2023
  11. Nov 05, 2023
    • Oliver Tale-Yazdi's avatar
      [CI] Update deps (#2159) · f6ee4781
      Oliver Tale-Yazdi authored
      
      
      Otherwise the return code is not correctly propagated (ref
      https://github.com/ggwpez/zepter/pull/48).
      
      ---------
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      f6ee4781
    • Michal Kucharczyk's avatar
      `chain-spec`: getting ready for native-runtime-free world (#1256) · 8ba7a6ab
      Michal Kucharczyk authored
      
      
      This PR prepares chains specs for _native-runtime-free_  world.
      
      This PR has following changes:
      - `substrate`:
        - adds support for:
      - JSON based `GenesisConfig` to `ChainSpec` allowing interaction with
      runtime `GenesisBuilder` API.
      - interacting with arbitrary runtime wasm blob to[
      `chain-spec-builder`](https://github.com/paritytech/substrate/blob/3ef576eaeb3f42610e85daecc464961cf1295570/bin/utils/chain-spec-builder/src/lib.rs#L46)
      command line util,
      - removes
      [`code`](https://github.com/paritytech/substrate/blob/3ef576eaeb3f42610e85daecc464961cf1295570/frame/system/src/lib.rs#L660)
      from `system_pallet`
        - adds `code` to the `ChainSpec`
      - deprecates
      [`ChainSpec::from_genesis`](https://github.com/paritytech/substrate/blob/3ef576eaeb3f42610e85daecc464961cf1295570/client/chain-spec/src/chain_spec.rs#L263),
      but also changes the signature of this method extending it with `code`
      argument.
      [`ChainSpec::builder()`](https://github.com/paritytech/substrate/blob/20bee680ed098be7239cf7a6b804cd4de267983e/client/chain-spec/src/chain_spec.rs#L507)
      should be used instead.
      - `polkadot`:
      - all references to `RuntimeGenesisConfig` in `node/service` are
      removed,
      - all
      `(kusama|polkadot|versi|rococo|wococo)_(staging|dev)_genesis_config`
      functions now return the JSON patch for default runtime `GenesisConfig`,
        - `ChainSpecBuilder` is used, `ChainSpec::from_genesis` is removed,
      
      - `cumulus`:
        - `ChainSpecBuilder` is used, `ChainSpec::from_genesis` is removed,
      - _JSON_ patch configuration used instead of `RuntimeGenesisConfig
      struct` in all chain specs.
        
      ---------
      
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarJavier Viola <[email protected]>
      Co-authored-by: default avatarDavide Galassi <[email protected]>
      Co-authored-by: default avatarFrancisco Aguirre <[email protected]>
      Co-authored-by: default avatarKevin Krone <[email protected]>
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      8ba7a6ab
    • Bulat Saifullin's avatar
      Update bootnode lists (#2150) · 0c39cf04
      Bulat Saifullin authored
      # Description
      
      Update the bootnode of kusama parachains before decommissioning the
      nodes. This will avoid connecting to non-existing bootnodes.
      0c39cf04
  12. Nov 03, 2023
  13. Nov 02, 2023
    • Oliver Tale-Yazdi's avatar
      Use `Message Queue` as DMP and XCMP dispatch queue (#1246) · e1c033eb
      Oliver Tale-Yazdi authored
      
      
      (imported from https://github.com/paritytech/cumulus/pull/2157)
      
      ## Changes
      
      This MR refactores the XCMP, Parachains System and DMP pallets to use
      the [MessageQueue](https://github.com/paritytech/substrate/pull/12485)
      for delayed execution of incoming messages. The DMP pallet is entirely
      replaced by the MQ and thereby removed. This allows for PoV-bounded
      execution and resolves a number of issues that stem from the current
      work-around.
      
      All System Parachains adopt this change.  
      The most important changes are in `primitives/core/src/lib.rs`,
      `parachains/common/src/process_xcm_message.rs`,
      `pallets/parachain-system/src/lib.rs`, `pallets/xcmp-queue/src/lib.rs`
      and the runtime configs.
      
      ### DMP Queue Pallet
      
      The pallet got removed and its logic refactored into parachain-system.
      Overweight message management can be done directly through the MQ
      pallet.
      
      Final undeployment migrations are provided by
      `cumulus_pallet_dmp_queue::UndeployDmpQueue` and `DeleteDmpQueue` that
      can be configured with an aux config trait like:
      
      ```rust
      parameter_types! {
      	pub const DmpQueuePalletName: &'static str = \"DmpQueue\" < CHANGE ME;
      	pub const RelayOrigin: AggregateMessageOrigin = AggregateMessageOrigin::Parent;
      }
      
      impl cumulus_pallet_dmp_queue::MigrationConfig for Runtime {
      	type PalletName = DmpQueuePalletName;
      	type DmpHandler = frame_support::traits::EnqueueWithOrigin<MessageQueue, RelayOrigin>;
      	type DbWeight = <Runtime as frame_system::Config>::DbWeight;
      }
      
      // And adding them to your Migrations tuple:
      pub type Migrations = (
      	...
      	cumulus_pallet_dmp_queue::UndeployDmpQueue<Runtime>,
      	cumulus_pallet_dmp_queue::DeleteDmpQueue<Runtime>,
      );
      ```
      
      ### XCMP Queue pallet
      
      Removed all dispatch queue functionality. Incoming XCMP messages are now
      either: Immediately handled if they are Signals, enqueued into the MQ
      pallet otherwise.
      
      New config items for the XCMP queue pallet:
      ```rust
      /// The actual queue implementation that retains the messages for later processing.
      type XcmpQueue: EnqueueMessage<ParaId>;
      
      /// How a XCM over HRMP from a sibling parachain should be processed.
      type XcmpProcessor: ProcessMessage<Origin = ParaId>;
      
      /// The maximal number of suspended XCMP channels at the same time.
      #[pallet::constant]
      type MaxInboundSuspended: Get<u32>;
      ```
      
      How to configure those:
      
      ```rust
      // Use the MessageQueue pallet to store messages for later processing. The `TransformOrigin` is needed since
      // the MQ pallet itself operators on `AggregateMessageOrigin` but we want to enqueue `ParaId`s.
      type XcmpQueue = TransformOrigin<MessageQueue, AggregateMessageOrigin, ParaId, ParaIdToSibling>;
      
      // Process XCMP messages from siblings. This is type-safe to only accept `ParaId`s. They will be dispatched
      // with origin `Junction::Sibling(…)`.
      type XcmpProcessor = ProcessFromSibling<
      	ProcessXcmMessage<
      		AggregateMessageOrigin,
      		xcm_executor::XcmExecutor<xcm_config::XcmConfig>,
      		RuntimeCall,
      	>,
      >;
      
      // Not really important what to choose here. Just something larger than the maximal number of channels.
      type MaxInboundSuspended = sp_core::ConstU32<1_000>;
      ```
      
      The `InboundXcmpStatus` storage item was replaced by
      `InboundXcmpSuspended` since it now only tracks inbound queue suspension
      and no message indices anymore.
      
      Now only sends the most recent channel `Signals`, as all prio ones are
      out-dated anyway.
      
      ### Parachain System pallet
      
      For `DMP` messages instead of forwarding them to the `DMP` pallet, it
      now pushes them to the configured `DmpQueue`. The message processing
      which was triggered in `set_validation_data` is now being done by the MQ
      pallet `on_initialize`.
      
      XCMP messages are still handed off to the `XcmpMessageHandler`
      (XCMP-Queue pallet) - no change here.
      
      New config items for the parachain system pallet:
      ```rust
      /// Queues inbound downward messages for delayed processing. 
      ///
      /// Analogous to the `XcmpQueue` of the XCMP queue pallet.
      type DmpQueue: EnqueueMessage<AggregateMessageOrigin>;
      ``` 
      
      How to configure:
      ```rust
      /// Use the MQ pallet to store DMP messages for delayed processing.
      type DmpQueue = MessageQueue;
      ``` 
      
      ## Message Flow
      
      The flow of messages on the parachain side. Messages come in from the
      left via the `Validation Data` and finally end up at the `Xcm Executor`
      on the right.
      
      ![Untitled
      (1)](https://github.com/paritytech/cumulus/assets/10380170/6cf8b377-88c9-4aed-96df-baace266e04d)
      
      ## Further changes
      
      - Bumped the default suspension, drop and resume thresholds in
      `QueueConfigData::default()`.
      - `XcmpQueue::{suspend_xcm_execution, resume_xcm_execution}` errors when
      they would be a noop.
      - Properly validate the `QueueConfigData` before setting it.
      - Marked weight files as auto-generated so they wont auto-expand in the
      MR files view.
      - Move the `hypothetical` asserts to `frame_support` under the name
      `experimental_hypothetically`
      
      Questions:
      - [ ] What about the ugly `#[cfg(feature = \"runtime-benchmarks\")]` in
      the runtimes? Not sure how to best fix. Just having them like this makes
      tests fail that rely on the real message processor when the feature is
      enabled.
      - [ ] Need a good weight for `MessageQueueServiceWeight`. The scheduler
      already takes 80% so I put it to 10% but that is quite low.
      
      TODO:
      - [x] Remove c&p code after
      https://github.com/paritytech/polkadot/pull/6271
      - [x] Use `HandleMessage` once it is public in Substrate
      - [x] fix `runtime-benchmarks` feature
      https://github.com/paritytech/polkadot/pull/6966
      - [x] Benchmarks
      - [x] Tests
      - [ ] Migrate `InboundXcmpStatus` to `InboundXcmpSuspended`
      - [x] Possibly cleanup Migrations (DMP+XCMP)
      - [x] optional: create `TransformProcessMessageOrigin` in Substrate and
      replace `ProcessFromSibling`
      - [ ] Rerun weights on ref HW
      
      ---------
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      Co-authored-by: default avatarLiam Aharon <[email protected]>
      Co-authored-by: default avatarjoe petrowski <[email protected]>
      Co-authored-by: default avatarKian Paimani <[email protected]>
      Co-authored-by: command-bot <>
      e1c033eb
  14. Nov 01, 2023
    • Branislav Kontur's avatar
      [testnet] Add `AssetHubRococo` <-> `AssetHubWestend` asset bridging support (#1967) · 1b1fab0d
      Branislav Kontur authored
      
      
      ## Summary
      
      Asset bridging support for AssetHub**Rococo** <-> AssetHub**Wococo** was
      added [here](https://github.com/paritytech/polkadot-sdk/pull/1215), so
      now we aim to bridge AssetHub**Rococo** and AssetHub**Westend**. (And
      perhaps retire AssetHubWococo and the Wococo chains).
      
      ## Solution
      
      **bridge-hub-westend-runtime**
      - added new runtime as a copy of `bridge-hub-rococo-runtime`
      - added support for bridging to `BridgeHubRococo`
      - added tests and benchmarks
      
      **bridge-hub-rococo-runtime**
      - added support for bridging to `BridgeHubWestend`
      - added tests and benchmarks
      - internal refactoring by splitting bridge configuration per network,
      e.g., `bridge_to_whatevernetwork_config.rs`.
      
      **asset-hub-rococo-runtime**
      - added support for asset bridging to `AssetHubWestend` (allows to
      receive only WNDs)
      - added new xcm router for `Westend`
      - added tests and benchmarks
      
      **asset-hub-westend-runtime**
      - added support for asset bridging to `AssetHubRococo` (allows to
      receive only ROCs)
      - added new xcm router for `Rococo`
      - added tests and benchmarks
      
      ## Deployment
      
      All changes will be deployed as a part of
      https://github.com/paritytech/polkadot-sdk/issues/1988.
      
      ## TODO
      
      - [x] benchmarks for all pallet instances
      - [x] integration tests
      - [x] local run scripts
      
      
      Relates to:
      https://github.com/paritytech/parity-bridges-common/issues/2602
      Relates to: https://github.com/paritytech/polkadot-sdk/issues/1988
      
      ---------
      
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarAdrian Catangiu <[email protected]>
      Co-authored-by: default avatarjoe petrowski <[email protected]>
      1b1fab0d
    • Serban Iorga's avatar
  15. Oct 31, 2023
  16. Oct 27, 2023
    • Liam Aharon's avatar
      Automatically build and attach production and dev runtimes to GH releases (#2054) · a7061712
      Liam Aharon authored
      
      
      Closes https://github.com/paritytech/release-engineering/issues/6
      
      Adds a new Github Workflow which on a new release being created, builds
      and attaches all runtimes managed in this repository in two flavours:
      - `dev-debug-build`: Built with the `try-runtime` feature and has
      logging enabled
      - `on-chain-release`: Built with the regular old `on-chain-release`
      feature
      
      The new Github Workflow could be extended in the future by the
      @paritytech/release-engineering team to fully automate the release
      process if they choose to, similar to how it is fully automated in the
      Fellowship repo
      (https://github.com/polkadot-fellows/runtimes/blob/main/.github/workflows/release.yml).
      
      The `on-chain-release` did not exist for parachains, so I added it. 
      
      ---
      
      Tested on my fork: 
      - https://github.com/liamaharon/polkadot-sdk/actions/runs/6663773523
      - https://github.com/liamaharon/polkadot-sdk/releases/tag/test-6
      
      ---------
      
      Co-authored-by: default avatarChevdor <[email protected]>
      Co-authored-by: default avatarDónal Murray <[email protected]>
      a7061712
  17. Oct 26, 2023
    • Alin Dima's avatar
      cumulus: fix test runtimes panic (#2039) · 1b08bdd2
      Alin Dima authored
      the min slot duration should be 0 only if the `experimental` feature is
      enabled. otherwise, the runtime will panic on a division by 0.
      1b08bdd2
    • Branislav Kontur's avatar
    • Dastan's avatar
      Expose collection attributes from `Inspect` trait (#1914) · 0bcebac4
      Dastan authored
      # Description
      
      - What does this PR do?
      
      While working with `pallet_nfts` through `nonfungibles_v2` traits
      `Inspect, Mutate`, I found out that once you have set the collection
      attribute with `<Nfts as Mutate>::set_collection_attribute()`, it's not
      possible to read it with `<Nfts as Inspect>::collection_attribute()`
      since they use different `namespace` values. When setting the attribute,
      `AttributeNamespace::Pallet` is used, while
      `AttributeNamespace::CollectionOwner` is used when reading.
      
      more context:
      https://github.com/freeverseio/laos/issues/7#issuecomment-1766137370
      
      This PR makes `item` an optional parameter in
      `Inspect::system_attribute()`, to be able to read collection attributes.
      
      - Why are these changes needed?
      
      To be able to read collection level attributes when reading attributes
      of the collection. It will be possible to read collection attributes by
      passing `None` for `item`
      
      - How were these changes implemented and what do they affect?
      
      `NftsApi` is also affected and `NftsApi::system_attribute()` now accepts
      optional `item` parameter.
      
      ## Breaking change
      
      Because of the change in the `NftsApi::system_attribute()` method's
      `item` param, parachains who integrated the `NftsApi` need to update
      their API code and frontend integrations accordingly. AssetHubs are
      unaffected since the NftsApi wasn't released on those parachains yet.
      0bcebac4
  18. Oct 25, 2023
    • Branislav Kontur's avatar
      [testnet] Align testnet system parachain runtimes using... · f6560c2b
      Branislav Kontur authored
      [testnet] Align testnet system parachain runtimes using `RelayTreasuryLocation` and `SystemParachains` in the same way (#2023)
      
      This PR addresses several issues:
      - simplify referencing `RelayTreasuryLocation` without needing
      additional `RelayTreasury` struct
      - fix for referencing `SystemParachains` from parachain with `parents:
      1` instead of `parents: 0`
      - removed hard-coded constants and fix tests for `asset-hub-rococo`
      which was merged to master after
      https://github.com/paritytech/polkadot-sdk/pull/1726
      
      ---------
      
      Co-authored-by: command-bot <>
      f6560c2b
  19. Oct 24, 2023
    • Oliver Tale-Yazdi's avatar
      Improve features dev-ex (#1831) · 4a443567
      Oliver Tale-Yazdi authored
      
      
      Adds a config file that allows to run `zepter` without any arguments in
      the workspace to address all issues.
      A secondary workflow for the CI is provided as `zepter run check`. Both
      the formatting and linting are now in one check for efficiancy.
      
      The latest version also detects some more things that `featalign` was
      already showing.
      
      Error message [in the
      CI](https://gitlab.parity.io/parity/mirrors/polkadot-sdk/-/jobs/3916205)
      now looks like this:
      ```pre
      ...
      crate 'test-parachains' (/Users/vados/Documents/work/polkadot-sdk/polkadot/parachain/test-parachains/Cargo.toml)
        feature 'std'
          must propagate to:
            parity-scale-codec
      Found 55 issues (run with --fix to fix).
      Error: Command 'lint propagate-feature' failed with exit code 1
      
      Polkadot-SDK uses the Zepter CLI to detect abnormalities in the feature configuration.
      It looks like one more more checks failed; please check the console output. You can try to automatically address them by running `zepter`.
      Otherwise please ask directly in the Merge Request, GitHub Discussions or on Matrix Chat, thank you.
      
      For more information, see:
        - https://github.com/paritytech/polkadot-sdk/issues/1831
        - https://github.com/ggwpez/zepter
      ```
      
      TODO:
      - [x] Check that CI fails correctly
      
      ---------
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      4a443567
    • Kian Paimani's avatar
      Ensure correct variant count in `Runtime[Hold/Freeze]Reason` (#1900) · 35eb133b
      Kian Paimani authored
      
      
      closes https://github.com/paritytech/polkadot-sdk/issues/1882
      
      ## Breaking Changes
      
      This PR introduces a new item to `pallet_balances::Config`:
      
      ```diff
      trait Config {
      ++    type RuntimeFreezeReasons;
      }
      ```
      
      This value is only used to check it against `type MaxFreeze`. A similar
      check has been added for `MaxHolds` against `RuntimeHoldReasons`, which
      is already given to `pallet_balances`.
      
      In all contexts, you should pass the real `RuntimeFreezeReasons`
      generated by `construct_runtime` to `type RuntimeFreezeReasons`. Passing
      `()` would also work, but it would imply that the runtime uses no
      freezes at all.
      
      ---------
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      35eb133b
  20. Oct 23, 2023
    • Branislav Kontur's avatar
      [testnet] BridgeHubRococo nits (#1972) · e0620fd9
      Branislav Kontur authored
      This PR does not introduce any functional changes to the existing code,
      it merely addresses several minor refactors:
      - Moving bridging pallets to separate files.
      - Improving the readability and naming of weight files for bridging
      pallets and bridging pallet instances.
      
      The reason for this refactor is to facilitate easier plugin integration
      for the upcoming bridge between Rococo and Westend.
      
      ---------
      
      Co-authored-by: command-bot <>
      e0620fd9
    • Branislav Kontur's avatar
      Remove `(rococo/westend)-runtime` deps from testnet AssetHubs (#1979) · c284a931
      Branislav Kontur authored
      ## Problem
      
      This PR addresses the issue with testnet AssetHub builds, which was
      discovered during the execution of `bot bench`.
      
      https://gitlab.parity.io/parity/mirrors/polkadot-sdk/-/jobs/4038738
      ```
           Compiling asset-hub-rococo-runtime-wasm v1.0.0 (/builds/parity/mirrors/polkadot-sdk/target/production/wbuild/asset-hub-rococo-runtime)
        warning: Linking globals named 'Core_version': symbol multiply defined!
        error: failed to load bitcode of module "rococo_runtime-8799ee884447805a.rococo_runtime.0bc572b8-cgu.0.rcgu.o": 
        warning: `asset-hub-rococo-runtime-wasm` (lib) generated 1 warning
        error: could not compile `asset-hub-rococo-runtime-wasm` (lib) due to previous error; 1 warning emitted
      ```
      
      https://gitlab.parity.io/parity/mirrors/polkadot-sdk/-/jobs/4038739
      ```
      Compiling asset-hub-westend-runtime-wasm v1.0.0 (/builds/parity/mirrors/polkadot-sdk/target/production/wbuild/asset-hub-westend-runtime)
        warning: Linking globals named 'Core_version': symbol multiply defined!
        error: failed to load bitcode of module "westend_runtime-86d7844430f97d5c.westend_runtime.b7678d03-cgu.0.rcgu.o": 
        warning: `asset-hub-westend-runtime-wasm` (lib) generated 1 warning
        error: could not compile `asset-hub-westend-runtime-wasm` (lib) due to previous error; 1 warning emitted
      ```
      
      ## Solution
      
      - Removed dependencies on `rococo-runtime` and `westend-runtime`
      introduced by [this
      PR](https://github.com/paritytech/polkadot-sdk/pull/1234/files#diff-a86375df98e04ca3cce1ea35c40257a222e2d5087f5f528ff33307678b78dc2dR534-R550).
      - Replaced `<rococo_runtime::Treasury as PalletInfoAccess>::index()`
      with `rococo_runtime_constants::TREASURY_PALLET_ID`.
      - Added `check_treasury_pallet_id` to the relay runtimes to ensure that
      the constant is aligned with the pallet id.
      - Added "Rococo Treasury" to the waived locations (that will not be
      charged fees in the executor) for `BridgeHubRococo` (to be aligned with
      AssetHubs).
      
      ## References
      
      [Full element discussion
      here](https://matrix.to/#/!JUeaZUiYbdrvzvtwSL:parity.io/$2PnjYMsWRjR7M3oOfGuRI0XkjdoqJLtRcAPVcDLuLVg?via=parity.io&via=web3.foundation).
      
      ---------
      
      Co-authored-by: command-bot <>
      c284a931