Skip to content
Merged
Show file tree
Hide file tree
Changes from 89 commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
31f7879
make docs for LocalOriginToLocation uniform across codebase
acatangiu Nov 1, 2024
7a0af10
pallet-xcm: add support for authorizing aliases
acatangiu Nov 1, 2024
879d48b
add stub weights
acatangiu Nov 6, 2024
9103e27
add benchmark code
acatangiu Nov 6, 2024
c29fc5d
add migration for authorized aliases
acatangiu Nov 6, 2024
e84293f
fix pallet-xcm authorized aliases
acatangiu Nov 6, 2024
0332aca
asset hub westend: add support for authorized aliases
acatangiu Nov 6, 2024
9447da4
Merge branch 'master' of github.com:paritytech/polkadot-sdk into auth…
acatangiu Nov 7, 2024
4611498
address comments and fix tests after rebase
acatangiu Nov 7, 2024
709cf3e
add prdoc
acatangiu Nov 7, 2024
200ccee
Merge branch 'master' of github.com:paritytech/polkadot-sdk into auth…
acatangiu Nov 7, 2024
35b4859
".git/.scripts/commands/bench/bench.sh" --subcommand=xcm --runtime=we…
Nov 7, 2024
79bfce2
".git/.scripts/commands/bench/bench.sh" --subcommand=xcm --runtime=ro…
Nov 7, 2024
673c3f6
".git/.scripts/commands/bench/bench.sh" --subcommand=xcm --runtime=as…
Nov 7, 2024
ac5d4a6
".git/.scripts/commands/bench/bench.sh" --subcommand=xcm --runtime=as…
Nov 7, 2024
70694dd
fix benchmarks
acatangiu Nov 7, 2024
61c8224
Update polkadot/xcm/pallet-xcm/src/benchmarking.rs
franciscoaguirre Nov 7, 2024
9d59105
Update polkadot/xcm/pallet-xcm/src/lib.rs
franciscoaguirre Nov 7, 2024
1b647db
Update polkadot/xcm/pallet-xcm/src/lib.rs
franciscoaguirre Nov 7, 2024
7b58df8
chore: change new_version to XCM_VERSION
franciscoaguirre Nov 7, 2024
8764367
Merge branch 'master' of github.com:paritytech/polkadot-sdk into auth…
acatangiu Nov 11, 2024
c239f8d
rename vars
acatangiu Nov 11, 2024
a606607
pallet-xcm: add expiry to authorized aliases
acatangiu Nov 12, 2024
b7ef64c
pallet-xcm: add storage deposit for authorized aliases
acatangiu Nov 12, 2024
40fcc27
Merge branch 'master' of github.com:paritytech/polkadot-sdk into auth…
acatangiu Jan 13, 2025
5bde333
fix conflicts
acatangiu Jan 13, 2025
4ed6e22
fix bugs, add tests
acatangiu Jan 14, 2025
8600075
remove alias auto-prune
acatangiu Jan 14, 2025
795e63e
define runtime APIs for authorized aliases
acatangiu Jan 14, 2025
4f35647
add events
acatangiu Jan 14, 2025
875c9ab
tweak prdoc
acatangiu Jan 14, 2025
327a2e1
remove debug prints
acatangiu Jan 14, 2025
af6abe8
fix import
acatangiu Jan 14, 2025
356c8f2
Merge branch 'master' of github.com:paritytech/polkadot-sdk into auth…
acatangiu Jan 14, 2025
29b0c0d
configure runtimes
acatangiu Jan 14, 2025
9792913
better configure runtimes
acatangiu Jan 16, 2025
31b5feb
implement runtime APIs
acatangiu Jan 16, 2025
825a4b4
fix test runtimes
acatangiu Jan 16, 2025
f2869b2
make runtime APIs truly versioned
acatangiu Jan 16, 2025
1d17ef4
fix tests
acatangiu Jan 16, 2025
bdd0f7b
Merge branch 'master' of github.com:paritytech/polkadot-sdk into auth…
acatangiu Jan 16, 2025
91e283a
fix clippy
acatangiu Jan 17, 2025
7056188
fix more test runtimes
acatangiu Jan 17, 2025
0a705ca
fix clippy
acatangiu Jan 17, 2025
caff17b
fix toml
acatangiu Jan 17, 2025
28b6989
fix benchmarks
acatangiu Jan 17, 2025
f434f45
fix prdoc
acatangiu Jan 17, 2025
ab80b6e
Merge branch 'master' of github.com:paritytech/polkadot-sdk into auth…
acatangiu Jan 17, 2025
a303dff
xcm-matcher: alias filter for remote account A to local account A
acatangiu Mar 20, 2025
a0207eb
people: add accounts aliasing test
acatangiu Mar 20, 2025
9fc747c
move test to macro for reuse
acatangiu Mar 20, 2025
c7505be
enhance macro, test multiple combinations
acatangiu Mar 21, 2025
76e2e69
implement aliasing rule for coretime and add tests
acatangiu Mar 21, 2025
d0489dd
implement aliasing rule for collectives and add tests
acatangiu Mar 21, 2025
bc42cd9
implement aliasing rule for asset hub and add tests
acatangiu Mar 21, 2025
fcfcd0a
implement aliasing rule for bridge hub and add tests
acatangiu Mar 21, 2025
561f67a
add more tests
acatangiu Mar 21, 2025
c4ba064
Merge branch 'master' of github.com:paritytech/polkadot-sdk into allo…
acatangiu Mar 21, 2025
0cb6362
add alias child locations tests
acatangiu Mar 24, 2025
74d6792
more aliasing tests
acatangiu Mar 24, 2025
97ceeb9
people: set identity for Alice on People using Alice on AH
acatangiu Mar 24, 2025
4d27dfe
Merge branch 'master' of github.com:paritytech/polkadot-sdk into allo…
acatangiu Mar 24, 2025
2bbd410
Update from github-actions[bot] running command 'prdoc --audience run…
github-actions[bot] Mar 25, 2025
4bd4ddb
fix clippy
acatangiu Mar 25, 2025
eed5e19
adjust prdoc
acatangiu Mar 25, 2025
c1115e7
Merge branch 'master' into allow-direct-account-alias-system-chains
acatangiu Mar 25, 2025
eaaac24
fix clippy
acatangiu Mar 25, 2025
2683b6d
Merge branch 'master' of github.com:paritytech/polkadot-sdk into auth…
acatangiu Mar 25, 2025
311bb9f
fix merge
acatangiu Mar 25, 2025
04bea27
fix prdoc
acatangiu Mar 25, 2025
ffea31e
report error on trying to remove inexistent alias
acatangiu Mar 25, 2025
519d79d
add call for removing all authorized aliases for origin
acatangiu Mar 25, 2025
f7f2ba9
Merge branch 'allow-direct-account-alias-system-chains' of github.com…
acatangiu Mar 26, 2025
44c9124
fix tests
acatangiu Mar 26, 2025
55027c4
Apply suggestions from code review
acatangiu Mar 26, 2025
32d8f29
Update from github-actions[bot] running command 'fmt'
github-actions[bot] Mar 26, 2025
2bdf6ad
fix test
acatangiu Mar 26, 2025
311d140
Merge branch 'master' of github.com:paritytech/polkadot-sdk into allo…
acatangiu Mar 26, 2025
9c54d3f
fix merge damage
acatangiu Mar 26, 2025
ec3c895
add tests for authorized aliases
acatangiu Mar 26, 2025
35a1ac6
Merge branch 'allow-direct-account-alias-system-chains' of github.com…
acatangiu Mar 26, 2025
331d658
add authorized aliases cross-chain tests
acatangiu Mar 27, 2025
61a938e
Merge branch 'master' of github.com:paritytech/polkadot-sdk into auth…
acatangiu Mar 28, 2025
5491a12
use proper relative AH location
acatangiu Mar 28, 2025
f0f228f
fix clippy
acatangiu Mar 28, 2025
c6ba54b
fix test
acatangiu Mar 28, 2025
8f534cd
fix benchmarks
acatangiu Mar 28, 2025
f6e93ff
fix tests
acatangiu Mar 28, 2025
a0e573a
Merge branch 'master' of github.com:paritytech/polkadot-sdk into auth…
acatangiu Mar 31, 2025
4712e33
fix licence
acatangiu Apr 2, 2025
203ee3d
Merge branch 'master' of github.com:paritytech/polkadot-sdk into auth…
acatangiu Apr 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -750,9 +750,9 @@ macro_rules! test_xcm_fee_querying_apis_work_for_asset_hub {
macro_rules! test_cross_chain_alias {
( vec![$( ($sender_para:ty, $receiver_para:ty, $is_teleport:expr, $expected_success:expr) ),+], $origin:expr, $target:expr, $fees:expr ) => {
$crate::macros::paste::paste! {
use xcm::latest::AssetTransferFilter;
$(
{
use xcm::latest::AssetTransferFilter;
let para_destination = <$sender_para>::sibling_location_of(<$receiver_para>::para_id());
let account: AccountId = $origin.clone().into();
$sender_para::fund_accounts(vec![(account.clone(), $fees * 10)]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ use emulated_integration_tests_common::{macros::AccountId, test_cross_chain_alia
use frame_support::{traits::ContainsPair, BoundedVec};
use xcm::latest::Junctions::*;

const ALLOWED: bool = true;
const DENIED: bool = false;

const TELEPORT_FEES: bool = true;
Expand All @@ -32,8 +33,8 @@ fn account_on_sibling_syschain_aliases_into_same_local_account() {
let target = origin.clone();
let fees = WESTEND_ED * 10;

PenpalA::mint_foreign_asset(
<PenpalA as Chain>::RuntimeOrigin::signed(PenpalAssetOwner::get()),
PenpalB::mint_foreign_asset(
<PenpalB as Chain>::RuntimeOrigin::signed(PenpalAssetOwner::get()),
Location::parent(),
origin.clone(),
fees * 10,
Expand All @@ -55,7 +56,7 @@ fn account_on_sibling_syschain_aliases_into_same_local_account() {
// between People and AH: denied
(PeopleWestend, AssetHubWestend, TELEPORT_FEES, DENIED),
// between Penpal and AH: denied
(PenpalA, AssetHubWestend, RESERVE_TRANSFER_FEES, DENIED)
(PenpalB, AssetHubWestend, RESERVE_TRANSFER_FEES, DENIED)
],
origin,
target,
Expand All @@ -70,8 +71,8 @@ fn account_on_sibling_syschain_cannot_alias_into_different_local_account() {
let target: AccountId = [2; 32].into();
let fees = WESTEND_ED * 10;

PenpalA::mint_foreign_asset(
<PenpalA as Chain>::RuntimeOrigin::signed(PenpalAssetOwner::get()),
PenpalB::mint_foreign_asset(
<PenpalB as Chain>::RuntimeOrigin::signed(PenpalAssetOwner::get()),
Location::parent(),
origin.clone(),
fees * 10,
Expand All @@ -89,7 +90,7 @@ fn account_on_sibling_syschain_cannot_alias_into_different_local_account() {
// between People and AH: denied
(PeopleWestend, AssetHubWestend, TELEPORT_FEES, DENIED),
// between Penpal and AH: denied
(PenpalA, AssetHubWestend, RESERVE_TRANSFER_FEES, DENIED)
(PenpalB, AssetHubWestend, RESERVE_TRANSFER_FEES, DENIED)
],
origin,
target,
Expand All @@ -100,82 +101,177 @@ fn account_on_sibling_syschain_cannot_alias_into_different_local_account() {
#[test]
fn aliasing_child_locations() {
use AssetHubWestendXcmConfig as XcmConfig;
// Allows aliasing descendant of origin.
let origin = Location::new(1, X1([PalletInstance(8)].into()));
let target = Location::new(1, X2([PalletInstance(8), GeneralIndex(9)].into()));
assert!(<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let origin = Location::new(1, X1([Parachain(8)].into()));
let target =
Location::new(1, X2([Parachain(8), AccountId32 { network: None, id: [1u8; 32] }].into()));
assert!(<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let origin = Location::new(1, X1([Parachain(8)].into()));
let target = Location::new(1, X3([Parachain(8), PalletInstance(8), GeneralIndex(9)].into()));
assert!(<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));

// Does not allow if not descendant.
let origin = Location::new(1, X1([PalletInstance(8)].into()));
let target = Location::new(0, X2([PalletInstance(8), GeneralIndex(9)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let origin = Location::new(1, X1([Parachain(8)].into()));
let target =
Location::new(0, X2([Parachain(8), AccountId32 { network: None, id: [1u8; 32] }].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let origin = Location::new(1, X1([Parachain(8)].into()));
let target = Location::new(0, X1([AccountId32 { network: None, id: [1u8; 32] }].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let origin = Location::new(1, X1([AccountId32 { network: None, id: [1u8; 32] }].into()));
let target = Location::new(0, X1([AccountId32 { network: None, id: [1u8; 32] }].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
AssetHubWestend::execute_with(|| {
// Allows aliasing descendant of origin.
let origin = Location::new(1, X1([PalletInstance(8)].into()));
let target = Location::new(1, X2([PalletInstance(8), GeneralIndex(9)].into()));
assert!(<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let origin = Location::new(1, X1([Parachain(8)].into()));
let target = Location::new(
1,
X2([Parachain(8), AccountId32 { network: None, id: [1u8; 32] }].into()),
);
assert!(<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let origin = Location::new(1, X1([Parachain(8)].into()));
let target =
Location::new(1, X3([Parachain(8), PalletInstance(8), GeneralIndex(9)].into()));
assert!(<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));

// Does not allow if not descendant.
let origin = Location::new(1, X1([PalletInstance(8)].into()));
let target = Location::new(0, X2([PalletInstance(8), GeneralIndex(9)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let origin = Location::new(1, X1([Parachain(8)].into()));
let target = Location::new(
0,
X2([Parachain(8), AccountId32 { network: None, id: [1u8; 32] }].into()),
);
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let origin = Location::new(1, X1([Parachain(8)].into()));
let target = Location::new(0, X1([AccountId32 { network: None, id: [1u8; 32] }].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let origin = Location::new(1, X1([AccountId32 { network: None, id: [1u8; 32] }].into()));
let target = Location::new(0, X1([AccountId32 { network: None, id: [1u8; 32] }].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
});
}

#[test]
fn asset_hub_root_aliases_anything() {
use AssetHubWestendXcmConfig as XcmConfig;
AssetHubWestend::execute_with(|| {
// Does not allow local/AH root to alias other (non-descendant) locations.
let origin = Location::new(0, Here);

let target = Location::new(1, X1([Parachain(2000)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let target = Location::new(1, X1([AccountId32 { network: None, id: [1u8; 32] }].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let target = Location::new(
1,
X2([Parachain(8), AccountId32 { network: None, id: [1u8; 32] }].into()),
);
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let target =
Location::new(1, X3([Parachain(42), PalletInstance(8), GeneralIndex(9)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let target = Location::new(2, X1([GlobalConsensus(Ethereum { chain_id: 1 })].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let target = Location::new(2, X2([GlobalConsensus(Polkadot), Parachain(1000)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let target = Location::new(1, X2([PalletInstance(8), GeneralIndex(9)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));

// Other AH locations cannot alias anything.
let origin = Location::new(1, X2([Parachain(1000), GeneralIndex(9)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let origin = Location::new(1, X2([Parachain(1000), PalletInstance(9)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let origin = Location::new(
1,
X2([Parachain(1000), AccountId32 { network: None, id: [1u8; 32] }].into()),
);
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));

// Does not allow local/AH root to alias other locations.
let origin = Location::new(1, X1([Parachain(1000)].into()));

let target = Location::new(1, X1([Parachain(2000)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let target = Location::new(1, X1([AccountId32 { network: None, id: [1u8; 32] }].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let target =
Location::new(1, X2([Parachain(8), AccountId32 { network: None, id: [1u8; 32] }].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let target = Location::new(1, X3([Parachain(42), PalletInstance(8), GeneralIndex(9)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let target = Location::new(2, X1([GlobalConsensus(Ethereum { chain_id: 1 })].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let target = Location::new(2, X2([GlobalConsensus(Polkadot), Parachain(1000)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let target = Location::new(0, X2([PalletInstance(8), GeneralIndex(9)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));

// Other AH locations cannot alias anything.
let origin = Location::new(1, X2([Parachain(1000), GeneralIndex(9)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let origin = Location::new(1, X2([Parachain(1000), PalletInstance(9)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let origin = Location::new(
1,
X2([Parachain(1000), AccountId32 { network: None, id: [1u8; 32] }].into()),
// Other root locations cannot alias anything.
let origin = Location::new(1, Here);
let target = Location::new(2, X1([GlobalConsensus(Ethereum { chain_id: 1 })].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let target = Location::new(2, X2([GlobalConsensus(Polkadot), Parachain(1000)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let target = Location::new(0, X2([PalletInstance(8), GeneralIndex(9)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));

let origin = Location::new(0, Here);
let target = Location::new(1, X1([Parachain(2000)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let origin = Location::new(1, X1([Parachain(1001)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let origin = Location::new(1, X1([Parachain(1002)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
});
}

#[test]
fn authorized_cross_chain_aliases() {
// origin and target are different accounts on different chains
let origin: AccountId = [100; 32].into();
let bad_origin: AccountId = [150; 32].into();
let target: AccountId = [200; 32].into();
let fees = WESTEND_ED * 10;

let pal_admin = <PenpalB as Chain>::RuntimeOrigin::signed(PenpalAssetOwner::get());
PenpalB::mint_foreign_asset(pal_admin.clone(), Location::parent(), origin.clone(), fees * 10);
PenpalB::mint_foreign_asset(pal_admin, Location::parent(), bad_origin.clone(), fees * 10);
AssetHubWestend::fund_accounts(vec![(target.clone(), fees * 10)]);

// let's authorize `origin` on Penpal to alias `target` on AssetHub
AssetHubWestend::execute_with(|| {
let penpal_origin = Location::new(
1,
X2([
Parachain(PenpalB::para_id().into()),
AccountId32 {
network: Some(ByGenesis(WESTEND_GENESIS_HASH)),
id: origin.clone().into(),
},
]
.into()),
);
// `target` adds `penpal_origin` as authorized alias
assert_ok!(<AssetHubWestend as AssetHubWestendPallet>::PolkadotXcm::add_authorized_alias(
<AssetHubWestend as Chain>::RuntimeOrigin::signed(target.clone()),
Box::new(penpal_origin.into()),
None
));
});
// Verify that unauthorized `bad_origin` cannot alias into `target`, from any chain.
test_cross_chain_alias!(
vec![
// between BH and AssetHub: denied
(BridgeHubWestend, AssetHubWestend, TELEPORT_FEES, DENIED),
// between Collectives and AssetHub: denied
(CollectivesWestend, AssetHubWestend, TELEPORT_FEES, DENIED),
// between People and AssetHub: denied
(PeopleWestend, AssetHubWestend, TELEPORT_FEES, DENIED),
// between Penpal and AssetHub: denied
(PenpalB, AssetHubWestend, RESERVE_TRANSFER_FEES, DENIED)
],
bad_origin,
target,
fees
);
// Verify that only authorized `penpal::origin` can alias into `target`, while `origin` on other
// chains cannot.
test_cross_chain_alias!(
vec![
// between BH and AssetHub: denied
(BridgeHubWestend, AssetHubWestend, TELEPORT_FEES, DENIED),
// between Collectives and AssetHub: denied
(CollectivesWestend, AssetHubWestend, TELEPORT_FEES, DENIED),
// between People and AssetHub: denied
(PeopleWestend, AssetHubWestend, TELEPORT_FEES, DENIED),
// between Penpal and AssetHub: allowed
(PenpalB, AssetHubWestend, RESERVE_TRANSFER_FEES, ALLOWED)
],
origin,
target,
fees
);
// remove authorization for `origin` on Penpal to alias `target` on AssetHub
AssetHubWestend::execute_with(|| {
// `target` removes all authorized aliases
assert_ok!(
<AssetHubWestend as AssetHubWestendPallet>::PolkadotXcm::remove_all_authorized_aliases(
<AssetHubWestend as Chain>::RuntimeOrigin::signed(target.clone())
)
);
});
// Verify `penpal::origin` can no longer alias into `target` on AssetHub.
test_cross_chain_alias!(
vec![(PenpalB, AssetHubWestend, RESERVE_TRANSFER_FEES, DENIED)],
origin,
target,
fees
);
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));

// Other root locations cannot alias anything.
let origin = Location::new(1, Here);
let target = Location::new(2, X1([GlobalConsensus(Ethereum { chain_id: 1 })].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let target = Location::new(2, X2([GlobalConsensus(Polkadot), Parachain(1000)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let target = Location::new(0, X2([PalletInstance(8), GeneralIndex(9)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));

let origin = Location::new(0, Here);
let target = Location::new(1, X1([Parachain(2000)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let origin = Location::new(1, X1([Parachain(1001)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
let origin = Location::new(1, X1([Parachain(1002)].into()));
assert!(!<XcmConfig as xcm_executor::Config>::Aliasers::contains(&origin, &target));
}
Loading
Loading