mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 12:51:02 +00:00
XCM v1 (#2815)
* MultiAsset TWO * Draft next MultiAsset API. * XCM core builds * XCM Executor builds * XCM Builder builds * API changes making their way throughout * Some TODOs * Further build fixes * Basic compile builds * First test fixed * All executor tests fixed * Typo * Optimize subsume_assets and add test * Optimize checked_sub * XCM Builder first test fixed * Fix builder tests * Fix doc test * fix some doc tests * spelling * named fields for AllOf * Update xcm/src/v0/multiasset.rs Co-authored-by: Alexander Popiak <alexander.popiak@parity.io> * Update xcm/src/v0/multiasset.rs Co-authored-by: Alexander Popiak <alexander.popiak@parity.io> * Update xcm/src/v0/multiasset.rs Co-authored-by: Alexander Popiak <alexander.popiak@parity.io> * Update xcm/src/v0/multiasset.rs Co-authored-by: Alexander Popiak <alexander.popiak@parity.io> * Reformat * Move to XCM version 1 * Spelling * warnings * Replace some more v0->v1s * warnings * format * Add max_assets param * building * test fixes * tests * another test * final test * tests * Rename Null -> Here * Introduce * More ergonomics * More ergonomics * test fix * test fixes * docs * BuyExecution includes * Fix XCM extrinsics * fmt * Make Vec<MultiAsset>/MultiAssets conversions safe * More MultiAssets conversion safety * spelling * fix doc test * Apply suggestions from code review Co-authored-by: Amar Singh <asinghchrony@protonmail.com> * Apply suggestions from code review Co-authored-by: Amar Singh <asinghchrony@protonmail.com> * fmt * Add v0, remove VersionedMultiAsset * Remove VersionedMultiLocation * Update xcm/src/v1/order.rs Co-authored-by: Amar Singh <asinghchrony@protonmail.com> * Update xcm/src/v1/mod.rs Co-authored-by: Amar Singh <asinghchrony@protonmail.com> * XCM v0 backwards compatibility * Full compatibility * fmt * Update xcm/pallet-xcm/src/lib.rs * Update xcm/src/v0/order.rs Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com> * Tweaks to versioning system * Fixes * fmt * Update xcm/xcm-executor/src/assets.rs Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com> * Update xcm/xcm-executor/src/assets.rs Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com> * Grumbles * Update xcm/src/v1/multiasset.rs Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com> * fmt * Update xcm/src/v1/multiasset.rs Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com> * Update xcm/src/v1/multiasset.rs Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com> * Fixes * Formatting Co-authored-by: Alexander Popiak <alexander.popiak@parity.io> Co-authored-by: Amar Singh <asinghchrony@protonmail.com> Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
This commit is contained in:
@@ -18,8 +18,8 @@ use crate::mock::*;
|
||||
use frame_support::{assert_noop, assert_ok, traits::Currency};
|
||||
use polkadot_parachain::primitives::{AccountIdConversion, Id as ParaId};
|
||||
use xcm::{
|
||||
opaque::v0::prelude::*,
|
||||
v0::{Junction, Xcm},
|
||||
opaque::v1::prelude::*,
|
||||
v1::{Junction, Xcm},
|
||||
};
|
||||
|
||||
const ALICE: AccountId = AccountId::new([0u8; 32]);
|
||||
@@ -38,22 +38,19 @@ fn send_works() {
|
||||
new_test_ext_with_balances(balances).execute_with(|| {
|
||||
let weight = 2 * BaseXcmWeight::get();
|
||||
let sender: MultiLocation =
|
||||
Junction::AccountId32 { network: AnyNetwork::get(), id: ALICE.into() }.into();
|
||||
let message = Xcm::ReserveAssetDeposit {
|
||||
assets: vec![ConcreteFungible { id: Parent.into(), amount: SEND_AMOUNT }],
|
||||
AccountId32 { network: AnyNetwork::get(), id: ALICE.into() }.into();
|
||||
let message = Xcm::ReserveAssetDeposited {
|
||||
assets: (X1(Parent), SEND_AMOUNT).into(),
|
||||
effects: vec![
|
||||
buy_execution(
|
||||
weight,
|
||||
ConcreteFungible { id: MultiLocation::Null, amount: SEND_AMOUNT },
|
||||
),
|
||||
DepositAsset { assets: vec![All], dest: sender.clone() },
|
||||
buy_execution((Parent, SEND_AMOUNT), weight),
|
||||
DepositAsset { assets: All.into(), max_assets: 1, beneficiary: sender.clone() },
|
||||
],
|
||||
};
|
||||
assert_ok!(XcmPallet::send(Origin::signed(ALICE), RelayLocation::get(), message.clone()));
|
||||
assert_eq!(
|
||||
sent_xcm(),
|
||||
vec![(
|
||||
MultiLocation::Null,
|
||||
MultiLocation::Here,
|
||||
RelayedFrom { who: sender.clone(), message: Box::new(message.clone()) }
|
||||
)]
|
||||
);
|
||||
@@ -76,14 +73,11 @@ fn send_fails_when_xcm_router_blocks() {
|
||||
let weight = 2 * BaseXcmWeight::get();
|
||||
let sender: MultiLocation =
|
||||
Junction::AccountId32 { network: AnyNetwork::get(), id: ALICE.into() }.into();
|
||||
let message = Xcm::ReserveAssetDeposit {
|
||||
assets: vec![ConcreteFungible { id: Parent.into(), amount: SEND_AMOUNT }],
|
||||
let message = Xcm::ReserveAssetDeposited {
|
||||
assets: (Parent, SEND_AMOUNT).into(),
|
||||
effects: vec![
|
||||
buy_execution(
|
||||
weight,
|
||||
ConcreteFungible { id: MultiLocation::Null, amount: SEND_AMOUNT },
|
||||
),
|
||||
DepositAsset { assets: vec![All], dest: sender.clone() },
|
||||
buy_execution((Parent, SEND_AMOUNT), weight),
|
||||
DepositAsset { assets: All.into(), max_assets: 1, beneficiary: sender.clone() },
|
||||
],
|
||||
};
|
||||
assert_noop!(
|
||||
@@ -120,8 +114,9 @@ fn teleport_assets_works() {
|
||||
assert_ok!(XcmPallet::teleport_assets(
|
||||
Origin::signed(ALICE),
|
||||
RelayLocation::get(),
|
||||
MultiLocation::X1(Junction::AccountId32 { network: NetworkId::Any, id: BOB.into() }),
|
||||
vec![ConcreteFungible { id: MultiLocation::Null, amount: SEND_AMOUNT }],
|
||||
X1(AccountId32 { network: Any, id: BOB.into() }),
|
||||
(Here, SEND_AMOUNT).into(),
|
||||
0,
|
||||
weight,
|
||||
));
|
||||
assert_eq!(Balances::total_balance(&ALICE), INITIAL_BALANCE - SEND_AMOUNT);
|
||||
@@ -149,7 +144,8 @@ fn reserve_transfer_assets_works() {
|
||||
Origin::signed(ALICE),
|
||||
Parachain(PARA_ID).into(),
|
||||
dest.clone(),
|
||||
vec![ConcreteFungible { id: MultiLocation::Null, amount: SEND_AMOUNT }],
|
||||
(Here, SEND_AMOUNT).into(),
|
||||
0,
|
||||
weight
|
||||
));
|
||||
// Alice spent amount
|
||||
@@ -161,14 +157,11 @@ fn reserve_transfer_assets_works() {
|
||||
sent_xcm(),
|
||||
vec![(
|
||||
Parachain(PARA_ID).into(),
|
||||
Xcm::ReserveAssetDeposit {
|
||||
assets: vec![ConcreteFungible { id: Parent.into(), amount: SEND_AMOUNT }],
|
||||
Xcm::ReserveAssetDeposited {
|
||||
assets: (X1(Parent), SEND_AMOUNT).into(),
|
||||
effects: vec![
|
||||
buy_execution(
|
||||
weight,
|
||||
ConcreteFungible { id: Parent.into(), amount: SEND_AMOUNT }
|
||||
),
|
||||
DepositAsset { assets: vec![All], dest },
|
||||
buy_execution((Parent, SEND_AMOUNT), weight),
|
||||
DepositAsset { assets: All.into(), max_assets: 1, beneficiary: dest },
|
||||
]
|
||||
}
|
||||
)]
|
||||
@@ -196,13 +189,10 @@ fn execute_withdraw_to_deposit_works() {
|
||||
assert_ok!(XcmPallet::execute(
|
||||
Origin::signed(ALICE),
|
||||
Box::new(Xcm::WithdrawAsset {
|
||||
assets: vec![ConcreteFungible { id: MultiLocation::Null, amount: SEND_AMOUNT }],
|
||||
assets: (Here, SEND_AMOUNT).into(),
|
||||
effects: vec![
|
||||
buy_execution(
|
||||
weight,
|
||||
ConcreteFungible { id: MultiLocation::Null, amount: SEND_AMOUNT }
|
||||
),
|
||||
DepositAsset { assets: vec![All], dest },
|
||||
buy_execution((Here, SEND_AMOUNT), weight),
|
||||
DepositAsset { assets: All.into(), max_assets: 1, beneficiary: dest }
|
||||
],
|
||||
}),
|
||||
weight
|
||||
|
||||
Reference in New Issue
Block a user