mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 22:11:02 +00:00
cumulus: add asset-hub-rococo runtime based on asset-hub-kusama and add asset-bridging support to it (#1215)
This commit adds Rococo Asset Hub dedicated runtime so we can test new features here, before merging them in Kusama Asset Hub. Also adds one such feature: asset transfer over bridge (Rococo AssetHub <> Wococo AssetHub) - clone `asset-hub-kusama-runtime` -> `asset-hub-rococo-runtime` - make it use Rococo primitives, names, assets, constants, etc - add asset-transfer-over-bridge support to Rococo AssetHub <> Wococo AssetHub Fixes #1128 --------- Co-authored-by: Branislav Kontur <bkontur@gmail.com> Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>
This commit is contained in:
@@ -19,7 +19,7 @@
|
||||
use bp_polkadot_core::Signature;
|
||||
use bridge_hub_rococo_runtime::{
|
||||
bridge_hub_rococo_config, bridge_hub_wococo_config,
|
||||
xcm_config::{RelayNetwork, XcmConfig},
|
||||
xcm_config::{RelayNetwork, TokenLocation, XcmConfig},
|
||||
AllPalletsWithoutSystem, BridgeRejectObsoleteHeadersAndMessages, DeliveryRewardInBalance,
|
||||
Executive, ExistentialDeposit, ParachainSystem, PolkadotXcm, RequiredStakeForStakeAndSlash,
|
||||
Runtime, RuntimeCall, RuntimeEvent, SessionKeys, SignedExtra, UncheckedExtrinsic,
|
||||
@@ -35,7 +35,7 @@ use sp_runtime::{
|
||||
};
|
||||
use xcm::latest::prelude::*;
|
||||
|
||||
// Para id of sibling chain (Rockmine/Wockmint) used in tests.
|
||||
// Para id of sibling chain used in tests.
|
||||
pub const SIBLING_PARACHAIN_ID: u32 = 1000;
|
||||
|
||||
parameter_types! {
|
||||
@@ -55,7 +55,7 @@ fn construct_extrinsic(
|
||||
frame_system::CheckNonce::<Runtime>::from(0),
|
||||
frame_system::CheckWeight::<Runtime>::new(),
|
||||
pallet_transaction_payment::ChargeTransactionPayment::<Runtime>::from(0),
|
||||
BridgeRejectObsoleteHeadersAndMessages {},
|
||||
BridgeRejectObsoleteHeadersAndMessages::default(),
|
||||
(
|
||||
bridge_hub_wococo_config::BridgeRefundBridgeHubRococoMessages::default(),
|
||||
bridge_hub_rococo_config::BridgeRefundBridgeHubWococoMessages::default(),
|
||||
@@ -191,7 +191,11 @@ mod bridge_hub_rococo_tests {
|
||||
}
|
||||
}),
|
||||
|| ExportMessage { network: Wococo, destination: X1(Parachain(1234)), xcm: Xcm(vec![]) },
|
||||
bridge_hub_rococo_config::DEFAULT_XCM_LANE_TO_BRIDGE_HUB_WOCOCO
|
||||
bridge_hub_rococo_config::DEFAULT_XCM_LANE_TO_BRIDGE_HUB_WOCOCO,
|
||||
Some((TokenLocation::get(), ExistentialDeposit::get()).into()),
|
||||
// value should be >= than value generated by `can_calculate_weight_for_paid_export_message_with_reserve_transfer`
|
||||
Some((TokenLocation::get(), bp_asset_hub_rococo::BridgeHubRococoBaseFeeInRocs::get()).into()),
|
||||
|| (),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -222,6 +226,7 @@ mod bridge_hub_rococo_tests {
|
||||
}
|
||||
}),
|
||||
bridge_hub_rococo_config::DEFAULT_XCM_LANE_TO_BRIDGE_HUB_WOCOCO,
|
||||
|| (),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -243,6 +248,7 @@ mod bridge_hub_rococo_tests {
|
||||
SIBLING_PARACHAIN_ID,
|
||||
Rococo,
|
||||
DEFAULT_XCM_LANE_TO_BRIDGE_HUB_WOCOCO,
|
||||
|| (),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -268,6 +274,25 @@ mod bridge_hub_rococo_tests {
|
||||
ExistentialDeposit::get(),
|
||||
executive_init_block,
|
||||
construct_and_apply_extrinsic,
|
||||
|| (),
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
pub fn can_calculate_weight_for_paid_export_message_with_reserve_transfer() {
|
||||
let estimated = bridge_hub_test_utils::test_cases::can_calculate_weight_for_paid_export_message_with_reserve_transfer::<
|
||||
Runtime,
|
||||
XcmConfig,
|
||||
WeightToFee,
|
||||
>();
|
||||
|
||||
// check if estimated value is sane
|
||||
let max_expected = bp_asset_hub_rococo::BridgeHubRococoBaseFeeInRocs::get();
|
||||
assert!(
|
||||
estimated <= max_expected,
|
||||
"calculated: {:?}, max_expected: {:?}, please adjust `bp_asset_hub_rococo::BridgeHubRococoBaseFeeInRocs` value",
|
||||
estimated,
|
||||
max_expected
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -275,12 +300,38 @@ mod bridge_hub_rococo_tests {
|
||||
mod bridge_hub_wococo_tests {
|
||||
use super::*;
|
||||
use bridge_hub_rococo_runtime::{
|
||||
BridgeGrandpaRococoInstance, BridgeParachainRococoInstance,
|
||||
WithBridgeHubRococoMessagesInstance,
|
||||
xcm_config, AllPalletsWithoutSystem, BridgeGrandpaRococoInstance,
|
||||
BridgeParachainRococoInstance, RuntimeFlavor, WithBridgeHubRococoMessagesInstance,
|
||||
};
|
||||
use bridge_hub_wococo_config::{
|
||||
WithBridgeHubRococoMessageBridge, DEFAULT_XCM_LANE_TO_BRIDGE_HUB_ROCOCO,
|
||||
};
|
||||
use frame_support::assert_ok;
|
||||
|
||||
type RuntimeHelper = bridge_hub_test_utils::RuntimeHelper<Runtime, AllPalletsWithoutSystem>;
|
||||
|
||||
pub(crate) fn set_wococo_flavor() {
|
||||
let flavor_key = xcm_config::Flavor::key().to_vec();
|
||||
let flavor = RuntimeFlavor::Wococo;
|
||||
|
||||
// encode `set_storage` call
|
||||
let set_storage_call = RuntimeCall::System(frame_system::Call::<Runtime>::set_storage {
|
||||
items: vec![(flavor_key, flavor.encode())],
|
||||
})
|
||||
.encode();
|
||||
|
||||
// estimate - storing just 1 value
|
||||
use frame_system::WeightInfo;
|
||||
let require_weight_at_most =
|
||||
<Runtime as frame_system::Config>::SystemWeightInfo::set_storage(1);
|
||||
|
||||
// execute XCM with Transact to `set_storage` as governance does
|
||||
assert_ok!(RuntimeHelper::execute_as_governance(set_storage_call, require_weight_at_most)
|
||||
.ensure_complete());
|
||||
|
||||
// check if stored
|
||||
assert_eq!(flavor, xcm_config::Flavor::get());
|
||||
}
|
||||
|
||||
bridge_hub_test_utils::test_cases::include_teleports_for_native_asset_works!(
|
||||
Runtime,
|
||||
@@ -370,7 +421,11 @@ mod bridge_hub_wococo_tests {
|
||||
}
|
||||
}),
|
||||
|| ExportMessage { network: Rococo, destination: X1(Parachain(4321)), xcm: Xcm(vec![]) },
|
||||
bridge_hub_wococo_config::DEFAULT_XCM_LANE_TO_BRIDGE_HUB_ROCOCO
|
||||
bridge_hub_wococo_config::DEFAULT_XCM_LANE_TO_BRIDGE_HUB_ROCOCO,
|
||||
Some((TokenLocation::get(), ExistentialDeposit::get()).into()),
|
||||
// value should be >= than value generated by `can_calculate_weight_for_paid_export_message_with_reserve_transfer`
|
||||
Some((TokenLocation::get(), bp_asset_hub_wococo::BridgeHubWococoBaseFeeInWocs::get()).into()),
|
||||
set_wococo_flavor,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -401,6 +456,7 @@ mod bridge_hub_wococo_tests {
|
||||
}
|
||||
}),
|
||||
bridge_hub_wococo_config::DEFAULT_XCM_LANE_TO_BRIDGE_HUB_ROCOCO,
|
||||
set_wococo_flavor,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -422,6 +478,7 @@ mod bridge_hub_wococo_tests {
|
||||
SIBLING_PARACHAIN_ID,
|
||||
Wococo,
|
||||
DEFAULT_XCM_LANE_TO_BRIDGE_HUB_ROCOCO,
|
||||
set_wococo_flavor,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -447,6 +504,25 @@ mod bridge_hub_wococo_tests {
|
||||
ExistentialDeposit::get(),
|
||||
executive_init_block,
|
||||
construct_and_apply_extrinsic,
|
||||
set_wococo_flavor,
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
pub fn can_calculate_weight_for_paid_export_message_with_reserve_transfer() {
|
||||
let estimated = bridge_hub_test_utils::test_cases::can_calculate_weight_for_paid_export_message_with_reserve_transfer::<
|
||||
Runtime,
|
||||
XcmConfig,
|
||||
WeightToFee,
|
||||
>();
|
||||
|
||||
// check if estimated value is sane
|
||||
let max_expected = bp_asset_hub_wococo::BridgeHubWococoBaseFeeInWocs::get();
|
||||
assert!(
|
||||
estimated <= max_expected,
|
||||
"calculated: {:?}, max_expected: {:?}, please adjust `bp_asset_hub_wococo::BridgeHubWococoBaseFeeInWocs` value",
|
||||
estimated,
|
||||
max_expected
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user