From af4fb3e0791b4c75d6bb767f512bdb9396010481 Mon Sep 17 00:00:00 2001 From: zqh Date: Wed, 10 Nov 2021 17:52:01 +0800 Subject: [PATCH 1/5] send_as_sovereign as versioned xcm --- xcm/src/lib.rs | 18 +++++++++++++----- xtokens/src/tests.rs | 14 ++++++++------ 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/xcm/src/lib.rs b/xcm/src/lib.rs index b886094ba..25df21db9 100644 --- a/xcm/src/lib.rs +++ b/xcm/src/lib.rs @@ -7,13 +7,15 @@ use frame_support::{pallet_prelude::*, traits::EnsureOrigin}; use frame_system::pallet_prelude::*; use sp_std::boxed::Box; -use xcm::latest::prelude::*; +use xcm::prelude::*; pub use module::*; #[frame_support::pallet] pub mod module { use super::*; + use xcm::{VersionedMultiLocation, VersionedXcm}; + use sp_std::convert::{TryFrom, TryInto}; #[pallet::config] pub trait Config: frame_system::Config + pallet_xcm::Config { @@ -43,6 +45,9 @@ pub mod module { /// The message and destination was recognized as being reachable but /// the operation could not be completed. SendFailure, + /// The version of the `Versioned` value used is not able to be + /// interpreted. + BadVersion, } #[pallet::call] @@ -51,15 +56,18 @@ pub mod module { #[pallet::weight(100_000_000)] pub fn send_as_sovereign( origin: OriginFor, - dest: Box, - message: Box>, + dest: Box, + message: Box>, ) -> DispatchResult { let _ = T::SovereignOrigin::ensure_origin(origin)?; - pallet_xcm::Pallet::::send_xcm(Here, *dest.clone(), *message.clone()).map_err(|e| match e { + let dest = MultiLocation::try_from(*dest).map_err(|()| Error::::BadVersion)?; + let message: Xcm<()> = (*message).try_into().map_err(|()| Error::::BadVersion)?; + + pallet_xcm::Pallet::::send_xcm(Here, dest.clone(), message.clone()).map_err(|e| match e { SendError::CannotReachDestination(..) => Error::::Unreachable, _ => Error::::SendFailure, })?; - Self::deposit_event(Event::Sent(*dest, *message)); + Self::deposit_event(Event::Sent(dest, message)); Ok(()) } } diff --git a/xtokens/src/tests.rs b/xtokens/src/tests.rs index ba2540dfd..21bb4e701 100644 --- a/xtokens/src/tests.rs +++ b/xtokens/src/tests.rs @@ -369,8 +369,9 @@ fn send_as_sovereign() { let assets: MultiAsset = (Here, 1_000_000_000_000).into(); assert_ok!(para::OrmlXcm::send_as_sovereign( para::Origin::root(), - Box::new(MultiLocation::parent()), - Box::new(Xcm(vec![ + Box::new(Parent.into()), + Box::new(VersionedXcm::from( + Xcm(vec![ WithdrawAsset(assets.clone().into()), BuyExecution { fees: assets, @@ -381,7 +382,7 @@ fn send_as_sovereign() { require_weight_at_most: 1_000_000_000, call: call.encode().into(), } - ])) + ]))) )); }); @@ -412,8 +413,9 @@ fn send_as_sovereign_fails_if_bad_origin() { assert_err!( para::OrmlXcm::send_as_sovereign( para::Origin::signed(ALICE), - Box::new(MultiLocation::parent()), - Box::new(Xcm(vec![ + Box::new(Parent.into()), + Box::new(VersionedXcm::from( + Xcm(vec![ WithdrawAsset(assets.clone().into()), BuyExecution { fees: assets, @@ -424,7 +426,7 @@ fn send_as_sovereign_fails_if_bad_origin() { require_weight_at_most: 1_000_000_000, call: call.encode().into(), } - ])) + ]))) ), DispatchError::BadOrigin, ); From 38bfb6f33be6c348868850e6ab2d86ed45c242ca Mon Sep 17 00:00:00 2001 From: zqh Date: Wed, 10 Nov 2021 17:54:29 +0800 Subject: [PATCH 2/5] format --- xcm/src/lib.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/xcm/src/lib.rs b/xcm/src/lib.rs index 25df21db9..1375f9fde 100644 --- a/xcm/src/lib.rs +++ b/xcm/src/lib.rs @@ -6,16 +6,16 @@ use frame_support::{pallet_prelude::*, traits::EnsureOrigin}; use frame_system::pallet_prelude::*; use sp_std::boxed::Box; +use sp_std::convert::{TryFrom, TryInto}; -use xcm::prelude::*; +use xcm::latest::prelude::*; +use xcm::{VersionedMultiLocation, VersionedXcm}; pub use module::*; #[frame_support::pallet] pub mod module { use super::*; - use xcm::{VersionedMultiLocation, VersionedXcm}; - use sp_std::convert::{TryFrom, TryInto}; #[pallet::config] pub trait Config: frame_system::Config + pallet_xcm::Config { From 0c6eccaa9ee6fcd4dc9a2afe9d673ddf6d0ad2e9 Mon Sep 17 00:00:00 2001 From: zqh Date: Wed, 10 Nov 2021 19:38:25 +0800 Subject: [PATCH 3/5] format --- xcm/src/lib.rs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/xcm/src/lib.rs b/xcm/src/lib.rs index 1375f9fde..a9c43e03d 100644 --- a/xcm/src/lib.rs +++ b/xcm/src/lib.rs @@ -5,11 +5,8 @@ use frame_support::{pallet_prelude::*, traits::EnsureOrigin}; use frame_system::pallet_prelude::*; -use sp_std::boxed::Box; -use sp_std::convert::{TryFrom, TryInto}; - -use xcm::latest::prelude::*; -use xcm::{VersionedMultiLocation, VersionedXcm}; +use sp_std::{boxed::Box, convert::{TryFrom, TryInto}}; +use xcm::{latest::prelude::*, VersionedMultiLocation, VersionedXcm}; pub use module::*; From a6f7d06dccfbff788265b481660dc071d7b03be2 Mon Sep 17 00:00:00 2001 From: zqh Date: Thu, 11 Nov 2021 08:34:56 +0800 Subject: [PATCH 4/5] cargo fmt --- benchmarking/src/lib.rs | 2 +- xcm/src/lib.rs | 5 ++++- xtokens/src/tests.rs | 6 ++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/benchmarking/src/lib.rs b/benchmarking/src/lib.rs index bef64a653..eb9d275e5 100644 --- a/benchmarking/src/lib.rs +++ b/benchmarking/src/lib.rs @@ -657,7 +657,7 @@ macro_rules! benchmark_backend { // Every variant must implement [`BenchmarkingSetup`]. // // ```nocompile -// +// // struct Transfer; // impl BenchmarkingSetup for Transfer { ... } // diff --git a/xcm/src/lib.rs b/xcm/src/lib.rs index a9c43e03d..1334ef9ea 100644 --- a/xcm/src/lib.rs +++ b/xcm/src/lib.rs @@ -5,7 +5,10 @@ use frame_support::{pallet_prelude::*, traits::EnsureOrigin}; use frame_system::pallet_prelude::*; -use sp_std::{boxed::Box, convert::{TryFrom, TryInto}}; +use sp_std::{ + boxed::Box, + convert::{TryFrom, TryInto}, +}; use xcm::{latest::prelude::*, VersionedMultiLocation, VersionedXcm}; pub use module::*; diff --git a/xtokens/src/tests.rs b/xtokens/src/tests.rs index 21bb4e701..74a927d92 100644 --- a/xtokens/src/tests.rs +++ b/xtokens/src/tests.rs @@ -370,8 +370,7 @@ fn send_as_sovereign() { assert_ok!(para::OrmlXcm::send_as_sovereign( para::Origin::root(), Box::new(Parent.into()), - Box::new(VersionedXcm::from( - Xcm(vec![ + Box::new(VersionedXcm::from(Xcm(vec![ WithdrawAsset(assets.clone().into()), BuyExecution { fees: assets, @@ -414,8 +413,7 @@ fn send_as_sovereign_fails_if_bad_origin() { para::OrmlXcm::send_as_sovereign( para::Origin::signed(ALICE), Box::new(Parent.into()), - Box::new(VersionedXcm::from( - Xcm(vec![ + Box::new(VersionedXcm::from(Xcm(vec![ WithdrawAsset(assets.clone().into()), BuyExecution { fees: assets, From a8a5d066b1b5f36475a9fb200439ec6b01cfa24e Mon Sep 17 00:00:00 2001 From: zqh Date: Thu, 11 Nov 2021 09:25:45 +0800 Subject: [PATCH 5/5] cargo fmt --- benchmarking/src/lib.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/benchmarking/src/lib.rs b/benchmarking/src/lib.rs index eb9d275e5..5d147af06 100644 --- a/benchmarking/src/lib.rs +++ b/benchmarking/src/lib.rs @@ -657,7 +657,6 @@ macro_rules! benchmark_backend { // Every variant must implement [`BenchmarkingSetup`]. // // ```nocompile -// // struct Transfer; // impl BenchmarkingSetup for Transfer { ... } //