mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-31 05:11:02 +00:00
Make penpal-runtime's TrustedReserves more connfigurable (#3564)
The current `penpal` runtime utilizes the `EthereumLocation` parameter, which is employed for XCM emulated integration tests concerning the Rococo <> ETH bridge. It includes a hard-coded chainId for the Ethereum testnet utilized in Rococo. The `EthereumLocation` serves the purpose of aligning with the `TrustedReserves`. However, due to this hard-coded configuration, reusing `penpal` for testing various environments such as Kusama/Polkadot versus Ethereum bridge becomes unfeasible. This PR introduces the capability to easily customize the asset location for `TrustedReserves` without needing to know anything about Ethereum. ## TODO - [x] fix integration tests with `System::set_storage(CustomizableAssetFromSystemAssetHub::key(), <whatever-location-is-needed>)` @claravanstaden - [ ] ~~maybe add some helper function/macro to support `set_storage` for other runtimes (that we could reuse)~~ - [ ] Release patch for: `penpal-runtime` + emulated crate with `set_storage` support (if needed) - [ ] backport to 1.7.0 - [ ] backport to 1.8.0 --------- Co-authored-by: Clara van Staden <claravanstaden64@gmail.com>
This commit is contained in:
@@ -43,7 +43,6 @@ use pallet_xcm::XcmPassthrough;
|
||||
use polkadot_parachain_primitives::primitives::Sibling;
|
||||
use polkadot_runtime_common::impls::ToAuthor;
|
||||
use sp_runtime::traits::Zero;
|
||||
use testnet_parachains_constants::rococo::snowbridge::EthereumNetwork;
|
||||
use xcm::latest::prelude::*;
|
||||
use xcm_builder::{
|
||||
AccountId32Aliases, AllowExplicitUnpaidExecutionFrom, AllowKnownQueryResponses,
|
||||
@@ -295,7 +294,13 @@ parameter_types! {
|
||||
0,
|
||||
[xcm::v3::Junction::PalletInstance(50), xcm::v3::Junction::GeneralIndex(TELEPORTABLE_ASSET_ID.into())]
|
||||
);
|
||||
pub EthereumLocation: Location = Location::new(2, [GlobalConsensus(EthereumNetwork::get())]);
|
||||
|
||||
/// The Penpal runtime is utilized for testing with various environment setups.
|
||||
/// This storage item provides the opportunity to customize testing scenarios
|
||||
/// by configuring the trusted asset from the `SystemAssetHub`.
|
||||
///
|
||||
/// By default, it is configured as a `SystemAssetHubLocation` and can be modified using `System::set_storage`.
|
||||
pub storage CustomizableAssetFromSystemAssetHub: Location = SystemAssetHubLocation::get();
|
||||
}
|
||||
|
||||
/// Accepts asset with ID `AssetLocation` and is coming from `Origin` chain.
|
||||
@@ -310,11 +315,11 @@ impl<AssetLocation: Get<Location>, Origin: Get<Location>> ContainsPair<Asset, Lo
|
||||
}
|
||||
}
|
||||
|
||||
pub type Reserves = (
|
||||
pub type TrustedReserves = (
|
||||
NativeAsset,
|
||||
AssetsFrom<SystemAssetHubLocation>,
|
||||
NativeAssetFrom<SystemAssetHubLocation>,
|
||||
AssetPrefixFrom<EthereumLocation, SystemAssetHubLocation>,
|
||||
AssetPrefixFrom<CustomizableAssetFromSystemAssetHub, SystemAssetHubLocation>,
|
||||
);
|
||||
pub type TrustedTeleporters =
|
||||
(AssetFromChain<LocalTeleportableToAssetHub, SystemAssetHubLocation>,);
|
||||
@@ -326,7 +331,7 @@ impl xcm_executor::Config for XcmConfig {
|
||||
// How to withdraw and deposit an asset.
|
||||
type AssetTransactor = AssetTransactors;
|
||||
type OriginConverter = XcmOriginToTransactDispatchOrigin;
|
||||
type IsReserve = Reserves;
|
||||
type IsReserve = TrustedReserves;
|
||||
// no teleport trust established with other chains
|
||||
type IsTeleporter = TrustedTeleporters;
|
||||
type UniversalLocation = UniversalLocation;
|
||||
|
||||
Reference in New Issue
Block a user