Skip to content
  1. Dec 19, 2023
  2. Dec 14, 2023
    • Francisco Aguirre's avatar
      Add FungibleAdapter (#2684) · 10a91f82
      Francisco Aguirre authored
      In the move from the old `Currency` traits to the new `fungible/s`
      family of traits, we already had the `FungiblesAdapter` and
      `NonFungiblesAdapter` for multiple fungible and non fungible assets
      respectively. However, for handling only one fungible asset, we were
      missing a `FungibleAdapter`, and so used the old `CurrencyAdapter`
      instead. This PR aims to fill in that gap, and provide the new adapter
      for more updated examples.
      
      I marked the old `CurrencyAdapter` as deprecated as part of this PR, and
      I'll change it to the new `FungibleAdapter` in a following PR.
      The two stages are separated so as to not bloat this PR with some name
      fixes in tests.
      
      ---------
      
      Co-authored-by: command-bot <>
      10a91f82
  3. Dec 08, 2023
    • Muharem Ismailov's avatar
      Westend: Fellowship Treasury (#2532) · da40d97a
      Muharem Ismailov authored
      
      
      Treasury Pallet Instance for the Fellowship in Westend Collectives.
      
      In this update, we present a Treasury Pallet Instance that is under the
      control of the Fellowship body, with oversight from the Root and
      Treasurer origins. Here's how it is governed:
      - the Root origin have the authority to reject or approve spend
      proposals, with no amount limit for approvals.
      - the Treasurer origin have the authority to reject or approve spend
      proposals, with approval limits of up to 10,000,000 DOT.
      - Voice of all Fellows ranked at 3 or above can reject or approve spend
      proposals, with a maximum approval limit of 10,000 DOT.
      - Voice of Fellows ranked at 4 or above can also reject or approve spend
      proposals, with a maximum approval limit of 10,000,000 DOT.
      
      Additionally, we introduce the Asset Rate Pallet Instance to establish
      conversion rates from asset A to B. This is used to determine if a
      proposed spend amount involving a non-native asset is permissible by the
      commanding origin. The rates can be set up by the Root, Treasurer
      origins, or Voice of all Fellows.
      
      ---------
      
      Co-authored-by: default avatarjoe petrowski <[email protected]>
      Co-authored-by: default avatarjoepetrowski <[email protected]>
      da40d97a
  4. Dec 06, 2023
  5. Nov 17, 2023
  6. 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
  7. Nov 03, 2023
    • Svyatoslav Nikolsky's avatar
      [testnet] Allow governance to control fees for Rococo <> Westend bridge (#2139) · 0d3c67d9
      Svyatoslav Nikolsky authored
      Right now governance could only control byte-fee component of Rococo <>
      Westend message fees (paid at Asset Hubs). This PR changes it a bit:
      1) governance now allowed to control both fee components - byte fee and
      base fee;
      2) base fee now includes cost of "default" delivery and confirmation
      transactions, in addition to `ExportMessage` instruction cost.
      0d3c67d9
  8. 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
  9. Nov 01, 2023
  10. 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
  11. Oct 23, 2023
  12. Oct 18, 2023
    • Keith Yeung's avatar
      Introduce XcmFeesToAccount fee manager (#1234) · 3dece311
      Keith Yeung authored
      
      
      Combination of paritytech/polkadot#7005, its addon PR
      paritytech/polkadot#7585 and its companion paritytech/cumulus#2433.
      
      This PR introduces a new XcmFeesToAccount struct which implements the
      `FeeManager` trait, and assigns this struct as the `FeeManager` in the
      XCM config for all runtimes.
      
      The struct simply deposits all fees handled by the XCM executor to a
      specified account. In all runtimes, the specified account is configured
      as the treasury account.
      
      XCM __delivery__ fees are now being introduced (unless the root origin
      is sending a message to a system parachain on behalf of the originating
      chain).
      
      # Note for reviewers
      
      Most file changes are tests that had to be modified to account for the
      new fees.
      Main changes are in:
      - cumulus/pallets/xcmp-queue/src/lib.rs <- To make it track the delivery
      fees exponential factor
      - polkadot/xcm/xcm-builder/src/fee_handling.rs <- Added. Has the
      FeeManager implementation
      - All runtime xcm_config files <- To add the FeeManager to the XCM
      configuration
      
      # Important note
      
      After this change, instructions that create and send a new XCM (Query*,
      Report*, ExportMessage, InitiateReserveWithdraw, InitiateTeleport,
      DepositReserveAsset, TransferReserveAsset, LockAsset and RequestUnlock)
      will require the corresponding origin account in the origin register to
      pay for transport delivery fees, and the onward message will fail to be
      sent if the origin account does not have the required amount. This
      delivery fee is on top of what we already collect as tx fees in
      pallet-xcm and XCM BuyExecution fees!
      
      Wallet UIs that want to expose the new delivery fee can do so using the
      formula:
      
      ```
      delivery_fee_factor * (base_fee + encoded_msg_len * per_byte_fee)
      ```
      
      where the delivery fee factor can be obtained from the corresponding
      pallet based on which transport you are using (UMP, HRMP or bridges),
      the base fee is a constant, the encoded message length from the message
      itself and the per byte fee is the same as the configured per byte fee
      for txs (i.e. `TransactionByteFee`).
      
      ---------
      
      Co-authored-by: default avatarBranislav Kontur <[email protected]>
      Co-authored-by: default avatarjoe petrowski <[email protected]>
      Co-authored-by: default avatarGiles Cope <[email protected]>
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarFrancisco Aguirre <[email protected]>
      Co-authored-by: default avatarLiam Aharon <[email protected]>
      Co-authored-by: default avatarKian Paimani <[email protected]>
      3dece311
    • Adrian Catangiu's avatar
      cumulus: add asset-hub-rococo runtime based on asset-hub-kusama and add... · 8b3905d2
      Adrian Catangiu authored
      
      cumulus: add asset-hub-rococo runtime based on asset-hub-kusama and add asset-bridging support to it (#1215)
      
      This commit adds Rococo Asset Hub dedicated runtime so we can test new
      features here, before merging them in Kusama Asset Hub.
      Also adds one such feature: asset transfer over bridge (Rococo AssetHub
      <> Wococo AssetHub)
      
      - clone `asset-hub-kusama-runtime` -> `asset-hub-rococo-runtime`
      - make it use Rococo primitives, names, assets, constants, etc
      - add asset-transfer-over-bridge support to Rococo AssetHub <> Wococo
      AssetHub
      
      Fixes #1128
      
      ---------
      
      Co-authored-by: default avatarBranislav Kontur <[email protected]>
      Co-authored-by: default avatarjoe petrowski <[email protected]>
      Co-authored-by: default avatarFrancisco Aguirre <[email protected]>
      8b3905d2
  13. Oct 17, 2023
  14. Oct 16, 2023
  15. Oct 07, 2023
    • Muharem Ismailov's avatar
      Treasury spends various asset kinds (#1333) · cb944dc5
      Muharem Ismailov authored
      
      
      ### Summary 
      
      This PR introduces new dispatchables to the treasury pallet, allowing
      spends of various asset types. The enhanced features of the treasury
      pallet, in conjunction with the asset-rate pallet, are set up and
      enabled for Westend and Rococo.
      
      ### Westend and Rococo runtimes.
      
      Polkadot/Kusams/Rococo Treasury can accept proposals for `spends` of
      various asset kinds by specifying the asset's location and ID.
      
      #### Treasury Instance New Dispatchables:
      - `spend(AssetKind, AssetBalance, Beneficiary, Option<ValidFrom>)` -
      propose and approve a spend;
      - `payout(SpendIndex)` - payout an approved spend or retry a failed
      payout
      - `check_payment(SpendIndex)` - check the status of a payout;
      - `void_spend(SpendIndex)` - void previously approved spend;
      > existing spend dispatchable renamed to spend_local
      
      in this context, the `AssetKind` parameter contains the asset's location
      and it's corresponding `asset_id`, for example:
      `USDT` on `AssetHub`,
      ``` rust
      location = MultiLocation(0, X1(Parachain(1000)))
      asset_id = MultiLocation(0, X2(PalletInstance(50), GeneralIndex(1984)))
      ```
      
      the `Beneficiary` parameter is a `MultiLocation` in the context of the
      asset's location, for example
      ``` rust
      // the Fellowship salary pallet's location / account
      FellowshipSalaryPallet = MultiLocation(1, X2(Parachain(1001), PalletInstance(64)))
      // or custom `AccountId`
      Alice = MultiLocation(0, AccountId32(network: None, id: [1,...]))
      ```
      
      the `AssetBalance` represents the amount of the `AssetKind` to be
      transferred to the `Beneficiary`. For permission checks, the asset
      amount is converted to the native amount and compared against the
      maximum spendable amount determined by the commanding spend origin.
      
      the `spend` dispatchable allows for batching spends with different
      `ValidFrom` arguments, enabling milestone-based spending. If the
      expectations tied to an approved spend are not met, it is possible to
      void the spend later using the `void_spend` dispatchable.
      
      Asset Rate Pallet provides the conversion rate from the `AssetKind` to
      the native balance.
      
      #### Asset Rate Instance Dispatchables:
      - `create(AssetKind, Rate)` - initialize a conversion rate to the native
      balance for the given asset
      - `update(AssetKind, Rate)` - update the conversion rate to the native
      balance for the given asset
      - `remove(AssetKind)` - remove an existing conversion rate to the native
      balance for the given asset
      
      the pallet's dispatchables can be executed by the Root or Treasurer
      origins.
      
      ### Treasury Pallet
      
      Treasury Pallet can accept proposals for `spends` of various asset kinds
      and pay them out through the implementation of the `Pay` trait.
      
      New Dispatchables:
      - `spend(Config::AssetKind, AssetBalance, Config::Beneficiary,
      Option<ValidFrom>)` - propose and approve a spend;
      - `payout(SpendIndex)` - payout an approved spend or retry a failed
      payout;
      - `check_payment(SpendIndex)` - check the status of a payout;
      - `void_spend(SpendIndex)` - void previously approved spend;
      > existing spend dispatchable renamed to spend_local
      
      The parameters' types of the `spend` dispatchable exposed via the
      pallet's `Config` and allows to propose and accept a spend of a certain
      amount.
      
      An approved spend can be claimed via the `payout` within the
      `Config::SpendPeriod`. Clients provide an implementation of the `Pay`
      trait which can pay an asset of the `AssetKind` to the `Beneficiary` in
      `AssetBalance` units.
      
      The implementation of the Pay trait might not have an immediate final
      payment status, for example if implemented over `XCM` and the actual
      transfer happens on a remote chain.
      
      The `check_status` dispatchable can be executed to update the spend's
      payment state and retry the `payout` if the payment has failed.
      
      ---------
      
      Co-authored-by: default avatarjoe petrowski <[email protected]>
      Co-authored-by: command-bot <>
      cb944dc5
  16. Aug 31, 2023
    • Bastian Köcher's avatar
      Rename `polkadot-parachain` to `polkadot-parachain-primitives` (#1334) · a33d7922
      Bastian Köcher authored
      * Rename `polkadot-parachain` to `polkadot-parachain-primitives`
      
      While doing this it also fixes some last `rustdoc` issues and fixes
      another Cargo warning related to `pallet-paged-list`.
      
      * Fix compilation
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Fix XCM docs
      
      ---------
      
      Co-authored-by: command-bot <>
      a33d7922
  17. Aug 30, 2023
  18. Aug 24, 2023
  19. Aug 19, 2023
  20. Aug 16, 2023
  21. Aug 15, 2023
  22. Aug 14, 2023
  23. Jul 21, 2023
    • Branislav Kontur's avatar
      Asset conversion nits (#2860) · 8171890f
      Branislav Kontur authored
      
      
      * [asset-conv] Unused Balances type
      
      * [asset-conv] native asset change
      
      * Dedicated `AssetBalance` type for `pallet_assets` instances
      
      * Improved local vs foreign asset handling + test for not allowing pool_assets in pool
      
      * Removed `into_multiasset_id`
      
      * Fix
      
      * Refactor
      
      * Fixed create_pool for benchmark with LocalAndForeignAssets (finally found it)
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Revert
      
      * fmt
      
      * Migrates pools with `MultiLocation { parents: 0, interior: Here }` to `MultiLocation { parents: 1, interior: Here }`
      
      * Allow `set_storage` for `AllowMultiAssetPools` / `LiquidityWithdrawalFee`
      
      * Benchmarks work
      
      * Removed comment + more defensive migration
      
      * `T::Currency::transfer` -> `Balances::transfer_all` in migration
      
      * Change pool_id in migration
      
      * Update parachains/runtimes/assets/asset-hub-westend/src/lib.rs
      
      * Bump substrate (manually)
      
      * Bump polkadot
      
      * Fixes from polkadot + clippy
      
      * Fix for xcm-emulator tests (thank you Nacho)
      
      ---------
      
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarJegor Sidorenko <[email protected]>
      8171890f
  24. Jun 23, 2023
    • Squirrel's avatar
      Asset Conversion release to westmint (#2148) · 5487ce76
      Squirrel authored
      
      
      * Dex and payment by dex in westmint
      
      * Wrap U256 type for now
      
      (to support required traits.)
      
      * cargo fmt
      
      * We can now use U256
      
      * Rename PromotedBalance
      
      * name change
      
      * Updating the code to master.
      
      TODO: handle dust!
      
      * cargo fmt
      
      * Minimising changes and step towards getting benchmarks compiling
      
      (still a From<u32> bound in the pallet)
      
      * minimise diff
      
      * Update parachains/runtimes/assets/westmint/src/lib.rs
      
      Co-authored-by: default avatarJegor Sidorenko <[email protected]>
      
      * Update parachains/runtimes/assets/westmint/src/lib.rs
      
      Co-authored-by: default avatarJegor Sidorenko <[email protected]>
      
      * Update parachains/common/src/impls.rs
      
      Co-authored-by: default avatarJegor Sidorenko <[email protected]>
      
      * Fix benchmark build
      
      * Add in AssetConversionAPI
      
      * Handle dust
      
      * cargo fmt
      
      * Don't need to be explicit that it's AccountId32
      
      * remove pool setup fee
      
      (Asset deposit fees are a sufficient anti-spam measure)
      
      * More natural way to specify native
      
      * cargo fmt
      
      * Update parachains/runtimes/assets/westmint/src/lib.rs
      
      * Additional required impls
      
      * either form of multilocation should be acceptable.
      
      * add call filter exclusion
      
      * Fix typo & try_convert now fails if native is converted
      
      * merge master fixup
      
      * Fix: HoldReason should be there.
      
      * Box MultiAssetId
      
      Otherwise it blows out the Call enum memory size.
      
      * cargo fmt
      
      * update lock file
      
      * add std feature, update lock file
      
      * need to turn on std on common
      
      * adding in westmint tests
      
      * WeightToFee must be from the destination chain.
      
      * cargo fmt
      
      * account for higher ED on westmint
      
      * type removed as not used
      
      * cargo fmt
      
      * remove unused import
      
      * minimising diff
      
      * import needed only with feature enabled
      
      * use multilocation contains
      
      * move the impls to separate file
      
      * simplify on conversion
      
      * simplify on reverse conversion also.
      
      * rename var
      
      * clippy
      
      * removed dead code
      
      * cargo fmt
      
      * Use pay by swap
      
      * review suggestions
      
      * cargo fmt
      
      * Update parachains/runtimes/assets/asset-hub-westend/src/lib.rs
      
      Co-authored-by: default avatarjoe petrowski <[email protected]>
      
      * add benchmarks for new assets pallet
      
      * revert common/src changes
      
      * need a concrete id
      
      * more fixes
      
      * lock
      
      ---------
      
      Co-authored-by: default avatarJegor Sidorenko <[email protected]>
      Co-authored-by: default avatarjoepetrowski <[email protected]>
      Co-authored-by: default avatarjoe petrowski <[email protected]>
      5487ce76
  25. Jun 05, 2023
    • Just van Stam's avatar
      companion for xcm alias origin (#2680) · 119604ed
      Just van Stam authored
      * companion for xcm alias origin
      
      * update lockfile for {"polkadot", "substrate"}
      
      * add benchmark function for runtimes
      
      ---------
      
      Co-authored-by: parity-processbot <>
      119604ed
  26. Jun 02, 2023
    • joe petrowski's avatar
      Rename Statemint to Asset Hub (#2633) · 60075495
      joe petrowski authored
      
      
      * change dir names
      
      * cargo toml updates
      
      * fix crate imports for build
      
      * change chain spec names and PR review rule
      
      * update cli to accept asset-hub
      
      * find/replace benchmark commands
      
      * integration tests
      
      * bridges docs
      
      * more integration tests
      
      * AuraId
      
      * other statemint tidying
      
      * rename statemint mod
      
      * chain spec mod
      
      * rename e2e test dirs
      
      * one more Runtime::Statemine
      
      * benchmark westmint
      
      * rename chain spec name and id
      
      * rename chain spec files
      
      * more tidying in scripts/docs/tests
      
      * rename old dir if exists
      
      * Force people to manually do the move.
      
      (Safer as there could be additional considerations with their setup)
      
      * review touchups
      
      * more renaming
      
      * Update polkadot-parachain/src/command.rs
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * better error message
      
      * do not break on-chain spec_name
      
      * log info message that path has been renamed
      
      * better penpal docs
      
      ---------
      
      Co-authored-by: default avatargilescope <[email protected]>
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      Co-authored-by: parity-processbot <>
      60075495
  27. May 29, 2023
  28. May 25, 2023
    • Gavin Wood's avatar
      Companion for polkadot#7234 (XCM: Tools for uniquely referencing messages) (#2601) · ec21c0a2
      Gavin Wood authored
      * Fixes for new API
      
      * Formatting
      
      * Fixes
      
      * Fixes
      
      * Further fixes
      
      * XCMP dispatch events mention message ID
      
      * XCMP event includes ID
      
      * Add DMP message ID functionality
      
      * Integrate into test parachains
      
      * Remove WithUniqueTopic usage
      
      * Use new primitive
      
      * Formatting
      
      * undiener
      
      * Revert lock
      
      * Fixes
      
      * Fixes
      
      * Fixes
      
      * Fixes
      
      * Formatting
      
      * message_hash becomes message_id
      
      * Rename
      
      * Another Rename
      
      * Fixes
      
      * Fix
      
      * Bump
      
      * Fixes
      
      * Grumble.
      ec21c0a2
  29. May 23, 2023
  30. May 16, 2023
    • Branislav Kontur's avatar
      BridgeHubRococo/Wococo nits + updated subtree (#2572) · 17b2e1b3
      Branislav Kontur authored
      * Nits (merge before separatelly)
      
      * Small cosmetics for Rococo/Wococo bridge local run
      
      * Squashed 'bridges/' changes from 04b3dda6aa..5fc377ab34
      
      5fc377ab34 Support for kusama-polkadot relaying (#2128)
      01f4b7f1ba Fix clippy warnings (#2127)
      696ff1c368 BHK/P alignments (#2115)
      2a66aa3248 Small fixes (#2126)
      7810f1a988 Cosmetics (#2124)
      daf250f69c Remove some `expect()` statements (#2123)
      1c5fba8274 temporarily remove balance guard (#2121)
      3d0e547361 Propagate message receival confirmation errors (#2116)
      1c33143f07 Propagate message verification errors (#2114)
      b075b00910 Bump time from 0.3.20 to 0.3.21
      51a3a51618 Bump serde from 1.0.160 to 1.0.162
      da88d044a6 Bump clap from 4.2.5 to 4.2.7
      cdca322cd6 Bump sysinfo from 0.28.4 to 0.29.0
      
      git-subtree-dir: bridges
      git-subtree-split: 5fc377ab34f7dfd3293099c5feec49255e827812
      
      * Fix
      
      * Allow to change storage constants (DeliveryReward, RequiredStakeForStakeAndSlash) + tests
      
      * Clippy
      
      * New SA for RO/WO
      
      * Squashed 'bridges/' changes from 5fc377ab34..0f6091d481
      
      0f6091d481 Bump polkadot/substrate (#2134)
      9233f0a337 Bump tokio from 1.28.0 to 1.28.1
      a29c1caa93 Bump serde from 1.0.162 to 1.0.163
      
      git-subtree-dir: bridges
      git-subtree-split: 0f6091d48184ebb4f75cb3089befa6b92cf37335
      17b2e1b3
  31. May 08, 2023
  32. May 06, 2023
  33. May 05, 2023
  34. Apr 24, 2023
  35. Mar 23, 2023
    • joe petrowski's avatar
      Add Support for Foreign Assets (#2133) · af46f4b4
      joe petrowski authored
      
      
      * add foreign assets to westmint
      
      * add foreign assets to statemine
      
      * use updated api for ensure origin trait
      
      * Assets/ForeignAssets tests and fixes (#2167)
      
      * Test for create and transfer `TrustBackedAssets` with AssetTransactor
      
      * Test for transfer `local Currency` with AssetTransactor
      
      * Test for create foreign assets (covers foreign relaychain currency)
      
      * Added `ForeignFungiblesTransactor` and test for transfer `ForeignAssets` with AssetTransactor
      
      * Removed unused `pub const Local: MultiLocation`
      
      * Changed `ParaId -> Sibling` for `SiblingParachainConvertsVia`
      
      * Test for create foreign assets (covers local sibling parachain assets)
      
      * Reverted stuff for ForeignCreators from different global consensus (moved to transfer asset branch)
      
      * Refactor `weight_limit` for `execute_xcm`
      
      * Added test for `set_metadata` by ForeignCreator with `xcm::Transact(set_metadata)`
      
      * Renamed `receive_teleported_asset_works` -> `receive_teleported_asset_for_native_asset_works`
      
      * Allow `ForeignCreators` only for sibling parachains
      
      * Unify ReservedDmpWeight/ReservedXcmpWeight usage
      
      * Removed hack - replaced with `MatchedConvertedConcreteId`
      
      * Refactor `ForeignCreators` to assets-common
      
      * Add `ReceiveTeleportedAsset` test
      
      * Change test - `Utility::batch` -> Multiple `xcm::Transact`
      
      * Reusing the same deposits as for TrustBackedAssets
      
      * missing `try_successful_origin` ?
      
      * Finished `ForeignAssets` for westmint (converter, FungiblesApi, tests)
      
      * Refactoring tests - receive_teleported_asset_for_native_asset_works
      
      * ForeignAssets for statemine + refactored `receive_teleported_asset_from_foreign_creator_works`
      
      * Add `ForeignAssets` to statemine `FungiblesApi`
      
      * Add `asset_transactor_transfer_with_local_consensus_currency_works` to all runtimes
      
      * Added `asset_transactor_transfer_with_trust_backed_assets_works` test
      
      * Added `asset_transactor_transfer_with_foreign_assets_works`
      
      * Fix `missing `try_successful_origin` in implementation`
      
      * Added `create_and_manage_foreign_assets_for_local_consensus_parachain_assets_works`
      
      * Added `ExpectTransactStatus` check
      
      * Small rename
      
      * Extended `test_assets_balances_api_works` with ForeignAssets for `statemine`
      
      * PR fixes
      
      * Update parachains/runtimes/assets/test-utils/src/test_cases.rs
      
      ---------
      
      Co-authored-by: parity-processbot <>
      Co-authored-by: default avatarjoe petrowski <[email protected]>
      
      * Added `StartsWithExplicitGlobalConsensus` to ignores (#2338)
      
      * Update parachains/runtimes/assets/common/src/lib.rs
      
      Co-authored-by: default avatarGavin Wood <[email protected]>
      
      * include mint and burn in SafeCallFilter
      
      * include mint and burn in SafeCallFilter (statemine)
      
      * clarify doc
      
      * Fix compilation (moved trait `InspectMetadata`)
      
      * Fix test
      
      * Extended test for `teleport` from/to relaychain + `CheckingAccount` (Part I)
      
      * Extended test for `teleport` from/to foreign parachain + `CheckingAccount` (Part II)
      
      * Fixed TODO - `NonLocal` for `ForeignAssets`
      
      * Changed `NonLocal` to `NoChecking`
      
      * Fix weight in test
      
      ---------
      
      Co-authored-by: parity-processbot <>
      Co-authored-by: default avatarmuharem <[email protected]>
      Co-authored-by: default avatarBranislav Kontur <[email protected]>
      Co-authored-by: default avatarGavin Wood <[email protected]>
      af46f4b4