1. Apr 24, 2024
  2. Apr 12, 2024
    • Adrian Catangiu's avatar
      pallet-xcm: add new extrinsic for asset transfers using explicit XCM transfer types (#3695) · 1e971b8d
      Adrian Catangiu authored
      
      
      # Description
      
      Add `transfer_assets_using()` for transferring assets from local chain
      to destination chain using explicit XCM transfer types such as:
      - `TransferType::LocalReserve`: transfer assets to sovereign account of
      destination chain and forward a notification XCM to `dest` to mint and
      deposit reserve-based assets to `beneficiary`.
      - `TransferType::DestinationReserve`: burn local assets and forward a
      notification to `dest` chain to withdraw the reserve assets from this
      chain's sovereign account and deposit them to `beneficiary`.
      - `TransferType::RemoteReserve(reserve)`: burn local assets, forward XCM
      to `reserve` chain to move reserves from this chain's SA to `dest`
      chain's SA, and forward another XCM to `dest` to mint and deposit
      reserve-based assets to `beneficiary`. Typically the remote `reserve` is
      Asset Hub.
      - `TransferType::Teleport`: burn local assets and forward XCM to `dest`
      chain to mint/teleport assets and deposit them to `beneficiary`.
      
      By default, an asset's reserve is its origin chain. But sometimes we may
      want to explicitly use another chain as reserve (as long as allowed by
      runtime `IsReserve` filter).
      
      This is very helpful for transferring assets with multiple configured
      reserves (such as Asset Hub ForeignAssets), when the transfer strictly
      depends on the used reserve.
      
      E.g. For transferring Foreign Assets over a bridge, Asset Hub must be
      used as the reserve location.
      
      # Example usage scenarios
      
      ## Transfer bridged ethereum ERC20-tokenX between ecosystem parachains.
      
      ERC20-tokenX is registered on AssetHub as a ForeignAsset by the
      Polkadot<>Ethereum bridge (Snowbridge). Its asset_id is something like
      `(parents:2, (GlobalConsensus(Ethereum), Address(tokenX_contract)))`.
      Its _original_ reserve is Ethereum (only we can't use Ethereum as a
      reserve in local transfers); but, since tokenX is also registered on
      AssetHub as a ForeignAsset, we can use AssetHub as a reserve.
      
      With this PR we can transfer tokenX from ParaA to ParaB while using
      AssetHub as a reserve.
      
      ## Transfer AssetHub ForeignAssets between parachains
      
      AssetA created on ParaA but also registered as foreign asset on Asset
      Hub. Can use AssetHub as a reserve.
      
      And all of the above can be done while still controlling transfer type
      for `fees` so mixing assets in same transfer is supported.
      
      # Tests
      
      Added integration tests for showcasing:
      - transferring local (not bridged) assets from parachain over bridge
      using local Asset Hub reserve,
      - transferring foreign assets from parachain to Asset Hub,
      - transferring foreign assets from Asset Hub to parachain,
      - transferring foreign assets from parachain to parachain using local
      Asset Hub reserve.
      
      ---------
      
      Co-authored-by: default avatarBranislav Kontur <[email protected]>
      Co-authored-by: command-bot <>
      1e971b8d
  3. Mar 22, 2024
  4. Mar 14, 2024
    • Ignacio Palacios's avatar
      Improve Penpal runtime + emulated tests (#3543) · cfc4050d
      Ignacio Palacios authored
      Issues addressed in this PR:
      - Improve *Penpal* runtime:
      - Properly handled received assets. Previously, it treated `(1, Here)`
      as the local native currency, whereas it should be treated as a
      `ForeignAsset`. This wasn't a great example of standard Parachain
      behaviour, as no Parachain treats the system asset as the local
      currency.
      - Remove `AllowExplicitUnpaidExecutionFrom` the system. Again, this
      wasn't a great example of standard Parachain behaviour.
      - Move duplicated
      `ForeignAssetFeeAsExistentialDepositMultiplierFeeCharger` to
      `assets_common` crate.
      - Improve emulated tests:
        - Update *Penpal* tests to new runtime.
      - To simplify tests, register the reserve transferred, teleported, and
      system assets in *Penpal* and *AssetHub* genesis. This saves us from
      having to create the assets repeatedly for each test
      - Add missing test case:
      `reserve_transfer_assets_from_para_to_system_para`.
        - Cleanup.
      - Prevent integration tests crates imports from being re-exported, as
      they were polluting the `polkadot-sdk` docs.
      
      There is still a test case missing for reserve transfers:
      - Reserve transfer of system asset from *Parachain* to *Parachain*
      trough *AssetHub*.
      - This is not yet possible with `pallet-xcm` due to the reasons
      explained in https://github.com/paritytech/polkadot-sdk/pull/3339
      
      ---------
      
      Co-authored-by: command-bot <>
      cfc4050d
  5. Jan 31, 2024
  6. Jan 16, 2024
    • Francisco Aguirre's avatar
      XCMv4 (#1230) · 8428f678
      Francisco Aguirre authored
      
      
      # Note for reviewer
      
      Most changes are just syntax changes necessary for the new version.
      Most important files should be the ones under the `xcm` folder.
      
      # Description 
      
      Added XCMv4.
      
      ## Removed `Multi` prefix
      The following types have been renamed:
      - MultiLocation -> Location
      - MultiAsset -> Asset
      - MultiAssets -> Assets
      - InteriorMultiLocation -> InteriorLocation
      - MultiAssetFilter -> AssetFilter
      - VersionedMultiAsset -> VersionedAsset
      - WildMultiAsset -> WildAsset
      - VersionedMultiLocation -> VersionedLocation
      
      In order to fix a name conflict, the `Assets` in `xcm-executor` were
      renamed to `HoldingAssets`, as they represent assets in holding.
      
      ## Removed `Abstract` asset id
      
      It was not being used anywhere and this simplifies the code.
      
      Now assets are just constructed as follows:
      
      ```rust
      let asset: Asset = (AssetId(Location::new(1, Here)), 100u128).into();
      ```
      
      No need for specifying `Concrete` anymore.
      
      ## Outcome is now a named fields struct
      
      Instead of
      
      ```rust
      pub enum Outcome {
        Complete(Weight),
        Incomplete(Weight, Error),
        Error(Error),
      }
      ```
      
      we now have
      
      ```rust
      pub enum Outcome {
        Complete { used: Weight },
        Incomplete { used: Weight, error: Error },
        Error { error: Error },
      }
      ```
      
      ## Added Reanchorable trait
      
      Now both locations and assets implement this trait, making it easier to
      reanchor both.
      
      ## New syntax for building locations and junctions
      
      Now junctions are built using the following methods:
      
      ```rust
      let location = Location {
          parents: 1,
          interior: [Parachain(1000), PalletInstance(50), GeneralIndex(1984)].into()
      };
      ```
      
      or
      
      ```rust
      let location = Location::new(1, [Parachain(1000), PalletInstance(50), GeneralIndex(1984)]);
      ```
      
      And they are matched like so:
      
      ```rust
      match location.unpack() {
        (1, [Parachain(id)]) => ...
        (0, Here) => ...,
        (1, [_]) => ...,
      }
      ```
      
      This syntax is mandatory in v4, and has been also implemented for v2 and
      v3 for easier migration.
      
      This was needed to make all sizes smaller.
      
      # TODO
      - [x] Scaffold v4
      - [x] Port github.com/paritytech/polkadot/pull/7236
      - [x] Remove `Multi` prefix
      - [x] Remove `Abstract` asset id
      
      ---------
      
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarKeith Yeung <[email protected]>
      8428f678
  7. Dec 22, 2023
  8. 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
  9. Nov 27, 2023
  10. 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
  11. Nov 08, 2023
    • 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
  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
  13. Oct 16, 2023
  14. Sep 05, 2023
    • joe petrowski's avatar
      Move Relay-Specific Shared Code to One Place (#1193) · a1469180
      joe petrowski authored
      * add common libs
      
      * asset hubs
      
      * add westend
      
      * bridge hubs
      
      * collectives
      
      * contracts
      
      * emulated tests
      
      * parachain bin
      
      * delete collectives constants and update docs
      
      * integration tests should have apache license (some missing, some needed changing)
      
      * propagate features
      
      * fmt
      a1469180
  15. Sep 01, 2023
  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 10, 2023
    • Ignacio Palacios's avatar
      Replicate `e2e` integration test as `emulated` (#2958) · eadfbca3
      Ignacio Palacios authored
      
      
      * Allow functions to work over both parachains and relay chains
      
      * additional references
      
      * import
      
      * backup
      
      * refactoring para and relay traits
      
      * use runtime crates to build types
      
      * decouple ProcessMessage
      
      * decouple ProcessMessage 2
      
      * dmp and xcmp handlers decouple
      
      * backup
      
      * refactor done
      
      * common int values working
      
      * added global ext with mutex
      
      * works for two mutex
      
      * single mutex and remove condvar
      
      * global test ext done
      
      * failing moving test_ext because relay block num
      
      * relay_block_number issue fixed
      
      * backup
      
      * Test working with assertions
      
      * assertions get Test as arg
      
      * DispatchArgs as generic
      
      * clean up
      
      * backup
      
      * teleports for asset-hub-kusama done
      
      * improve assert_expected_events macro
      
      * rename Test generics
      
      * check assertions for tuples
      
      * test assertions redone
      
      * reserve_transfer_assets done
      
      * send transact done
      
      * hrmp test for paras
      
      * hrmp channels test done
      
      * hrmp channels test done 2
      
      * before modifying test dispatch
      
      * reserve tests done & Test dispatch fixed
      
      * reserve transfer local asset
      
      * force_create_and_mint_asset
      
      * force create and mint done
      
      * tests done
      
      * fix imports in common
      
      * common events refactored
      
      * add option to events attributes
      
      * asset-hub-polkadot tests done
      
      * asset-hub-westend half done
      
      * relay chain events move to common
      
      * remove failing send tests for asset-hub-westend
      
      * added events to bridge-hub-rococo
      
      * added events to collectives-polkadot
      
      * cargo clean up
      
      * fix asset-hub-westend tests
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * fix clippy
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Removed unnecessary deps
      
      * Extracted some commonality for Kusama/Polkadot (which will be reused also for BridgeHubs) (#2971)
      
      * Extracted some commonality for Kusama/Polkadot (which will be reused also for BridgeHubs)
      
      * AssetHubRococo should better use AssetHubKusama runtime
      
      * add fund_account
      
      ---------
      
      Co-authored-by: default avatarNachoPal <[email protected]>
      
      * address comments
      
      * rename event assertion helpers
      
      * clean comments
      
      * address comments 2
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      ---------
      
      Co-authored-by: default avatarGiles Cope <[email protected]>
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarBranislav Kontur <[email protected]>
      eadfbca3
  19. 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
  20. Jun 08, 2023
  21. Jun 02, 2023
    • Squirrel's avatar
      Support westend integration tests (#2649) · 7f2c7239
      Squirrel authored
      
      
      * mostly there with westend
      
      * add network
      
      * initial way to set host api version
      
      * 3 tests all passing
      
      * Remove duplication
      
      * fix runtime-benchmarks
      
      * Fix typo
      
      ---------
      
      Co-authored-by: default avatarjoepetrowski <[email protected]>
      7f2c7239
    • 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
  22. May 19, 2023
    • Roman Useinov's avatar
      [Feature] XCM-Emulator (#2447) · 944ab483
      Roman Useinov authored
      
      
      * [Feature] XCM-Emulator
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * rename
      
      * readme
      
      * more rename
      
      * rename directory
      
      * implement AssetTransactor
      
      * Update xcm/xcm-emulator/README.md
      
      Co-authored-by: default avatarMuharem Ismailov <[email protected]>
      
      * address review comments (#2502)
      
      * Update xcm/xcm-emulator/example/src/lib.rs
      
      Co-authored-by: default avatarjoe petrowski <[email protected]>
      
      * Update xcm/xcm-emulator/README.md
      
      * Use 2d weights.
      
      * Point out nearer the failure why it should fail
      
      * Move test-runtime to under examples
      
      * Walk through how to use it
      
      * proof needs to be non-zero
      
      * Apply suggestions from code review
      
      * Update xcm/xcm-emulator/README.md
      
      Co-authored-by: default avatarjoe petrowski <[email protected]>
      
      * Improve xcm emulator (#2593)
      
      * folder restructutre
      
      * common created
      
      * make macros repetitions
      
      * messenger traits for relay and para
      
      * default Messenger impls
      
      * messenger traits refactor
      
      * declared two networks
      
      * init network approach works
      
      * queues use HashMap but relay block number
      
      * init and reset refactor
      
      * messengers trait name changed
      
      * relay block number suboptimal
      
      * fix reset hashmap keys
      
      * genesis added
      
      * test ext added for parachains
      
      * genesis added relay chains
      
      * genesis to storage
      
      * new_ext replaced by on_init
      
      * new relay block number approach
      
      * ext_wrapper added
      
      * added types to Parachain trait
      
      * relay chain with types
      
      * restructure
      
      * para_ids working
      
      * replace para_id getter
      
      * replace para_id getter 2
      
      * tests restructure + common variables
      
      * added sovereign and balances helpers
      
      * more helpers + tess pass
      
      * expected events macro added
      
      * added events trait method
      
      * expect_events macro improve
      
      * expect_events macro done
      
      * network traits added
      
      * reserve_transfer test added
      
      * para & relay macro inputs redefined
      
      * added collectives & BH paras
      
      * test restructure
      
      * statemine removed
      
      * nitpick
      
      * rename test folder + events logs
      
      * clean
      
      * weight threshold helper
      
      * update readme
      
      * remove cumulus-test-service dependancy
      
      * fmt
      
      * comment docs
      
      * update e2e tests to xcm v3
      
      * clippy + runtime-benchmark + clean docs
      
      ---------
      
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarMuharem Ismailov <[email protected]>
      Co-authored-by: default avatarSquirrel <[email protected]>
      Co-authored-by: default avatarjoe petrowski <[email protected]>
      Co-authored-by: default avatarIgnacio Palacios <[email protected]>
      944ab483