Skip to content

Commit d0ebb85

Browse files
authored
pallet-xcm: fix weights for all XTs and deprecate unlimited weight ones (#3927)
Fix "double-weights" for extrinsics, use only the ones benchmarked in the runtime. Deprecate extrinsics that don't specify WeightLimit, remove their usage across the repo. --------- Signed-off-by: Adrian Catangiu <[email protected]> Co-authored-by: command-bot <>
1 parent 9a62de2 commit d0ebb85

File tree

10 files changed

+103
-512
lines changed

10 files changed

+103
-512
lines changed

cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/teleport.rs

Lines changed: 0 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -245,16 +245,6 @@ fn relay_limited_teleport_assets(t: RelayToSystemParaTest) -> DispatchResult {
245245
)
246246
}
247247

248-
fn relay_teleport_assets(t: RelayToSystemParaTest) -> DispatchResult {
249-
<Rococo as RococoPallet>::XcmPallet::teleport_assets(
250-
t.signed_origin,
251-
bx!(t.args.dest.into()),
252-
bx!(t.args.beneficiary.into()),
253-
bx!(t.args.assets.into()),
254-
t.args.fee_asset_item,
255-
)
256-
}
257-
258248
fn system_para_limited_teleport_assets(t: SystemParaToRelayTest) -> DispatchResult {
259249
<AssetHubRococo as AssetHubRococoPallet>::PolkadotXcm::limited_teleport_assets(
260250
t.signed_origin,
@@ -266,16 +256,6 @@ fn system_para_limited_teleport_assets(t: SystemParaToRelayTest) -> DispatchResu
266256
)
267257
}
268258

269-
fn system_para_teleport_assets(t: SystemParaToRelayTest) -> DispatchResult {
270-
<AssetHubRococo as AssetHubRococoPallet>::PolkadotXcm::teleport_assets(
271-
t.signed_origin,
272-
bx!(t.args.dest.into()),
273-
bx!(t.args.beneficiary.into()),
274-
bx!(t.args.assets.into()),
275-
t.args.fee_asset_item,
276-
)
277-
}
278-
279259
fn para_to_system_para_transfer_assets(t: ParaToSystemParaTest) -> DispatchResult {
280260
<PenpalA as PenpalAPallet>::PolkadotXcm::transfer_assets(
281261
t.signed_origin,
@@ -421,129 +401,6 @@ fn limited_teleport_native_assets_from_system_para_to_relay_fails() {
421401
assert_eq!(receiver_balance_after, receiver_balance_before);
422402
}
423403

424-
/// Teleport of native asset from Relay Chain to the System Parachain should work
425-
#[test]
426-
fn teleport_native_assets_from_relay_to_system_para_works() {
427-
// Init values for Relay Chain
428-
let amount_to_send: Balance = ROCOCO_ED * 1000;
429-
let dest = Rococo::child_location_of(AssetHubRococo::para_id());
430-
let beneficiary_id = AssetHubRococoReceiver::get();
431-
let test_args = TestContext {
432-
sender: RococoSender::get(),
433-
receiver: AssetHubRococoReceiver::get(),
434-
args: TestArgs::new_relay(dest, beneficiary_id, amount_to_send),
435-
};
436-
437-
let mut test = RelayToSystemParaTest::new(test_args);
438-
439-
let sender_balance_before = test.sender.balance;
440-
let receiver_balance_before = test.receiver.balance;
441-
442-
test.set_assertion::<Rococo>(relay_origin_assertions);
443-
test.set_assertion::<AssetHubRococo>(para_dest_assertions);
444-
test.set_dispatchable::<Rococo>(relay_teleport_assets);
445-
test.assert();
446-
447-
let delivery_fees = Rococo::execute_with(|| {
448-
xcm_helpers::teleport_assets_delivery_fees::<
449-
<RococoXcmConfig as xcm_executor::Config>::XcmSender,
450-
>(test.args.assets.clone(), 0, test.args.weight_limit, test.args.beneficiary, test.args.dest)
451-
});
452-
453-
let sender_balance_after = test.sender.balance;
454-
let receiver_balance_after = test.receiver.balance;
455-
456-
// Sender's balance is reduced
457-
assert_eq!(sender_balance_before - amount_to_send - delivery_fees, sender_balance_after);
458-
// Receiver's balance is increased
459-
assert!(receiver_balance_after > receiver_balance_before);
460-
}
461-
462-
/// Teleport of native asset from System Parachains to the Relay Chain
463-
/// should work when there is enough balance in Relay Chain's `CheckAccount`
464-
#[test]
465-
fn teleport_native_assets_back_from_system_para_to_relay_works() {
466-
// Dependency - Relay Chain's `CheckAccount` should have enough balance
467-
teleport_native_assets_from_relay_to_system_para_works();
468-
469-
// Init values for Relay Chain
470-
let amount_to_send: Balance = ASSET_HUB_ROCOCO_ED * 1000;
471-
let destination = AssetHubRococo::parent_location();
472-
let beneficiary_id = RococoReceiver::get();
473-
let assets = (Parent, amount_to_send).into();
474-
475-
let test_args = TestContext {
476-
sender: AssetHubRococoSender::get(),
477-
receiver: RococoReceiver::get(),
478-
args: TestArgs::new_para(destination, beneficiary_id, amount_to_send, assets, None, 0),
479-
};
480-
481-
let mut test = SystemParaToRelayTest::new(test_args);
482-
483-
let sender_balance_before = test.sender.balance;
484-
let receiver_balance_before = test.receiver.balance;
485-
486-
test.set_assertion::<AssetHubRococo>(para_origin_assertions);
487-
test.set_assertion::<Rococo>(relay_dest_assertions);
488-
test.set_dispatchable::<AssetHubRococo>(system_para_teleport_assets);
489-
test.assert();
490-
491-
let sender_balance_after = test.sender.balance;
492-
let receiver_balance_after = test.receiver.balance;
493-
494-
let delivery_fees = AssetHubRococo::execute_with(|| {
495-
xcm_helpers::teleport_assets_delivery_fees::<
496-
<AssetHubRococoXcmConfig as xcm_executor::Config>::XcmSender,
497-
>(test.args.assets.clone(), 0, test.args.weight_limit, test.args.beneficiary, test.args.dest)
498-
});
499-
500-
// Sender's balance is reduced
501-
assert_eq!(sender_balance_before - amount_to_send - delivery_fees, sender_balance_after);
502-
// Receiver's balance is increased
503-
assert!(receiver_balance_after > receiver_balance_before);
504-
}
505-
506-
/// Teleport of native asset from System Parachain to Relay Chain
507-
/// shouldn't work when there is not enough balance in Relay Chain's `CheckAccount`
508-
#[test]
509-
fn teleport_native_assets_from_system_para_to_relay_fails() {
510-
// Init values for Relay Chain
511-
let amount_to_send: Balance = ASSET_HUB_ROCOCO_ED * 1000;
512-
let destination = AssetHubRococo::parent_location();
513-
let beneficiary_id = RococoReceiver::get();
514-
let assets = (Parent, amount_to_send).into();
515-
516-
let test_args = TestContext {
517-
sender: AssetHubRococoSender::get(),
518-
receiver: RococoReceiver::get(),
519-
args: TestArgs::new_para(destination, beneficiary_id, amount_to_send, assets, None, 0),
520-
};
521-
522-
let mut test = SystemParaToRelayTest::new(test_args);
523-
524-
let sender_balance_before = test.sender.balance;
525-
let receiver_balance_before = test.receiver.balance;
526-
527-
test.set_assertion::<AssetHubRococo>(para_origin_assertions);
528-
test.set_assertion::<Rococo>(relay_dest_assertions_fail);
529-
test.set_dispatchable::<AssetHubRococo>(system_para_teleport_assets);
530-
test.assert();
531-
532-
let delivery_fees = AssetHubRococo::execute_with(|| {
533-
xcm_helpers::teleport_assets_delivery_fees::<
534-
<AssetHubRococoXcmConfig as xcm_executor::Config>::XcmSender,
535-
>(test.args.assets.clone(), 0, test.args.weight_limit, test.args.beneficiary, test.args.dest)
536-
});
537-
538-
let sender_balance_after = test.sender.balance;
539-
let receiver_balance_after = test.receiver.balance;
540-
541-
// Sender's balance is reduced
542-
assert_eq!(sender_balance_before - amount_to_send - delivery_fees, sender_balance_after);
543-
// Receiver's balance does not change
544-
assert_eq!(receiver_balance_after, receiver_balance_before);
545-
}
546-
547404
#[test]
548405
fn teleport_to_other_system_parachains_works() {
549406
let amount = ASSET_HUB_ROCOCO_ED * 100;

cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/teleport.rs

Lines changed: 0 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -245,16 +245,6 @@ fn relay_limited_teleport_assets(t: RelayToSystemParaTest) -> DispatchResult {
245245
)
246246
}
247247

248-
fn relay_teleport_assets(t: RelayToSystemParaTest) -> DispatchResult {
249-
<Westend as WestendPallet>::XcmPallet::teleport_assets(
250-
t.signed_origin,
251-
bx!(t.args.dest.into()),
252-
bx!(t.args.beneficiary.into()),
253-
bx!(t.args.assets.into()),
254-
t.args.fee_asset_item,
255-
)
256-
}
257-
258248
fn system_para_limited_teleport_assets(t: SystemParaToRelayTest) -> DispatchResult {
259249
<AssetHubWestend as AssetHubWestendPallet>::PolkadotXcm::limited_teleport_assets(
260250
t.signed_origin,
@@ -266,16 +256,6 @@ fn system_para_limited_teleport_assets(t: SystemParaToRelayTest) -> DispatchResu
266256
)
267257
}
268258

269-
fn system_para_teleport_assets(t: SystemParaToRelayTest) -> DispatchResult {
270-
<AssetHubWestend as AssetHubWestendPallet>::PolkadotXcm::teleport_assets(
271-
t.signed_origin,
272-
bx!(t.args.dest.into()),
273-
bx!(t.args.beneficiary.into()),
274-
bx!(t.args.assets.into()),
275-
t.args.fee_asset_item,
276-
)
277-
}
278-
279259
fn para_to_system_para_transfer_assets(t: ParaToSystemParaTest) -> DispatchResult {
280260
<PenpalA as PenpalAPallet>::PolkadotXcm::transfer_assets(
281261
t.signed_origin,
@@ -421,129 +401,6 @@ fn limited_teleport_native_assets_from_system_para_to_relay_fails() {
421401
assert_eq!(receiver_balance_after, receiver_balance_before);
422402
}
423403

424-
/// Teleport of native asset from Relay Chain to the System Parachain should work
425-
#[test]
426-
fn teleport_native_assets_from_relay_to_system_para_works() {
427-
// Init values for Relay Chain
428-
let amount_to_send: Balance = WESTEND_ED * 1000;
429-
let dest = Westend::child_location_of(AssetHubWestend::para_id());
430-
let beneficiary_id = AssetHubWestendReceiver::get();
431-
let test_args = TestContext {
432-
sender: WestendSender::get(),
433-
receiver: AssetHubWestendReceiver::get(),
434-
args: TestArgs::new_relay(dest, beneficiary_id, amount_to_send),
435-
};
436-
437-
let mut test = RelayToSystemParaTest::new(test_args);
438-
439-
let sender_balance_before = test.sender.balance;
440-
let receiver_balance_before = test.receiver.balance;
441-
442-
test.set_assertion::<Westend>(relay_origin_assertions);
443-
test.set_assertion::<AssetHubWestend>(para_dest_assertions);
444-
test.set_dispatchable::<Westend>(relay_teleport_assets);
445-
test.assert();
446-
447-
let delivery_fees = Westend::execute_with(|| {
448-
xcm_helpers::teleport_assets_delivery_fees::<
449-
<WestendXcmConfig as xcm_executor::Config>::XcmSender,
450-
>(test.args.assets.clone(), 0, test.args.weight_limit, test.args.beneficiary, test.args.dest)
451-
});
452-
453-
let sender_balance_after = test.sender.balance;
454-
let receiver_balance_after = test.receiver.balance;
455-
456-
// Sender's balance is reduced
457-
assert_eq!(sender_balance_before - amount_to_send - delivery_fees, sender_balance_after);
458-
// Receiver's balance is increased
459-
assert!(receiver_balance_after > receiver_balance_before);
460-
}
461-
462-
/// Teleport of native asset from System Parachains to the Relay Chain
463-
/// should work when there is enough balance in Relay Chain's `CheckAccount`
464-
#[test]
465-
fn teleport_native_assets_back_from_system_para_to_relay_works() {
466-
// Dependency - Relay Chain's `CheckAccount` should have enough balance
467-
teleport_native_assets_from_relay_to_system_para_works();
468-
469-
// Init values for Relay Chain
470-
let amount_to_send: Balance = ASSET_HUB_WESTEND_ED * 1000;
471-
let destination = AssetHubWestend::parent_location();
472-
let beneficiary_id = WestendReceiver::get();
473-
let assets = (Parent, amount_to_send).into();
474-
475-
let test_args = TestContext {
476-
sender: AssetHubWestendSender::get(),
477-
receiver: WestendReceiver::get(),
478-
args: TestArgs::new_para(destination, beneficiary_id, amount_to_send, assets, None, 0),
479-
};
480-
481-
let mut test = SystemParaToRelayTest::new(test_args);
482-
483-
let sender_balance_before = test.sender.balance;
484-
let receiver_balance_before = test.receiver.balance;
485-
486-
test.set_assertion::<AssetHubWestend>(para_origin_assertions);
487-
test.set_assertion::<Westend>(relay_dest_assertions);
488-
test.set_dispatchable::<AssetHubWestend>(system_para_teleport_assets);
489-
test.assert();
490-
491-
let sender_balance_after = test.sender.balance;
492-
let receiver_balance_after = test.receiver.balance;
493-
494-
let delivery_fees = AssetHubWestend::execute_with(|| {
495-
xcm_helpers::teleport_assets_delivery_fees::<
496-
<AssetHubWestendXcmConfig as xcm_executor::Config>::XcmSender,
497-
>(test.args.assets.clone(), 0, test.args.weight_limit, test.args.beneficiary, test.args.dest)
498-
});
499-
500-
// Sender's balance is reduced
501-
assert_eq!(sender_balance_before - amount_to_send - delivery_fees, sender_balance_after);
502-
// Receiver's balance is increased
503-
assert!(receiver_balance_after > receiver_balance_before);
504-
}
505-
506-
/// Teleport of native asset from System Parachain to Relay Chain
507-
/// shouldn't work when there is not enough balance in Relay Chain's `CheckAccount`
508-
#[test]
509-
fn teleport_native_assets_from_system_para_to_relay_fails() {
510-
// Init values for Relay Chain
511-
let amount_to_send: Balance = ASSET_HUB_WESTEND_ED * 1000;
512-
let destination = AssetHubWestend::parent_location();
513-
let beneficiary_id = WestendReceiver::get();
514-
let assets = (Parent, amount_to_send).into();
515-
516-
let test_args = TestContext {
517-
sender: AssetHubWestendSender::get(),
518-
receiver: WestendReceiver::get(),
519-
args: TestArgs::new_para(destination, beneficiary_id, amount_to_send, assets, None, 0),
520-
};
521-
522-
let mut test = SystemParaToRelayTest::new(test_args);
523-
524-
let sender_balance_before = test.sender.balance;
525-
let receiver_balance_before = test.receiver.balance;
526-
527-
test.set_assertion::<AssetHubWestend>(para_origin_assertions);
528-
test.set_assertion::<Westend>(relay_dest_assertions_fail);
529-
test.set_dispatchable::<AssetHubWestend>(system_para_teleport_assets);
530-
test.assert();
531-
532-
let delivery_fees = AssetHubWestend::execute_with(|| {
533-
xcm_helpers::teleport_assets_delivery_fees::<
534-
<AssetHubWestendXcmConfig as xcm_executor::Config>::XcmSender,
535-
>(test.args.assets.clone(), 0, test.args.weight_limit, test.args.beneficiary, test.args.dest)
536-
});
537-
538-
let sender_balance_after = test.sender.balance;
539-
let receiver_balance_after = test.receiver.balance;
540-
541-
// Sender's balance is reduced
542-
assert_eq!(sender_balance_before - amount_to_send - delivery_fees, sender_balance_after);
543-
// Receiver's balance does not change
544-
assert_eq!(receiver_balance_after, receiver_balance_before);
545-
}
546-
547404
#[test]
548405
fn teleport_to_other_system_parachains_works() {
549406
let amount = ASSET_HUB_WESTEND_ED * 100;

cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-rococo/src/tests/snowbridge.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,12 +458,13 @@ fn send_weth_asset_from_asset_hub_to_ethereum() {
458458
AssetHubRococoReceiver::get(),
459459
);
460460
// Send the Weth back to Ethereum
461-
<AssetHubRococo as AssetHubRococoPallet>::PolkadotXcm::reserve_transfer_assets(
461+
<AssetHubRococo as AssetHubRococoPallet>::PolkadotXcm::limited_reserve_transfer_assets(
462462
RuntimeOrigin::signed(AssetHubRococoReceiver::get()),
463463
Box::new(destination),
464464
Box::new(beneficiary),
465465
Box::new(multi_assets),
466466
0,
467+
Unlimited,
467468
)
468469
.unwrap();
469470
let free_balance_after = <AssetHubRococo as AssetHubRococoPallet>::Balances::free_balance(

0 commit comments

Comments
 (0)