diff --git a/cumulus/polkadot-parachains/rococo-parachain/src/lib.rs b/cumulus/polkadot-parachains/rococo-parachain/src/lib.rs index cbe8dab5cc..6135dd55aa 100644 --- a/cumulus/polkadot-parachains/rococo-parachain/src/lib.rs +++ b/cumulus/polkadot-parachains/rococo-parachain/src/lib.rs @@ -312,7 +312,7 @@ pub type FungiblesTransactor = FungiblesAdapter< ConvertedConcreteAssetId< AssetId, u64, - AsPrefixedGeneralIndex, + AsPrefixedGeneralIndex, JustTry, >, // Convert an XCM MultiLocation into a local account id: @@ -386,6 +386,10 @@ pub type Barrier = ( parameter_types! { pub StatemintLocation: MultiLocation = MultiLocation::new(1, X1(Parachain(1000))); + // ALWAYS ensure that the index in PalletInstance stays up-to-date with + // Statemint's Assets pallet index + pub StatemintAssetsPalletLocation: MultiLocation = + MultiLocation::new(1, X2(Parachain(1000), PalletInstance(50))); } pub type Reserves = (NativeAsset, AssetsFrom); diff --git a/cumulus/polkadot-parachains/statemine/src/lib.rs b/cumulus/polkadot-parachains/statemine/src/lib.rs index 9deb4053b6..685c54505a 100644 --- a/cumulus/polkadot-parachains/statemine/src/lib.rs +++ b/cumulus/polkadot-parachains/statemine/src/lib.rs @@ -43,7 +43,7 @@ use codec::{Decode, Encode, MaxEncodedLen}; use constants::{currency::*, fee::WeightToFee}; use frame_support::{ construct_runtime, match_type, parameter_types, - traits::{EnsureOneOf, Everything, InstanceFilter, Nothing}, + traits::{EnsureOneOf, Everything, InstanceFilter, Nothing, PalletInfoAccess}, weights::{ constants::{BlockExecutionWeight, ExtrinsicBaseWeight}, DispatchClass, IdentityFee, Weight, @@ -432,6 +432,8 @@ parameter_types! { pub RelayChainOrigin: Origin = cumulus_pallet_xcm::Origin::Relay.into(); pub Ancestry: MultiLocation = Parachain(ParachainInfo::parachain_id().into()).into(); pub const Local: MultiLocation = Here.into(); + pub AssetsPalletLocation: MultiLocation = + PalletInstance(::index() as u8).into(); pub CheckingAccount: AccountId = PolkadotXcm::check_account(); } @@ -469,7 +471,7 @@ pub type FungiblesTransactor = FungiblesAdapter< ConvertedConcreteAssetId< AssetId, Balance, - AsPrefixedGeneralIndex, + AsPrefixedGeneralIndex, JustTry, >, // Convert an XCM MultiLocation into a local account id: diff --git a/cumulus/polkadot-parachains/statemint/src/lib.rs b/cumulus/polkadot-parachains/statemint/src/lib.rs index 69be4b9759..b6575f6d63 100644 --- a/cumulus/polkadot-parachains/statemint/src/lib.rs +++ b/cumulus/polkadot-parachains/statemint/src/lib.rs @@ -43,7 +43,7 @@ use codec::{Decode, Encode, MaxEncodedLen}; use constants::{currency::*, fee::WeightToFee}; use frame_support::{ construct_runtime, match_type, parameter_types, - traits::{Contains, EnsureOneOf, Everything, InstanceFilter, Nothing}, + traits::{Contains, EnsureOneOf, Everything, InstanceFilter, Nothing, PalletInfoAccess}, weights::{ constants::{BlockExecutionWeight, ExtrinsicBaseWeight}, DispatchClass, IdentityFee, Weight, @@ -444,6 +444,8 @@ parameter_types! { pub RelayChainOrigin: Origin = cumulus_pallet_xcm::Origin::Relay.into(); pub Ancestry: MultiLocation = Parachain(ParachainInfo::parachain_id().into()).into(); pub const Local: MultiLocation = Here.into(); + pub AssetsPalletLocation: MultiLocation = + PalletInstance(::index() as u8).into(); pub CheckingAccount: AccountId = PolkadotXcm::check_account(); } @@ -481,7 +483,7 @@ pub type FungiblesTransactor = FungiblesAdapter< ConvertedConcreteAssetId< AssetId, Balance, - AsPrefixedGeneralIndex, + AsPrefixedGeneralIndex, JustTry, >, // Convert an XCM MultiLocation into a local account id: diff --git a/cumulus/polkadot-parachains/westmint/src/lib.rs b/cumulus/polkadot-parachains/westmint/src/lib.rs index 432106d5e1..0189445d19 100644 --- a/cumulus/polkadot-parachains/westmint/src/lib.rs +++ b/cumulus/polkadot-parachains/westmint/src/lib.rs @@ -43,7 +43,7 @@ use codec::{Decode, Encode, MaxEncodedLen}; use constants::{currency::*, fee::WeightToFee}; use frame_support::{ construct_runtime, match_type, parameter_types, - traits::{Everything, InstanceFilter}, + traits::{Everything, InstanceFilter, PalletInfoAccess}, weights::{ constants::{BlockExecutionWeight, ExtrinsicBaseWeight}, DispatchClass, IdentityFee, Weight, @@ -430,6 +430,8 @@ parameter_types! { pub RelayChainOrigin: Origin = cumulus_pallet_xcm::Origin::Relay.into(); pub Ancestry: MultiLocation = Parachain(ParachainInfo::parachain_id().into()).into(); pub const Local: MultiLocation = Here.into(); + pub AssetsPalletLocation: MultiLocation = + PalletInstance(::index() as u8).into(); pub CheckingAccount: AccountId = PolkadotXcm::check_account(); } @@ -467,7 +469,7 @@ pub type FungiblesTransactor = FungiblesAdapter< ConvertedConcreteAssetId< AssetId, Balance, - AsPrefixedGeneralIndex, + AsPrefixedGeneralIndex, JustTry, >, // Convert an XCM MultiLocation into a local account id: