Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

Commit 977be8a

Browse files
KiChjangslumber
authored andcommitted
Use new MultiLocation syntax everywhere (#570)
* Use new MultiLocation syntax everywhere * Make tests compile
1 parent d6aa33f commit 977be8a

File tree

13 files changed

+358
-324
lines changed

13 files changed

+358
-324
lines changed

Cargo.lock

+319-285
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pallets/dmp-queue/src/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ use cumulus_primitives_core::relay_chain::BlockNumber as RelayBlockNumber;
2626
use cumulus_primitives_core::DmpMessageHandler;
2727
use codec::{Encode, Decode};
2828
use sp_runtime::RuntimeDebug;
29-
use xcm::{VersionedXcm, latest::{Xcm, Junction, Outcome, ExecuteXcm, Error as XcmError}};
29+
use xcm::{VersionedXcm, latest::{Xcm, Outcome, Parent, ExecuteXcm, Error as XcmError}};
3030
use frame_support::{traits::EnsureOrigin, dispatch::Weight, weights::constants::WEIGHT_PER_MILLIS};
3131
pub use pallet::*;
3232

@@ -245,7 +245,7 @@ pub mod pallet {
245245
Ok(0)
246246
},
247247
Ok(Ok(x)) => {
248-
let outcome = T::XcmExecutor::execute_xcm(Junction::Parent.into(), x, limit);
248+
let outcome = T::XcmExecutor::execute_xcm(Parent.into(), x, limit);
249249
match outcome {
250250
Outcome::Error(XcmError::WeightLimitReached(required)) => Err((id, required)),
251251
outcome => {

pallets/xcm/src/lib.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use cumulus_primitives_core::{ParaId, DmpMessageHandler};
2525
use cumulus_primitives_core::relay_chain::BlockNumber as RelayBlockNumber;
2626
use codec::{Encode, Decode};
2727
use sp_runtime::traits::BadOrigin;
28-
use xcm::{VersionedXcm, latest::{Xcm, Junction, Outcome, ExecuteXcm}};
28+
use xcm::{VersionedXcm, latest::{Xcm, Outcome, Parent, ExecuteXcm}};
2929
use frame_support::dispatch::Weight;
3030
pub use pallet::*;
3131

@@ -118,7 +118,7 @@ impl<T: Config> DmpMessageHandler for UnlimitedDmpExecution<T> {
118118
Err(_) => Pallet::<T>::deposit_event(Event::InvalidFormat(id)),
119119
Ok(Err(())) => Pallet::<T>::deposit_event(Event::UnsupportedVersion(id)),
120120
Ok(Ok(x)) => {
121-
let outcome = T::XcmExecutor::execute_xcm(Junction::Parent.into(), x, limit);
121+
let outcome = T::XcmExecutor::execute_xcm(Parent.into(), x, limit);
122122
used += outcome.weight_used();
123123
Pallet::<T>::deposit_event(Event::ExecutedDownward(id, outcome));
124124
}
@@ -149,7 +149,7 @@ impl<T: Config> DmpMessageHandler for LimitAndDropDmpExecution<T> {
149149
Ok(Err(())) => Pallet::<T>::deposit_event(Event::UnsupportedVersion(id)),
150150
Ok(Ok(x)) => {
151151
let weight_limit = limit.saturating_sub(used);
152-
let outcome = T::XcmExecutor::execute_xcm(Junction::Parent.into(), x, weight_limit);
152+
let outcome = T::XcmExecutor::execute_xcm(Parent.into(), x, weight_limit);
153153
used += outcome.weight_used();
154154
Pallet::<T>::deposit_event(Event::ExecutedDownward(id, outcome));
155155
}

pallets/xcmp-queue/src/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ impl<T: Config> Pallet<T> {
351351
log::debug!("Processing XCMP-XCM: {:?}", &hash);
352352
let (result, event) = match Xcm::<T::Call>::try_from(xcm) {
353353
Ok(xcm) => {
354-
let location = (Parent, Parachain(sender.into()));
354+
let location = (1, Parachain(sender.into()));
355355
match T::XcmExecutor::execute_xcm(location.into(), xcm, max_weight) {
356356
Outcome::Error(e) => (Err(e.clone()), Event::Fail(Some(hash), e)),
357357
Outcome::Complete(w) => (Ok(w), Event::Success(Some(hash))),
@@ -777,7 +777,7 @@ impl<T: Config> SendXcm for Pallet<T> {
777777
fn send_xcm(dest: MultiLocation, msg: Xcm<()>) -> Result<(), XcmError> {
778778
match &dest {
779779
// An HRMP message for a sibling parachain.
780-
X2(Parent, Parachain(id)) => {
780+
MultiLocation { parents: 1, interior: X1(Parachain(id)) } => {
781781
let versioned_xcm = T::VersionWrapper::wrap_version(&dest, msg)
782782
.map_err(|()| XcmError::DestinationUnsupported)?;
783783
let hash = T::Hashing::hash_of(&versioned_xcm);

pallets/xcmp-queue/src/mock.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ impl cumulus_pallet_parachain_system::Config for Test {
104104
}
105105

106106
parameter_types! {
107-
pub const RelayChain: MultiLocation = X1(Parent);
108-
pub Ancestry: MultiLocation = X1(Parachain(1u32.into()));
107+
pub const RelayChain: MultiLocation = MultiLocation::parent();
108+
pub Ancestry: MultiLocation = X1(Parachain(1u32.into())).into();
109109
pub UnitWeightCost: Weight = 1_000_000;
110110
}
111111

polkadot-parachains/pallets/ping/src/lib.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use sp_runtime::traits::Saturating;
2323
use frame_system::Config as SystemConfig;
2424
use cumulus_primitives_core::ParaId;
2525
use cumulus_pallet_xcm::{Origin as CumulusOrigin, ensure_sibling_para};
26-
use xcm::latest::{Xcm, Error as XcmError, SendXcm, OriginKind, MultiLocation, Junction};
26+
use xcm::latest::{Xcm, Error as XcmError, SendXcm, OriginKind, Junction};
2727

2828
pub use pallet::*;
2929

@@ -101,7 +101,7 @@ pub mod pallet {
101101
for (para, payload) in Targets::<T>::get().into_iter() {
102102
let seq = PingCount::<T>::mutate(|seq| { *seq += 1; *seq });
103103
match T::XcmSender::send_xcm(
104-
MultiLocation::X2(Junction::Parent, Junction::Parachain(para.into())),
104+
(1, Junction::Parachain(para.into())).into(),
105105
Xcm::Transact {
106106
origin_type: OriginKind::Native,
107107
require_weight_at_most: 1_000,
@@ -163,7 +163,7 @@ pub mod pallet {
163163

164164
Self::deposit_event(Event::Pinged(para, seq, payload.clone()));
165165
match T::XcmSender::send_xcm(
166-
MultiLocation::X2(Junction::Parent, Junction::Parachain(para.into())),
166+
(1, Junction::Parachain(para.into())).into(),
167167
Xcm::Transact {
168168
origin_type: OriginKind::Native,
169169
require_weight_at_most: 1_000,

polkadot-parachains/rococo/src/lib.rs

+5-4
Original file line numberDiff line numberDiff line change
@@ -257,10 +257,10 @@ impl parachain_info::Config for Runtime {}
257257
impl cumulus_pallet_aura_ext::Config for Runtime {}
258258

259259
parameter_types! {
260-
pub const RocLocation: MultiLocation = X1(Parent);
260+
pub const RocLocation: MultiLocation = MultiLocation::parent();
261261
pub const RococoNetwork: NetworkId = NetworkId::Polkadot;
262262
pub RelayChainOrigin: Origin = cumulus_pallet_xcm::Origin::Relay.into();
263-
pub Ancestry: MultiLocation = X1(Parachain(ParachainInfo::parachain_id().into()));
263+
pub Ancestry: MultiLocation = Parachain(ParachainInfo::parachain_id().into()).into();
264264
}
265265

266266
/// Type for specifying how a `MultiLocation` can be converted into an `AccountId`. This is used
@@ -317,12 +317,13 @@ parameter_types! {
317317
// One XCM operation is 1_000_000 weight - almost certainly a conservative estimate.
318318
pub UnitWeightCost: Weight = 1_000_000;
319319
// One ROC buys 1 second of weight.
320-
pub const WeightPrice: (MultiLocation, u128) = (X1(Parent), ROC);
320+
pub const WeightPrice: (MultiLocation, u128) = (MultiLocation::parent(), ROC);
321321
}
322322

323323
match_type! {
324324
pub type ParentOrParentsUnitPlurality: impl Contains<MultiLocation> = {
325-
X1(Parent) | X2(Parent, Plurality { id: BodyId::Unit, .. })
325+
MultiLocation { parents: 1, interior: Here } |
326+
MultiLocation { parents: 1, interior: X1(Plurality { id: BodyId::Unit, .. }) }
326327
};
327328
}
328329

polkadot-parachains/shell/src/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ impl cumulus_pallet_parachain_system::Config for Runtime {
172172
impl parachain_info::Config for Runtime {}
173173

174174
parameter_types! {
175-
pub const RococoLocation: MultiLocation = X1(Parent);
175+
pub const RococoLocation: MultiLocation = MultiLocation::parent();
176176
pub const RococoNetwork: NetworkId = NetworkId::Polkadot;
177177
pub Ancestry: MultiLocation = Parachain(ParachainInfo::parachain_id().into()).into();
178178
}
@@ -191,7 +191,7 @@ pub type XcmOriginToTransactDispatchOrigin = (
191191
);
192192

193193
match_type! {
194-
pub type JustTheParent: impl Contains<MultiLocation> = { X1(Parent) };
194+
pub type JustTheParent: impl Contains<MultiLocation> = { MultiLocation { parents:1, interior: Here } };
195195
}
196196

197197
parameter_types! {

polkadot-parachains/statemine/src/lib.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,7 @@ impl parachain_info::Config for Runtime {}
464464
impl cumulus_pallet_aura_ext::Config for Runtime {}
465465

466466
parameter_types! {
467-
pub const KsmLocation: MultiLocation = X1(Parent);
467+
pub const KsmLocation: MultiLocation = MultiLocation::parent();
468468
pub const RelayNetwork: NetworkId = NetworkId::Kusama;
469469
pub RelayChainOrigin: Origin = cumulus_pallet_xcm::Origin::Relay.into();
470470
pub Ancestry: MultiLocation = Parachain(ParachainInfo::parachain_id().into()).into();
@@ -527,8 +527,8 @@ parameter_types! {
527527

528528
match_type! {
529529
pub type ParentOrParentsExecutivePlurality: impl Contains<MultiLocation> = {
530-
X1(Parent) |
531-
X2(Parent, Plurality { id: BodyId::Executive, .. })
530+
MultiLocation { parents: 1, interior: Here } |
531+
MultiLocation { parents: 1, interior: X1(Plurality { id: BodyId::Executive, .. }) }
532532
};
533533
}
534534

polkadot-parachains/statemint/src/lib.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,7 @@ impl parachain_info::Config for Runtime {}
432432
impl cumulus_pallet_aura_ext::Config for Runtime {}
433433

434434
parameter_types! {
435-
pub const DotLocation: MultiLocation = X1(Parent);
435+
pub const DotLocation: MultiLocation = MultiLocation::parent();
436436
pub const RelayNetwork: NetworkId = NetworkId::Polkadot;
437437
pub RelayChainOrigin: Origin = cumulus_pallet_xcm::Origin::Relay.into();
438438
pub Ancestry: MultiLocation = Parachain(ParachainInfo::parachain_id().into()).into();
@@ -495,8 +495,8 @@ parameter_types! {
495495

496496
match_type! {
497497
pub type ParentOrParentsExecutivePlurality: impl Contains<MultiLocation> = {
498-
X1(Parent) |
499-
X2(Parent, Plurality { id: BodyId::Executive, .. })
498+
MultiLocation { parents: 1, interior: Here } |
499+
MultiLocation { parents: 1, interior: X1(Plurality { id: BodyId::Executive, .. }) }
500500
};
501501
}
502502

polkadot-parachains/westmint/src/lib.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ impl parachain_info::Config for Runtime {}
431431
impl cumulus_pallet_aura_ext::Config for Runtime {}
432432

433433
parameter_types! {
434-
pub const WestendLocation: MultiLocation = X1(Parent);
434+
pub const WestendLocation: MultiLocation = MultiLocation::parent();
435435
pub RelayNetwork: NetworkId = NetworkId::Named(b"Westend".to_vec());
436436
pub RelayChainOrigin: Origin = cumulus_pallet_xcm::Origin::Relay.into();
437437
pub Ancestry: MultiLocation = Parachain(ParachainInfo::parachain_id().into()).into();
@@ -493,8 +493,8 @@ parameter_types! {
493493

494494
match_type! {
495495
pub type ParentOrParentsPlurality: impl Contains<MultiLocation> = {
496-
X1(Parent) |
497-
X2(Parent, Plurality { .. })
496+
MultiLocation { parents: 1, interior: Here } |
497+
MultiLocation { parents: 1, interior: X1(Plurality { .. }) }
498498
};
499499
}
500500

primitives/utility/src/lib.rs

+9-10
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,19 @@ use xcm::{WrapVersion, latest::prelude::*};
3434
pub struct ParentAsUmp<T, W>(PhantomData<(T, W)>);
3535
impl<T: UpwardMessageSender, W: WrapVersion> SendXcm for ParentAsUmp<T, W> {
3636
fn send_xcm(dest: MultiLocation, msg: Xcm<()>) -> Result<(), XcmError> {
37-
match &dest {
37+
if dest.contains_parents_only(1) {
3838
// An upward message for the relay chain.
39-
X1(Parent) => {
40-
let versioned_xcm = W::wrap_version(&dest, msg)
41-
.map_err(|()| XcmError::DestinationUnsupported)?;
42-
let data = versioned_xcm.encode();
39+
let versioned_xcm = W::wrap_version(&dest, msg)
40+
.map_err(|()| XcmError::DestinationUnsupported)?;
41+
let data = versioned_xcm.encode();
4342

44-
T::send_upward_message(data)
45-
.map_err(|e| XcmError::SendFailed(e.into()))?;
43+
T::send_upward_message(data)
44+
.map_err(|e| XcmError::SendFailed(e.into()))?;
4645

47-
Ok(())
48-
}
46+
Ok(())
47+
} else {
4948
// Anything else is unhandled. This includes a message this is meant for us.
50-
_ => Err(XcmError::CannotReachDestination(dest, msg)),
49+
Err(XcmError::CannotReachDestination(dest, msg))
5150
}
5251
}
5352
}

test/service/src/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ pub use sc_executor::NativeExecutor;
3636
use sc_network::{config::TransportConfig, multiaddr, NetworkService};
3737
use sc_service::{
3838
config::{
39-
DatabaseConfig, KeepBlocks, KeystoreConfig, MultiaddrWithPeerId, NetworkConfiguration,
39+
DatabaseSource, KeepBlocks, KeystoreConfig, MultiaddrWithPeerId, NetworkConfiguration,
4040
OffchainWorkerConfig, PruningMode, TransactionStorageMode, WasmExecutionMethod,
4141
},
4242
BasePath, ChainSpec, Configuration, Error as ServiceError, PartialComponents, Role,
@@ -600,7 +600,7 @@ pub fn node_config(
600600
network: network_config,
601601
keystore: KeystoreConfig::InMemory,
602602
keystore_remote: Default::default(),
603-
database: DatabaseConfig::RocksDb {
603+
database: DatabaseSource::RocksDb {
604604
path: root.join("db"),
605605
cache_size: 128,
606606
},

0 commit comments

Comments
 (0)