Revert "Introduce Tinkernet multisig XCM configs to Kusama/Rococo through xcm-builder (#7165)" (#7446)

This reverts commit af99520569.
This commit is contained in:
Gavin Wood
2023-06-30 14:38:21 +02:00
committed by GitHub
parent 15a03d4951
commit 1492a454e9
7 changed files with 8 additions and 124 deletions
-1
View File
@@ -14472,7 +14472,6 @@ dependencies = [
"primitive-types", "primitive-types",
"scale-info", "scale-info",
"sp-arithmetic", "sp-arithmetic",
"sp-core",
"sp-io", "sp-io",
"sp-runtime", "sp-runtime",
"sp-std", "sp-std",
+2 -7
View File
@@ -41,9 +41,8 @@ use xcm_builder::{
ChildParachainConvertsVia, ChildSystemParachainAsSuperuser, ChildParachainConvertsVia, ChildSystemParachainAsSuperuser,
CurrencyAdapter as XcmCurrencyAdapter, FixedWeightBounds, IsChildSystemParachain, IsConcrete, CurrencyAdapter as XcmCurrencyAdapter, FixedWeightBounds, IsChildSystemParachain, IsConcrete,
MintLocation, OriginToPluralityVoice, SignedAccountId32AsNative, SignedToAccountId32, MintLocation, OriginToPluralityVoice, SignedAccountId32AsNative, SignedToAccountId32,
SovereignSignedViaLocation, TakeWeightCredit, TinkernetMultisigAsAccountId, SovereignSignedViaLocation, TakeWeightCredit, TrailingSetTopicAsId, UsingComponents,
TinkernetMultisigAsNative, TrailingSetTopicAsId, UsingComponents, WeightInfoBounds, WeightInfoBounds, WithComputedOrigin, WithUniqueTopic,
WithComputedOrigin, WithUniqueTopic,
}; };
use xcm_executor::traits::WithOriginFilter; use xcm_executor::traits::WithOriginFilter;
@@ -71,8 +70,6 @@ pub type SovereignAccountOf = (
ChildParachainConvertsVia<ParaId, AccountId>, ChildParachainConvertsVia<ParaId, AccountId>,
// We can directly alias an `AccountId32` into a local account. // We can directly alias an `AccountId32` into a local account.
AccountId32Aliases<ThisNetwork, AccountId>, AccountId32Aliases<ThisNetwork, AccountId>,
// We can derive a local account from a Tinkernet XCMultisig MultiLocation.
TinkernetMultisigAsAccountId<AccountId>,
); );
/// Our asset transactor. This is what allows us to interest with the runtime facilities from the point of /// Our asset transactor. This is what allows us to interest with the runtime facilities from the point of
@@ -102,8 +99,6 @@ type LocalOriginConverter = (
SignedAccountId32AsNative<ThisNetwork, RuntimeOrigin>, SignedAccountId32AsNative<ThisNetwork, RuntimeOrigin>,
// A system child parachain, expressed as a Superuser, converts to the `Root` origin. // A system child parachain, expressed as a Superuser, converts to the `Root` origin.
ChildSystemParachainAsSuperuser<ParaId, RuntimeOrigin>, ChildSystemParachainAsSuperuser<ParaId, RuntimeOrigin>,
// Converts a Tinkernet XCMultisig MultiLocation into a `Signed` origin.
TinkernetMultisigAsNative<RuntimeOrigin>,
); );
parameter_types! { parameter_types! {
+4 -10
View File
@@ -40,8 +40,8 @@ use xcm_builder::{
ChildParachainAsNative, ChildParachainConvertsVia, ChildSystemParachainAsSuperuser, ChildParachainAsNative, ChildParachainConvertsVia, ChildSystemParachainAsSuperuser,
CurrencyAdapter as XcmCurrencyAdapter, FixedWeightBounds, IsChildSystemParachain, IsConcrete, CurrencyAdapter as XcmCurrencyAdapter, FixedWeightBounds, IsChildSystemParachain, IsConcrete,
MintLocation, SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, MintLocation, SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation,
TakeWeightCredit, TinkernetMultisigAsAccountId, TinkernetMultisigAsNative, TakeWeightCredit, TrailingSetTopicAsId, UsingComponents, WeightInfoBounds, WithComputedOrigin,
TrailingSetTopicAsId, UsingComponents, WeightInfoBounds, WithComputedOrigin, WithUniqueTopic, WithUniqueTopic,
}; };
use xcm_executor::{traits::WithOriginFilter, XcmExecutor}; use xcm_executor::{traits::WithOriginFilter, XcmExecutor};
@@ -53,12 +53,8 @@ parameter_types! {
pub LocalCheckAccount: (AccountId, MintLocation) = (CheckAccount::get(), MintLocation::Local); pub LocalCheckAccount: (AccountId, MintLocation) = (CheckAccount::get(), MintLocation::Local);
} }
pub type LocationConverter = ( pub type LocationConverter =
ChildParachainConvertsVia<ParaId, AccountId>, (ChildParachainConvertsVia<ParaId, AccountId>, AccountId32Aliases<ThisNetwork, AccountId>);
AccountId32Aliases<ThisNetwork, AccountId>,
// We can derive a local account from a Tinkernet XCMultisig MultiLocation.
TinkernetMultisigAsAccountId<AccountId>,
);
/// Our asset transactor. This is what allows us to interest with the runtime facilities from the point of /// Our asset transactor. This is what allows us to interest with the runtime facilities from the point of
/// view of XCM-only concepts like `MultiLocation` and `MultiAsset`. /// view of XCM-only concepts like `MultiLocation` and `MultiAsset`.
@@ -87,8 +83,6 @@ type LocalOriginConverter = (
SignedAccountId32AsNative<ThisNetwork, RuntimeOrigin>, SignedAccountId32AsNative<ThisNetwork, RuntimeOrigin>,
// A system child parachain, expressed as a Superuser, converts to the `Root` origin. // A system child parachain, expressed as a Superuser, converts to the `Root` origin.
ChildSystemParachainAsSuperuser<ParaId, RuntimeOrigin>, ChildSystemParachainAsSuperuser<ParaId, RuntimeOrigin>,
// Converts a Tinkernet XCMultisig MultiLocation into a `Signed` origin.
TinkernetMultisigAsNative<RuntimeOrigin>,
); );
parameter_types! { parameter_types! {
-2
View File
@@ -15,7 +15,6 @@ sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", d
sp-arithmetic = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } sp-arithmetic = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
sp-weights = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } sp-weights = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
@@ -50,7 +49,6 @@ std = [
"sp-arithmetic/std", "sp-arithmetic/std",
"sp-io/std", "sp-io/std",
"sp-runtime/std", "sp-runtime/std",
"sp-core/std",
"sp-weights/std", "sp-weights/std",
"frame-support/std", "frame-support/std",
"frame-system/std", "frame-system/std",
+2 -2
View File
@@ -34,7 +34,7 @@ pub use location_conversion::{
ChildParachainConvertsVia, DescribeAccountId32Terminal, DescribeAccountIdTerminal, ChildParachainConvertsVia, DescribeAccountId32Terminal, DescribeAccountIdTerminal,
DescribeAccountKey20Terminal, DescribeAllTerminal, DescribeFamily, DescribeLocation, DescribeAccountKey20Terminal, DescribeAllTerminal, DescribeFamily, DescribeLocation,
DescribePalletTerminal, DescribeTerminus, GlobalConsensusParachainConvertsFor, DescribePalletTerminal, DescribeTerminus, GlobalConsensusParachainConvertsFor,
HashedDescription, ParentIsPreset, SiblingParachainConvertsVia, TinkernetMultisigAsAccountId, HashedDescription, ParentIsPreset, SiblingParachainConvertsVia,
}; };
mod origin_conversion; mod origin_conversion;
@@ -42,7 +42,7 @@ pub use origin_conversion::{
BackingToPlurality, ChildParachainAsNative, ChildSystemParachainAsSuperuser, EnsureXcmOrigin, BackingToPlurality, ChildParachainAsNative, ChildSystemParachainAsSuperuser, EnsureXcmOrigin,
OriginToPluralityVoice, ParentAsSuperuser, RelayChainAsNative, SiblingParachainAsNative, OriginToPluralityVoice, ParentAsSuperuser, RelayChainAsNative, SiblingParachainAsNative,
SiblingSystemParachainAsSuperuser, SignedAccountId32AsNative, SignedAccountKey20AsNative, SiblingSystemParachainAsSuperuser, SignedAccountId32AsNative, SignedAccountKey20AsNative,
SignedToAccountId32, SovereignSignedViaLocation, TinkernetMultisigAsNative, SignedToAccountId32, SovereignSignedViaLocation,
}; };
mod asset_conversion; mod asset_conversion;
@@ -17,7 +17,6 @@
use crate::universal_exports::ensure_is_remote; use crate::universal_exports::ensure_is_remote;
use frame_support::traits::Get; use frame_support::traits::Get;
use parity_scale_codec::{Compact, Decode, Encode}; use parity_scale_codec::{Compact, Decode, Encode};
use sp_core::H256;
use sp_io::hashing::blake2_256; use sp_io::hashing::blake2_256;
use sp_runtime::traits::{AccountIdConversion, Convert, TrailingZeroInput}; use sp_runtime::traits::{AccountIdConversion, Convert, TrailingZeroInput};
use sp_std::{marker::PhantomData, prelude::*}; use sp_std::{marker::PhantomData, prelude::*};
@@ -346,52 +345,6 @@ impl<Network: Get<Option<NetworkId>>, AccountId: From<[u8; 20]> + Into<[u8; 20]>
} }
} }
/// Tinkernet ParaId used when matching Multisig MultiLocations.
pub const KUSAMA_TINKERNET_PARA_ID: u32 = 2125;
/// Tinkernet Multisig pallet instance used when matching Multisig MultiLocations.
pub const KUSAMA_TINKERNET_MULTISIG_PALLET: u8 = 71;
/// Constant derivation function for Tinkernet Multisigs.
/// Uses the Tinkernet genesis hash as a salt.
pub fn derive_tinkernet_multisig<AccountId: Decode>(id: u128) -> Result<AccountId, ()> {
AccountId::decode(&mut TrailingZeroInput::new(
&(
// The constant salt used to derive Tinkernet Multisigs, this is Tinkernet's genesis hash.
H256([
212, 46, 150, 6, 169, 149, 223, 228, 51, 220, 121, 85, 220, 42, 112, 244, 149, 243,
80, 243, 115, 218, 162, 0, 9, 138, 232, 68, 55, 129, 106, 210,
]),
// The actual multisig integer id.
u32::try_from(id).map_err(|_| ())?,
)
.using_encoded(blake2_256),
))
.map_err(|_| ())
}
/// Convert a Tinkernet Multisig `MultiLocation` value into a local `AccountId`.
pub struct TinkernetMultisigAsAccountId<AccountId>(PhantomData<AccountId>);
impl<AccountId: Decode + Clone> ConvertLocation<AccountId>
for TinkernetMultisigAsAccountId<AccountId>
{
fn convert_location(location: &MultiLocation) -> Option<AccountId> {
match location {
MultiLocation {
parents: _,
interior:
X3(
Parachain(KUSAMA_TINKERNET_PARA_ID),
PalletInstance(KUSAMA_TINKERNET_MULTISIG_PALLET),
// Index from which the multisig account is derived.
GeneralIndex(id),
),
} => derive_tinkernet_multisig(*id).ok(),
_ => None,
}
}
}
/// Converts a location which is a top-level parachain (i.e. a parachain held on a /// Converts a location which is a top-level parachain (i.e. a parachain held on a
/// Relay-chain which provides its own consensus) into a 32-byte `AccountId`. /// Relay-chain which provides its own consensus) into a 32-byte `AccountId`.
/// ///
@@ -836,24 +789,4 @@ mod tests {
}; };
assert!(ForeignChainAliasAccount::<[u8; 32]>::convert_location(&mul).is_none()); assert!(ForeignChainAliasAccount::<[u8; 32]>::convert_location(&mul).is_none());
} }
#[test]
fn remote_tinkernet_multisig_convert_to_account() {
let mul = MultiLocation {
parents: 0,
interior: X3(
Parachain(KUSAMA_TINKERNET_PARA_ID),
PalletInstance(KUSAMA_TINKERNET_MULTISIG_PALLET),
GeneralIndex(0),
),
};
assert_eq!(
[
97, 160, 244, 60, 133, 145, 170, 26, 202, 108, 203, 156, 114, 116, 175, 30, 156,
195, 43, 101, 243, 51, 193, 162, 152, 188, 30, 165, 244, 81, 70, 90
],
TinkernetMultisigAsAccountId::<[u8; 32]>::convert_location(&mul).unwrap()
);
}
} }
@@ -16,12 +16,8 @@
//! Various implementations for `ConvertOrigin`. //! Various implementations for `ConvertOrigin`.
use crate::location_conversion::{
derive_tinkernet_multisig, KUSAMA_TINKERNET_MULTISIG_PALLET, KUSAMA_TINKERNET_PARA_ID,
};
use frame_support::traits::{EnsureOrigin, Get, GetBacking, OriginTrait}; use frame_support::traits::{EnsureOrigin, Get, GetBacking, OriginTrait};
use frame_system::RawOrigin as SystemRawOrigin; use frame_system::RawOrigin as SystemRawOrigin;
use parity_scale_codec::Decode;
use polkadot_parachain::primitives::IsSystem; use polkadot_parachain::primitives::IsSystem;
use sp_runtime::traits::TryConvert; use sp_runtime::traits::TryConvert;
use sp_std::marker::PhantomData; use sp_std::marker::PhantomData;
@@ -245,37 +241,6 @@ where
} }
} }
/// Convert a Tinkernet Multisig `MultiLocation` value into a `Signed` origin.
pub struct TinkernetMultisigAsNative<RuntimeOrigin>(PhantomData<RuntimeOrigin>);
impl<RuntimeOrigin: OriginTrait> ConvertOrigin<RuntimeOrigin>
for TinkernetMultisigAsNative<RuntimeOrigin>
where
RuntimeOrigin::AccountId: Decode,
{
fn convert_origin(
origin: impl Into<MultiLocation>,
kind: OriginKind,
) -> Result<RuntimeOrigin, MultiLocation> {
let origin = origin.into();
match (kind, origin) {
(
OriginKind::Native,
MultiLocation {
parents: _,
interior:
X3(
Junction::Parachain(KUSAMA_TINKERNET_PARA_ID),
Junction::PalletInstance(KUSAMA_TINKERNET_MULTISIG_PALLET),
// Index from which the multisig account is derived.
Junction::GeneralIndex(id),
),
},
) => Ok(RuntimeOrigin::signed(derive_tinkernet_multisig(id).map_err(|_| origin)?)),
(_, origin) => Err(origin),
}
}
}
/// `EnsureOrigin` barrier to convert from dispatch origin to XCM origin, if one exists. /// `EnsureOrigin` barrier to convert from dispatch origin to XCM origin, if one exists.
pub struct EnsureXcmOrigin<RuntimeOrigin, Conversion>(PhantomData<(RuntimeOrigin, Conversion)>); pub struct EnsureXcmOrigin<RuntimeOrigin, Conversion>(PhantomData<(RuntimeOrigin, Conversion)>);
impl<RuntimeOrigin: OriginTrait + Clone, Conversion: TryConvert<RuntimeOrigin, MultiLocation>> impl<RuntimeOrigin: OriginTrait + Clone, Conversion: TryConvert<RuntimeOrigin, MultiLocation>>