From e18648c537b67f234c862b01746e3c2c1a78cc8d Mon Sep 17 00:00:00 2001 From: jasl Date: Fri, 15 Jul 2022 21:47:47 +0800 Subject: [PATCH] SubBridge pallets: Fix compilation --- pallets/assets-registry/src/lib.rs | 13 +++-- pallets/subbridge/src/chainbridge.rs | 69 ++++++++++++----------- pallets/subbridge/src/fungible_adapter.rs | 2 +- pallets/subbridge/src/mock/para.rs | 8 +-- pallets/subbridge/src/xtransfer.rs | 40 ++++++------- 5 files changed, 67 insertions(+), 65 deletions(-) diff --git a/pallets/assets-registry/src/lib.rs b/pallets/assets-registry/src/lib.rs index 69e44fd2..4f2d1432 100644 --- a/pallets/assets-registry/src/lib.rs +++ b/pallets/assets-registry/src/lib.rs @@ -24,6 +24,7 @@ pub mod pallet { use frame_system::pallet_prelude::*; use scale_info::TypeInfo; use sp_runtime::traits::AccountIdConversion; + use sp_runtime::WeakBoundedVec; use sp_std::{boxed::Box, cmp, convert::From, vec, vec::Vec}; use xcm::latest::{prelude::*, AssetId as XcmAssetId, MultiLocation}; @@ -97,12 +98,12 @@ pub mod pallet { fn reserve_location(&self) -> Option { match (self.at(0), self.at(1)) { (Some(GeneralKey(cb_key)), Some(GeneralIndex(chain_id))) - if &cb_key == &CB_ASSET_KEY => + if cb_key == &WeakBoundedVec::>::try_from(CB_ASSET_KEY.to_vec()).unwrap() => { Some( ( 0, - X2(GeneralKey((&cb_key).to_vec()), GeneralIndex(*chain_id)), + X2(GeneralKey(cb_key.clone()), GeneralIndex(*chain_id)), ) .into(), ) @@ -637,7 +638,7 @@ pub mod pallet { let reserve_location: MultiLocation = ( 0, X2( - GeneralKey(CB_ASSET_KEY.to_vec()), + GeneralKey(WeakBoundedVec::>::try_from(CB_ASSET_KEY.to_vec()).unwrap()), GeneralIndex(chain_id as u128), ), ) @@ -799,7 +800,7 @@ pub mod pallet { #[test] fn test_withdraw_fund_of_pha() { let recipient: AccountId32 = - MultiLocation::new(0, X1(GeneralKey(b"recipient".to_vec()))) + MultiLocation::new(0, X1(GeneralKey(b"recipient".to_vec().try_into().expect("less than length limit; qed")))) .into_account() .into(); new_test_ext().execute_with(|| { @@ -824,7 +825,7 @@ pub mod pallet { #[test] fn test_withdraw_fund_of_asset() { let recipient: AccountId32 = - MultiLocation::new(0, X1(GeneralKey(b"recipient".to_vec()))) + MultiLocation::new(0, X1(GeneralKey(b"recipient".to_vec().try_into().expect("less than length limit; qed")))) .into_account() .into(); let fund_account: ::AccountId = @@ -866,7 +867,7 @@ pub mod pallet { fn test_force_mint_burn_asset() { new_test_ext().execute_with(|| { let recipient: AccountId32 = - MultiLocation::new(0, X1(GeneralKey(b"recipient".to_vec()))) + MultiLocation::new(0, X1(GeneralKey(b"recipient".to_vec().try_into().expect("less than length limit; qed")))) .into_account() .into(); let asset_location = MultiLocation::new(1, Here); diff --git a/pallets/subbridge/src/chainbridge.rs b/pallets/subbridge/src/chainbridge.rs index 2531a093..1f33ec0b 100644 --- a/pallets/subbridge/src/chainbridge.rs +++ b/pallets/subbridge/src/chainbridge.rs @@ -18,7 +18,7 @@ pub mod pallet { use scale_info::TypeInfo; pub use sp_core::U256; use sp_runtime::traits::{AccountIdConversion, Dispatchable}; - use sp_runtime::RuntimeDebug; + use sp_runtime::{RuntimeDebug, WeakBoundedVec}; use sp_std::{ convert::{From, Into, TryInto}, prelude::*, @@ -470,7 +470,7 @@ pub mod pallet { let src_reserve_location: MultiLocation = ( 0, X2( - GeneralKey(CB_ASSET_KEY.to_vec()), + GeneralKey(WeakBoundedVec::>::try_from(CB_ASSET_KEY.to_vec()).unwrap()), GeneralIndex(src_chainid.into()), ), ) @@ -967,7 +967,7 @@ pub mod pallet { let dest_reserve_location: MultiLocation = ( 0, X2( - GeneralKey(CB_ASSET_KEY.to_vec()), + GeneralKey(WeakBoundedVec::>::try_from(CB_ASSET_KEY.to_vec()).unwrap()), GeneralIndex(dest_id.into()), ), ) @@ -1069,6 +1069,7 @@ pub mod pallet { }; use assets_registry::*; use frame_support::{assert_noop, assert_ok}; + use sp_runtime::bounded_vec; use xcm_simulator::TestExt; pub fn new_test_ext_initialized( @@ -1203,9 +1204,9 @@ pub mod pallet { MultiLocation::new( 0, X3( - GeneralKey(b"cb".to_vec()), + GeneralKey(b"cb".to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(bad_dest_id.into()), - GeneralKey(b"recipient".to_vec()) + GeneralKey(b"recipient".to_vec().try_into().expect("less than length limit; qed")) ) ), None, @@ -1260,7 +1261,7 @@ pub mod pallet { #[test] fn create_sucessful_proposal() { let src_id = 1; - let r_id = MultiLocation::new(1, X1(GeneralKey(b"remark".to_vec()))).into_rid(src_id); + let r_id = MultiLocation::new(1, X1(GeneralKey(b"remark".to_vec().try_into().expect("less than length limit; qed")))).into_rid(src_id); new_test_ext_initialized(src_id, r_id, b"System.remark".to_vec()).execute_with(|| { let prop_id = 1; @@ -1330,7 +1331,7 @@ pub mod pallet { #[test] fn create_unsucessful_proposal() { let src_id = 1; - let r_id = MultiLocation::new(1, X1(GeneralKey(b"transfer".to_vec()))).into_rid(src_id); + let r_id = MultiLocation::new(1, X1(GeneralKey(b"transfer".to_vec().try_into().expect("less than length limit; qed")))).into_rid(src_id); new_test_ext_initialized(src_id, r_id, b"System.remark".to_vec()).execute_with(|| { let prop_id = 1; @@ -1405,7 +1406,7 @@ pub mod pallet { #[test] fn execute_after_threshold_change() { let src_id = 1; - let r_id = MultiLocation::new(1, X1(GeneralKey(b"transfer".to_vec()))).into_rid(src_id); + let r_id = MultiLocation::new(1, X1(GeneralKey(b"transfer".to_vec().try_into().expect("less than length limit; qed")))).into_rid(src_id); new_test_ext_initialized(src_id, r_id, b"System.remark".to_vec()).execute_with(|| { let prop_id = 1; @@ -1466,7 +1467,7 @@ pub mod pallet { #[test] fn proposal_expires() { let src_id = 1; - let r_id = MultiLocation::new(1, X1(GeneralKey(b"remark".to_vec()))).into_rid(src_id); + let r_id = MultiLocation::new(1, X1(GeneralKey(b"remark".to_vec().try_into().expect("less than length limit; qed")))).into_rid(src_id); new_test_ext_initialized(src_id, r_id, b"System.remark".to_vec()).execute_with(|| { let prop_id = 1; @@ -1559,13 +1560,13 @@ pub mod pallet { 1, X4( Parachain(2004), - GeneralKey(CB_ASSET_KEY.to_vec()), + GeneralKey(CB_ASSET_KEY.to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(0), - GeneralKey(b"an asset".to_vec()), + GeneralKey(b"an asset".to_vec().try_into().expect("less than length limit; qed")), ), ); let amount: Balance = 100; - let recipient = vec![99]; + let recipient: WeakBoundedVec> = bounded_vec![99]; assert_ok!(ChainBridge::whitelist_chain(Origin::root(), dest_chain)); assert_ok!(ChainBridge::update_fee(Origin::root(), 2, dest_chain)); @@ -1578,7 +1579,7 @@ pub mod pallet { MultiLocation::new( 0, X3( - GeneralKey(b"cb".to_vec()), + GeneralKey(b"cb".to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(dest_chain.into()), GeneralKey(recipient) ) @@ -1601,13 +1602,13 @@ pub mod pallet { 1, X4( Parachain(2004), - GeneralKey(CB_ASSET_KEY.to_vec()), + GeneralKey(CB_ASSET_KEY.to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(0), - GeneralKey(b"an asset".to_vec()), + GeneralKey(b"an asset".to_vec().try_into().expect("less than length limit; qed")), ), ); let amount: Balance = 100; - let recipient = vec![99]; + let recipient: WeakBoundedVec> = bounded_vec![99]; assert_ok!(ChainBridge::whitelist_chain(Origin::root(), dest_chain)); assert_ok!(ChainBridge::update_fee(Origin::root(), 2, dest_chain)); @@ -1642,7 +1643,7 @@ pub mod pallet { MultiLocation::new( 0, X3( - GeneralKey(b"cb".to_vec()), + GeneralKey(b"cb".to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(dest_chain.into()), GeneralKey(recipient) ) @@ -1663,14 +1664,14 @@ pub mod pallet { let dest_reserve_location: MultiLocation = ( 0, X2( - GeneralKey(CB_ASSET_KEY.to_vec()), + GeneralKey(CB_ASSET_KEY.to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(dest_chain.into()), ), ) .into(); let bridge_asset_location = SoloChain0AssetLocation::get(); let amount: Balance = 100; - let recipient = vec![99]; + let recipient: WeakBoundedVec> = bounded_vec![99]; assert_ok!(ChainBridge::whitelist_chain(Origin::root(), dest_chain)); assert_ok!(ChainBridge::update_fee(Origin::root(), 2, dest_chain)); @@ -1712,7 +1713,7 @@ pub mod pallet { MultiLocation::new( 0, X3( - GeneralKey(b"cb".to_vec()), + GeneralKey(b"cb".to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(dest_chain.into()), GeneralKey(recipient) ) @@ -1742,14 +1743,14 @@ pub mod pallet { let dest_reserve_location: MultiLocation = ( 0, X2( - GeneralKey(CB_ASSET_KEY.to_vec()), + GeneralKey(CB_ASSET_KEY.to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(dest_chain.into()), ), ) .into(); let bridge_asset_location = SoloChain2AssetLocation::get(); let amount: Balance = 100; - let recipient = vec![99]; + let recipient: WeakBoundedVec> = bounded_vec![99]; assert_ok!(ChainBridge::whitelist_chain(Origin::root(), dest_chain)); assert_ok!(ChainBridge::update_fee(Origin::root(), 2, dest_chain)); @@ -1797,7 +1798,7 @@ pub mod pallet { MultiLocation::new( 0, X3( - GeneralKey(b"cb".to_vec()), + GeneralKey(b"cb".to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(dest_chain.into()), GeneralKey(recipient) ) @@ -1828,7 +1829,7 @@ pub mod pallet { let resource_id = ChainBridge::gen_pha_rid(dest_chain); let free_balance: u128 = Balances::free_balance(RELAYER_A).into(); let amount: Balance = 100; - let recipient = vec![99]; + let recipient: WeakBoundedVec> = bounded_vec![99]; assert_ok!(ChainBridge::whitelist_chain(Origin::root(), dest_chain)); assert_ok!(ChainBridge::update_fee(Origin::root(), 2, dest_chain)); @@ -1845,7 +1846,7 @@ pub mod pallet { MultiLocation::new( 0, X3( - GeneralKey(b"cb".to_vec()), + GeneralKey(b"cb".to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(dest_chain.into()), GeneralKey(recipient.clone()) ) @@ -1862,7 +1863,7 @@ pub mod pallet { MultiLocation::new( 0, X3( - GeneralKey(b"cb".to_vec()), + GeneralKey(b"cb".to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(dest_chain.into()), GeneralKey(recipient.clone()) ) @@ -1875,7 +1876,7 @@ pub mod pallet { 1, resource_id, (amount - 2).into(), - recipient, + recipient.to_vec(), )); assert_eq!( @@ -1959,9 +1960,9 @@ pub mod pallet { 1, X4( Parachain(2004), - GeneralKey(CB_ASSET_KEY.to_vec()), + GeneralKey(CB_ASSET_KEY.to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(src_chainid.into()), - GeneralKey(b"an asset".to_vec()), + GeneralKey(b"an asset".to_vec().try_into().expect("less than length limit; qed")), ), ); let r_id: [u8; 32] = bridge_asset_location.clone().into_rid(src_chainid); @@ -1977,7 +1978,7 @@ pub mod pallet { let src_reserve_location: MultiLocation = ( 0, X2( - GeneralKey(CB_ASSET_KEY.to_vec()), + GeneralKey(CB_ASSET_KEY.to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(src_chainid.into()), ), ) @@ -2049,7 +2050,7 @@ pub mod pallet { 1, X2( Parachain(2000), - GeneralKey(b"an asset from karura".to_vec()), + GeneralKey(b"an asset from karura".to_vec().try_into().expect("less than length limit; qed")), ), ); let amount: Balance = 100; @@ -2063,7 +2064,7 @@ pub mod pallet { let src_reserve_location: MultiLocation = ( 0, X2( - GeneralKey(CB_ASSET_KEY.to_vec()), + GeneralKey(CB_ASSET_KEY.to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(src_chainid.into()), ), ) @@ -2287,9 +2288,9 @@ pub mod pallet { ParaA::execute_with(|| { let dest_chain: u8 = 2; let bridge_fee = 2; - let test_asset_location = MultiLocation::new(1, X1(GeneralKey(b"test".to_vec()))); + let test_asset_location = MultiLocation::new(1, X1(GeneralKey(b"test".to_vec().try_into().expect("less than length limit; qed")))); let unregistered_asset_location = - MultiLocation::new(1, X1(GeneralKey(b"unregistered".to_vec()))); + MultiLocation::new(1, X1(GeneralKey(b"unregistered".to_vec().try_into().expect("less than length limit; qed")))); // Register asset, decimals: 18, rate with pha: 1 : 1 assert_ok!(AssetsRegistry::force_register_asset( diff --git a/pallets/subbridge/src/fungible_adapter.rs b/pallets/subbridge/src/fungible_adapter.rs index e25e6777..14e607e3 100644 --- a/pallets/subbridge/src/fungible_adapter.rs +++ b/pallets/subbridge/src/fungible_adapter.rs @@ -64,7 +64,7 @@ impl< // Deposit asset into temporary account, then forward through other bridges let temporary_account = - MultiLocation::new(0, X1(GeneralKey(b"bridge_transfer".to_vec()))) + MultiLocation::new(0, X1(GeneralKey(b"bridge_transfer".to_vec().try_into().expect("less than length limit; qed")))) .into_account(); if NativeChecker::is_native_asset(what) { NativeAdapter::deposit_asset( diff --git a/pallets/subbridge/src/mock/para.rs b/pallets/subbridge/src/mock/para.rs index 74d7095e..7adc6beb 100644 --- a/pallets/subbridge/src/mock/para.rs +++ b/pallets/subbridge/src/mock/para.rs @@ -164,18 +164,18 @@ parameter_types! { 1, X4( Parachain(2004), - GeneralKey(assets_registry::CB_ASSET_KEY.to_vec()), + GeneralKey(assets_registry::CB_ASSET_KEY.to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(0), - GeneralKey(b"an asset".to_vec()), + GeneralKey(b"an asset".to_vec().try_into().expect("less than length limit; qed")), ), ); pub SoloChain2AssetLocation: MultiLocation = MultiLocation::new( 1, X4( Parachain(2004), - GeneralKey(assets_registry::CB_ASSET_KEY.to_vec()), + GeneralKey(assets_registry::CB_ASSET_KEY.to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(2), - GeneralKey(b"an asset".to_vec()), + GeneralKey(b"an asset".to_vec().try_into().expect("less than length limit; qed")), ), ); pub NativeExecutionPrice: u128 = 1; diff --git a/pallets/subbridge/src/xtransfer.rs b/pallets/subbridge/src/xtransfer.rs index 96102601..21c47a90 100644 --- a/pallets/subbridge/src/xtransfer.rs +++ b/pallets/subbridge/src/xtransfer.rs @@ -151,7 +151,7 @@ pub mod pallet { // TODO: Handle the sitution when forwarding failed. Maybe need to have something like `AssesTrap` // and `AssetsClaim`. let temporary_account = - MultiLocation::new(0, X1(GeneralKey(b"bridge_transfer".to_vec()))).into_account(); + MultiLocation::new(0, X1(GeneralKey(b"bridge_transfer".to_vec().try_into().expect("less than length limit; qed")))).into_account(); Self::do_transfer( temporary_account.into(), what.clone(), @@ -182,8 +182,8 @@ pub mod pallet { use frame_support::{assert_noop, assert_ok}; use polkadot_parachain::primitives::Sibling; - use sp_runtime::traits::AccountIdConversion; - use sp_runtime::AccountId32; + use sp_runtime::traits::{AccountIdConversion, ConstU32}; + use sp_runtime::{AccountId32, bounded_vec, WeakBoundedVec}; use assets_registry::{ AccountId32Conversion, AssetProperties, ExtractReserveLocation, IntoResourceId, @@ -201,7 +201,7 @@ pub mod pallet { TestNet::reset(); let unregistered_asset_location = - MultiLocation::new(0, X1(GeneralKey(b"unregistered".to_vec()))); + MultiLocation::new(0, X1(GeneralKey(b"unregistered".to_vec().try_into().expect("less than length limit; qed")))); ParaA::execute_with(|| { // To parachains via Xcm(according to the dest) @@ -231,7 +231,7 @@ pub mod pallet { TestNet::reset(); let unregistered_asset_location = - MultiLocation::new(0, X1(GeneralKey(b"unregistered".to_vec()))); + MultiLocation::new(0, X1(GeneralKey(b"unregistered".to_vec().try_into().expect("less than length limit; qed")))); ParaA::execute_with(|| { // To solo chains via Chainbridge(according to the dest) @@ -242,9 +242,9 @@ pub mod pallet { Box::new(MultiLocation::new( 0, X3( - GeneralKey(b"cb".to_vec()), + GeneralKey(b"cb".to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(0), - GeneralKey(b"recipient".to_vec()) + GeneralKey(b"recipient".to_vec().try_into().expect("less than length limit; qed")) ) )), None, @@ -259,7 +259,7 @@ pub mod pallet { TestNet::reset(); let registered_asset_location = - MultiLocation::new(0, X1(GeneralKey(b"registered".to_vec()))); + MultiLocation::new(0, X1(GeneralKey(b"registered".to_vec().try_into().expect("less than length limit; qed")))); ParaA::execute_with(|| { // Register asset assert_ok!(AssetsRegistry::force_register_asset( @@ -281,9 +281,9 @@ pub mod pallet { Box::new(MultiLocation::new( 0, X3( - GeneralKey(b"cb".to_vec()), + GeneralKey(b"cb".to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(0), - GeneralKey(b"recipient".to_vec()) + GeneralKey(b"recipient".to_vec().try_into().expect("less than length limit; qed")) ) )), None, @@ -298,7 +298,7 @@ pub mod pallet { TestNet::reset(); let registered_asset_location = - MultiLocation::new(0, X1(GeneralKey(b"registered".to_vec()))); + MultiLocation::new(0, X1(GeneralKey(b"registered".to_vec().try_into().expect("less than length limit; qed")))); ParaA::execute_with(|| { // Register asset assert_ok!(AssetsRegistry::force_register_asset( @@ -329,9 +329,9 @@ pub mod pallet { Box::new(MultiLocation::new( 0, X3( - GeneralKey(b"cb".to_vec()), + GeneralKey(b"cb".to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(0), - GeneralKey(b"recipient".to_vec()) + GeneralKey(b"recipient".to_vec().try_into().expect("less than length limit; qed")) ) )), None, @@ -346,7 +346,7 @@ pub mod pallet { TestNet::reset(); let registered_asset_location = - MultiLocation::new(0, X1(GeneralKey(b"registered".to_vec()))); + MultiLocation::new(0, X1(GeneralKey(b"registered".to_vec().try_into().expect("less than length limit; qed")))); ParaA::execute_with(|| { // Register asset assert_ok!(AssetsRegistry::force_register_asset( @@ -387,7 +387,7 @@ pub mod pallet { TestNet::reset(); let pha_location = MultiLocation::new(0, Here); - let recipient = vec![99]; + let recipient: WeakBoundedVec> = bounded_vec![99]; ParaA::execute_with(|| { // Set bridge fee and whitelist chain for the dest chain @@ -401,7 +401,7 @@ pub mod pallet { Box::new(MultiLocation::new( 0, X3( - GeneralKey(b"cb".to_vec()), + GeneralKey(b"cb".to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(0), GeneralKey(recipient.clone()) ) @@ -414,7 +414,7 @@ pub mod pallet { 1, // deposit nonce pha_location.into_rid(0), 98u128.into(), // deducted fee: 2 - recipient.into(), + recipient.to_vec(), )); assert_eq!(ParaBalances::free_balance(&ALICE), ENDOWED_BALANCE - 100); @@ -430,12 +430,12 @@ pub mod pallet { fn test_transfer_asset_to_solochain_by_chainbridge() { TestNet::reset(); - let recipient = vec![99]; + let recipient: WeakBoundedVec> = bounded_vec![99]; let registered_asset_location = para::SoloChain2AssetLocation::get(); let dest = MultiLocation::new( 0, X3( - GeneralKey(b"cb".to_vec()), + GeneralKey(b"cb".to_vec().try_into().expect("less than length limit; qed")), GeneralIndex(0), GeneralKey(recipient.clone()), ), @@ -501,7 +501,7 @@ pub mod pallet { 1, // deposit nonce registered_asset_location.into_rid(0), 96u128.into(), // deducted fee: 4 - recipient.into(), + recipient.to_vec(), )); assert_eq!(Assets::balance(0, &ALICE), ENDOWED_BALANCE - 100);