Skip to content
  1. 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
  2. Dec 13, 2023
  3. Nov 28, 2023
  4. Nov 21, 2023
    • Francisco Aguirre's avatar
      Different XCM builders, default one requires fee payment (#2253) · b3841b6b
      Francisco Aguirre authored
      Adding on top of the new builder pattern for creating XCM programs, I'm
      adding some more APIs:
      
      ```rust
      let paying_fees: Xcm<()> = Xcm::builder() // Only allow paying for fees
        .withdraw_asset() // First instruction has to load the holding register
        .buy_execution() // Second instruction has to be `buy_execution`
        .build();
      
      let paying_fees_invalid: Xcm<()> = Xcm::builder()
        .withdraw_asset()
        .build(); // Invalid, need to pay for fees
      
      let not_paying_fees: Xcm<()> = Xcm::builder_unpaid()
        .unpaid_execution() // Needed
        .withdraw_asset()
        .deposit_asset()
        .build();
      
      let all_goes: Xcm<()> = Xcm::builder_unsafe() // You can do anything
        .withdraw_asset()
        .deposit_asset()
        .build();
      ```
      
      The invalid bits are because the methods don't even exist on the types
      that you'd want to call them on.
      
      ---------
      
      Co-authored-by: command-bot <>
      b3841b6b
  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 08, 2023
    • Francisco Aguirre's avatar
      XCM builder pattern (#2107) · 0524aa51
      Francisco Aguirre authored
      
      
      Added a proc macro to be able to write XCMs using the builder pattern.
      This means we go from having to do this:
      
      ```rust
      let message: Xcm<()> = Xcm(vec![
        WithdrawAsset(assets),
        BuyExecution { fees: asset, weight_limit: Unlimited },
        DepositAsset { assets, beneficiary },
      ]);
      ```
      
      to this:
      
      ```rust
      let message: Xcm<()> = Xcm::builder()
        .withdraw_asset(assets)
        .buy_execution(asset, Unlimited),
        .deposit_asset(assets, beneficiary)
        .build();
      ```
      
      ---------
      
      Co-authored-by: default avatarKeith Yeung <[email protected]>
      Co-authored-by: command-bot <>
      0524aa51
  7. Oct 24, 2023
    • 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
  8. Oct 20, 2023
    • Bastian Köcher's avatar
      `xcm`: Change `TypeInfo::path` to not include `staging` (#1948) · f3bf5c1a
      Bastian Köcher authored
      
      
      The `xcm` crate was renamed to `staging-xcm` to be able to publish it to
      crates.io as someone as squatted `xcm`. The problem with this rename is
      that the `TypeInfo` includes the crate name which ultimately lands in
      the metadata. The metadata is consumed by downstream users like
      `polkadot-js` or people building on top of `polkadot-js`. These people
      are using the entire `path` to find the type in the type registry. Thus,
      their code would break as the type path would now be [`staging_xcm`,
      `VersionedXcm`] instead of [`xcm`, `VersionedXcm`]. This pull request
      fixes this by renaming the path segment `staging_xcm` to `xcm`.
      
      This requires: https://github.com/paritytech/scale-info/pull/197
      
      ---------
      
      Co-authored-by: default avatarFrancisco Aguirre <[email protected]>
      f3bf5c1a
  9. Sep 04, 2023
    • Chevdor's avatar
      Markdown linter (#1309) · a30092ab
      Chevdor authored
      
      
      * Add markdown linting
      
      - add linter default rules
      - adapt rules to current code
      - fix the code for linting to pass
      - add CI check
      
      fix #1243
      
      * Fix markdown for Substrate
      * Fix tooling install
      * Fix workflow
      * Add documentation
      * Remove trailing spaces
      * Update .github/.markdownlint.yaml
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      * Fix mangled markdown/lists
      * Fix captalization issues on known words
      a30092ab
  10. Sep 01, 2023
  11. 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
  12. Aug 30, 2023
    • Lulu's avatar
      Rename squatted crates (#1241) · 31c79470
      Lulu authored
      * Rename squatted crates
      
      This commit adds the staging- prefix to squatted crates so we can go forward and publish them to crates.io.
      
      Using the staging- prefix is a temp fix until we decide on replacement names.
      https://forum.parity.io/t/renaming-squated-crates-in-substrate-polkadot-cumulus/1964/6
      
      * Fix test after crate renames
      
      * Update Lockfile
      31c79470
  13. Aug 29, 2023
  14. Aug 28, 2023
  15. Aug 25, 2023
  16. Aug 23, 2023
    • juangirini's avatar
      Companion: restructure macro related exports (#7626) · c4aa18c4
      juangirini authored
      * move RuntimeDebug out of frame_support
      
      * move RuntimeDebug out of frame_support
      
      * fix xcm export
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * fix xcm intefration tests
      
      * fix cargo lock for xcm intefration tests
      
      * wip
      
      * restructure benchmarking macro related exports
      
      * update cargo lock
      
      ---------
      
      Co-authored-by: parity-processbot <>
      c4aa18c4
  17. Aug 16, 2023
  18. Aug 14, 2023
  19. Aug 04, 2023
  20. Jul 14, 2023
    • juangirini's avatar
      Replace Index for Nonce (#7374) · b95cc76d
      juangirini authored
      * replace Index for Nonce
      
      * remove extra Nonce
      
      * update lockfile for {"substrate"}
      
      ---------
      
      Co-authored-by: parity-processbot <>
      b95cc76d
  21. Jul 13, 2023
    • gupnik's avatar
      Moves `Block` to `frame_system` instead of `construct_runtime` and removes... · 28024144
      gupnik authored
      
      Moves `Block` to `frame_system` instead of `construct_runtime` and removes `Header` and `BlockNumber` (#7431)
      
      * Companion for substrate
      
      * Minor update
      
      * Formatting
      
      * Fixes for cumulus
      
      * Fixes tests in polkadot-runtime-parachains
      
      * Minor update
      
      * Removes unused import
      
      * Fixes tests in polkadot-runtime-common
      
      * Minor fix
      
      * Update roadmap/implementers-guide/src/runtime/configuration.md
      
      Co-authored-by: default avatarordian <[email protected]>
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * update lockfile for {"substrate"}
      
      ---------
      
      Co-authored-by: default avatarordian <[email protected]>
      Co-authored-by: command-bot <>
      28024144
  22. Jul 12, 2023
  23. Jun 28, 2023
  24. Jun 21, 2023
  25. Jun 05, 2023
    • Keith Yeung's avatar
      Implement AliasOrigin processing in XCVM (#7245) · f2fe05a7
      Keith Yeung authored
      
      
      * Implement AliasOrigin processing in XCVM
      
      * add builder types and first test
      
      * switch to more general builder types
      
      * clone target for RemovePrefixAccountId32
      
      * change builder types
      
      * change AliasForeignAccountId32 and add test for AliasCase
      
      * add Aliasers type to xcm configs
      
      * add benchmark
      
      * benchmark fix
      
      * add benchmark function for runtimes
      
      * fix alias_origin result types
      
      * fix benchmark test
      
      * add runtime-benchmarks feature in pallet-xcm-benchmarks
      
      * fmt
      
      * remove AliasCase, add test and fmt
      
      * address feedback
      
      * ".git/.scripts/commands/bench/bench.sh" xcm kusama pallet_xcm_benchmarks::generic
      
      * ".git/.scripts/commands/bench/bench.sh" xcm westend pallet_xcm_benchmarks::generic
      
      * ".git/.scripts/commands/bench/bench.sh" xcm rococo pallet_xcm_benchmarks::generic
      
      * address feedback
      
      * lock
      
      * ".git/.scripts/commands/bench/bench.sh" xcm kusama pallet_xcm_benchmarks::generic
      
      * ".git/.scripts/commands/bench/bench.sh" xcm westend pallet_xcm_benchmarks::generic
      
      * ".git/.scripts/commands/bench/bench.sh" xcm rococo pallet_xcm_benchmarks::generic
      
      * change doc
      
      * fmt
      
      ---------
      
      Co-authored-by: default avatarJust van Stam <[email protected]>
      Co-authored-by: default avatarJust van Stam <[email protected]>
      Co-authored-by: command-bot <>
      f2fe05a7
    • Gavin Wood's avatar
      XCM: Remove & replace XCM `Convert` trait (#7329) · c8f9b1b7
      Gavin Wood authored
      
      
      * Introduce an extensible location-to-hash-account
      
      * Convert becomes RevFallRefConvert
      
      * Use ConvertLocation trait
      
      * Remove Convert usage
      
      * Builds
      
      * Fix warnings
      
      * Remove unused types
      
      * Bump lock
      
      * No need for aliasing
      
      * Remove unused
      
      * Deprecate legacy conversion
      
      * Fixes
      
      * Fixes
      
      * Update Cargo.toml
      
      Co-authored-by: default avatarMuharem Ismailov <[email protected]>
      
      * Update xcm/xcm-builder/src/location_conversion.rs
      
      Co-authored-by: default avatarLiam Aharon <[email protected]>
      
      * Update xcm/xcm-builder/src/location_conversion.rs
      
      Co-authored-by: default avatarLiam Aharon <[email protected]>
      
      * Update xcm/xcm-builder/src/location_conversion.rs
      
      Co-authored-by: default avatarLiam Aharon <[email protected]>
      
      * Update xcm/xcm-builder/src/location_conversion.rs
      
      Co-authored-by: default avatarLiam Aharon <[email protected]>
      
      * Update xcm/xcm-builder/src/location_conversion.rs
      
      Co-authored-by: default avatarLiam Aharon <[email protected]>
      
      * Update xcm/xcm-builder/src/location_conversion.rs
      
      Co-authored-by: default avatarLiam Aharon <[email protected]>
      
      ---------
      
      Co-authored-by: default avatarMuharem Ismailov <[email protected]>
      Co-authored-by: default avatarLiam Aharon <[email protected]>
      c8f9b1b7
  26. May 26, 2023
  27. May 24, 2023
    • Bastian Köcher's avatar
      Companion: Substrate#13869 (#7119) · 28de4f13
      Bastian Köcher authored
      * Companion: Substrate#13869
      
      https://github.com/paritytech/substrate/pull/13869
      
      * update lockfile for {"substrate"}
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      ---------
      
      Co-authored-by: parity-processbot <>
      28de4f13
  28. May 21, 2023
  29. May 19, 2023
  30. May 05, 2023
    • Muharem Ismailov's avatar
      XCM remote lock consumers (#6947) · 245305be
      Muharem Ismailov authored
      * xcm remote lock consumers
      
      * update xcm pallet config setups
      
      * fix import
      
      * update xcm pallet config setups
      
      * rename consumers to users
      
      * rename
      
      * rename users to consumers, more docs
      
      * correct doc
      
      ---------
      
      Co-authored-by: parity-processbot <>
      245305be
  31. Apr 12, 2023
  32. Apr 08, 2023
  33. Mar 23, 2023
  34. Mar 20, 2023
  35. Mar 13, 2023
    • Vivek Pandya's avatar
      Remove use of Store trait (#6835) · 87db25ce
      Vivek Pandya authored
      * Remove use of Store trait from runtime directory
      
      * Remove Store trait usage from xcm directory
      
      * Run cargo fmt
      
      * update lockfile for {"substrate"}
      
      ---------
      
      Co-authored-by: parity-processbot <>
      87db25ce
  36. Mar 02, 2023