mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 12:51:02 +00:00
cargo +nightly fmt (#3540)
* cargo +nightly fmt * add cargo-fmt check to ci * update ci * fmt * fmt * skip macro * ignore bridges
This commit is contained in:
@@ -16,21 +16,22 @@
|
||||
|
||||
//! Various implementations for `ConvertOrigin`.
|
||||
|
||||
use sp_std::{marker::PhantomData, convert::TryInto};
|
||||
use xcm::v0::{MultiLocation, OriginKind, NetworkId, Junction, BodyId, BodyPart};
|
||||
use xcm_executor::traits::{Convert, ConvertOrigin};
|
||||
use frame_support::traits::{EnsureOrigin, Get, OriginTrait, GetBacking};
|
||||
use frame_support::traits::{EnsureOrigin, Get, GetBacking, OriginTrait};
|
||||
use frame_system::RawOrigin as SystemRawOrigin;
|
||||
use polkadot_parachain::primitives::IsSystem;
|
||||
use sp_std::{convert::TryInto, marker::PhantomData};
|
||||
use xcm::v0::{BodyId, BodyPart, Junction, MultiLocation, NetworkId, OriginKind};
|
||||
use xcm_executor::traits::{Convert, ConvertOrigin};
|
||||
|
||||
/// Sovereign accounts use the system's `Signed` origin with an account ID derived from the `LocationConverter`.
|
||||
pub struct SovereignSignedViaLocation<LocationConverter, Origin>(
|
||||
PhantomData<(LocationConverter, Origin)>
|
||||
PhantomData<(LocationConverter, Origin)>,
|
||||
);
|
||||
impl<
|
||||
LocationConverter: Convert<MultiLocation, Origin::AccountId>,
|
||||
Origin: OriginTrait,
|
||||
> ConvertOrigin<Origin> for SovereignSignedViaLocation<LocationConverter, Origin> where Origin::AccountId: Clone {
|
||||
impl<LocationConverter: Convert<MultiLocation, Origin::AccountId>, Origin: OriginTrait>
|
||||
ConvertOrigin<Origin> for SovereignSignedViaLocation<LocationConverter, Origin>
|
||||
where
|
||||
Origin::AccountId: Clone,
|
||||
{
|
||||
fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result<Origin, MultiLocation> {
|
||||
if let OriginKind::SovereignAccount = kind {
|
||||
let location = LocationConverter::convert(origin)?;
|
||||
@@ -42,27 +43,23 @@ impl<
|
||||
}
|
||||
|
||||
pub struct ParentAsSuperuser<Origin>(PhantomData<Origin>);
|
||||
impl<
|
||||
Origin: OriginTrait,
|
||||
> ConvertOrigin<Origin> for ParentAsSuperuser<Origin> {
|
||||
impl<Origin: OriginTrait> ConvertOrigin<Origin> for ParentAsSuperuser<Origin> {
|
||||
fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result<Origin, MultiLocation> {
|
||||
match (kind, origin) {
|
||||
(OriginKind::Superuser, MultiLocation::X1(Junction::Parent)) =>
|
||||
Ok(Origin::root()),
|
||||
(OriginKind::Superuser, MultiLocation::X1(Junction::Parent)) => Ok(Origin::root()),
|
||||
(_, origin) => Err(origin),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub struct ChildSystemParachainAsSuperuser<ParaId, Origin>(PhantomData<(ParaId, Origin)>);
|
||||
impl<
|
||||
ParaId: IsSystem + From<u32>,
|
||||
Origin: OriginTrait,
|
||||
> ConvertOrigin<Origin> for ChildSystemParachainAsSuperuser<ParaId, Origin> {
|
||||
impl<ParaId: IsSystem + From<u32>, Origin: OriginTrait> ConvertOrigin<Origin>
|
||||
for ChildSystemParachainAsSuperuser<ParaId, Origin>
|
||||
{
|
||||
fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result<Origin, MultiLocation> {
|
||||
match (kind, origin) {
|
||||
(OriginKind::Superuser, MultiLocation::X1(Junction::Parachain(id)))
|
||||
if ParaId::from(id).is_system() =>
|
||||
if ParaId::from(id).is_system() =>
|
||||
Ok(Origin::root()),
|
||||
(_, origin) => Err(origin),
|
||||
}
|
||||
@@ -70,60 +67,53 @@ impl<
|
||||
}
|
||||
|
||||
pub struct SiblingSystemParachainAsSuperuser<ParaId, Origin>(PhantomData<(ParaId, Origin)>);
|
||||
impl<
|
||||
ParaId: IsSystem + From<u32>,
|
||||
Origin: OriginTrait
|
||||
> ConvertOrigin<Origin> for SiblingSystemParachainAsSuperuser<ParaId, Origin> {
|
||||
impl<ParaId: IsSystem + From<u32>, Origin: OriginTrait> ConvertOrigin<Origin>
|
||||
for SiblingSystemParachainAsSuperuser<ParaId, Origin>
|
||||
{
|
||||
fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result<Origin, MultiLocation> {
|
||||
match (kind, origin) {
|
||||
(OriginKind::Superuser, MultiLocation::X2(Junction::Parent, Junction::Parachain(id)))
|
||||
if ParaId::from(id).is_system() =>
|
||||
Ok(Origin::root()),
|
||||
(
|
||||
OriginKind::Superuser,
|
||||
MultiLocation::X2(Junction::Parent, Junction::Parachain(id)),
|
||||
) if ParaId::from(id).is_system() => Ok(Origin::root()),
|
||||
(_, origin) => Err(origin),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub struct ChildParachainAsNative<ParachainOrigin, Origin>(
|
||||
PhantomData<(ParachainOrigin, Origin)>
|
||||
);
|
||||
impl<
|
||||
ParachainOrigin: From<u32>,
|
||||
Origin: From<ParachainOrigin>,
|
||||
> ConvertOrigin<Origin> for ChildParachainAsNative<ParachainOrigin, Origin> {
|
||||
pub struct ChildParachainAsNative<ParachainOrigin, Origin>(PhantomData<(ParachainOrigin, Origin)>);
|
||||
impl<ParachainOrigin: From<u32>, Origin: From<ParachainOrigin>> ConvertOrigin<Origin>
|
||||
for ChildParachainAsNative<ParachainOrigin, Origin>
|
||||
{
|
||||
fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result<Origin, MultiLocation> {
|
||||
match (kind, origin) {
|
||||
(OriginKind::Native, MultiLocation::X1(Junction::Parachain(id)))
|
||||
=> Ok(Origin::from(ParachainOrigin::from(id))),
|
||||
(OriginKind::Native, MultiLocation::X1(Junction::Parachain(id))) =>
|
||||
Ok(Origin::from(ParachainOrigin::from(id))),
|
||||
(_, origin) => Err(origin),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub struct SiblingParachainAsNative<ParachainOrigin, Origin>(
|
||||
PhantomData<(ParachainOrigin, Origin)>
|
||||
PhantomData<(ParachainOrigin, Origin)>,
|
||||
);
|
||||
impl<
|
||||
ParachainOrigin: From<u32>,
|
||||
Origin: From<ParachainOrigin>,
|
||||
> ConvertOrigin<Origin> for SiblingParachainAsNative<ParachainOrigin, Origin> {
|
||||
impl<ParachainOrigin: From<u32>, Origin: From<ParachainOrigin>> ConvertOrigin<Origin>
|
||||
for SiblingParachainAsNative<ParachainOrigin, Origin>
|
||||
{
|
||||
fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result<Origin, MultiLocation> {
|
||||
match (kind, origin) {
|
||||
(OriginKind::Native, MultiLocation::X2(Junction::Parent, Junction::Parachain(id)))
|
||||
=> Ok(Origin::from(ParachainOrigin::from(id))),
|
||||
(OriginKind::Native, MultiLocation::X2(Junction::Parent, Junction::Parachain(id))) =>
|
||||
Ok(Origin::from(ParachainOrigin::from(id))),
|
||||
(_, origin) => Err(origin),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Our Relay-chain has a native origin given by the `Get`ter.
|
||||
pub struct RelayChainAsNative<RelayOrigin, Origin>(
|
||||
PhantomData<(RelayOrigin, Origin)>
|
||||
);
|
||||
impl<
|
||||
RelayOrigin: Get<Origin>,
|
||||
Origin,
|
||||
> ConvertOrigin<Origin> for RelayChainAsNative<RelayOrigin, Origin> {
|
||||
pub struct RelayChainAsNative<RelayOrigin, Origin>(PhantomData<(RelayOrigin, Origin)>);
|
||||
impl<RelayOrigin: Get<Origin>, Origin> ConvertOrigin<Origin>
|
||||
for RelayChainAsNative<RelayOrigin, Origin>
|
||||
{
|
||||
fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result<Origin, MultiLocation> {
|
||||
match (kind, origin) {
|
||||
(OriginKind::Native, MultiLocation::X1(Junction::Parent)) => Ok(RelayOrigin::get()),
|
||||
@@ -132,41 +122,33 @@ impl<
|
||||
}
|
||||
}
|
||||
|
||||
pub struct SignedAccountId32AsNative<Network, Origin>(
|
||||
PhantomData<(Network, Origin)>
|
||||
);
|
||||
impl<
|
||||
Network: Get<NetworkId>,
|
||||
Origin: OriginTrait,
|
||||
> ConvertOrigin<Origin> for SignedAccountId32AsNative<Network, Origin> where
|
||||
pub struct SignedAccountId32AsNative<Network, Origin>(PhantomData<(Network, Origin)>);
|
||||
impl<Network: Get<NetworkId>, Origin: OriginTrait> ConvertOrigin<Origin>
|
||||
for SignedAccountId32AsNative<Network, Origin>
|
||||
where
|
||||
Origin::AccountId: From<[u8; 32]>,
|
||||
{
|
||||
fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result<Origin, MultiLocation> {
|
||||
match (kind, origin) {
|
||||
(OriginKind::Native, MultiLocation::X1(Junction::AccountId32 { id, network }))
|
||||
if matches!(network, NetworkId::Any) || network == Network::get()
|
||||
=> Ok(Origin::signed(id.into())),
|
||||
if matches!(network, NetworkId::Any) || network == Network::get() =>
|
||||
Ok(Origin::signed(id.into())),
|
||||
(_, origin) => Err(origin),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub struct SignedAccountKey20AsNative<Network, Origin>(
|
||||
PhantomData<(Network, Origin)>
|
||||
);
|
||||
impl<
|
||||
Network: Get<NetworkId>,
|
||||
Origin: OriginTrait
|
||||
> ConvertOrigin<Origin> for SignedAccountKey20AsNative<Network, Origin> where
|
||||
pub struct SignedAccountKey20AsNative<Network, Origin>(PhantomData<(Network, Origin)>);
|
||||
impl<Network: Get<NetworkId>, Origin: OriginTrait> ConvertOrigin<Origin>
|
||||
for SignedAccountKey20AsNative<Network, Origin>
|
||||
where
|
||||
Origin::AccountId: From<[u8; 20]>,
|
||||
{
|
||||
fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result<Origin, MultiLocation> {
|
||||
match (kind, origin) {
|
||||
(OriginKind::Native, MultiLocation::X1(Junction::AccountKey20 { key, network }))
|
||||
if matches!(network, NetworkId::Any) || network == Network::get() =>
|
||||
{
|
||||
Ok(Origin::signed(key.into()))
|
||||
}
|
||||
Ok(Origin::signed(key.into())),
|
||||
(_, origin) => Err(origin),
|
||||
}
|
||||
}
|
||||
@@ -174,10 +156,9 @@ impl<
|
||||
|
||||
/// `EnsureOrigin` barrier to convert from dispatch origin to XCM origin, if one exists.
|
||||
pub struct EnsureXcmOrigin<Origin, Conversion>(PhantomData<(Origin, Conversion)>);
|
||||
impl<
|
||||
Origin: OriginTrait + Clone,
|
||||
Conversion: Convert<Origin, MultiLocation>,
|
||||
> EnsureOrigin<Origin> for EnsureXcmOrigin<Origin, Conversion> where
|
||||
impl<Origin: OriginTrait + Clone, Conversion: Convert<Origin, MultiLocation>> EnsureOrigin<Origin>
|
||||
for EnsureXcmOrigin<Origin, Conversion>
|
||||
where
|
||||
Origin::PalletsOrigin: PartialEq,
|
||||
{
|
||||
type Success = MultiLocation;
|
||||
@@ -206,15 +187,13 @@ impl<
|
||||
/// Typically used when configuring `pallet-xcm` for allowing normal accounts to dispatch an XCM from an `AccountId32`
|
||||
/// origin.
|
||||
pub struct SignedToAccountId32<Origin, AccountId, Network>(
|
||||
PhantomData<(Origin, AccountId, Network)>
|
||||
PhantomData<(Origin, AccountId, Network)>,
|
||||
);
|
||||
impl<
|
||||
Origin: OriginTrait + Clone,
|
||||
AccountId: Into<[u8; 32]>,
|
||||
Network: Get<NetworkId>,
|
||||
> Convert<Origin, MultiLocation> for SignedToAccountId32<Origin, AccountId, Network> where
|
||||
Origin::PalletsOrigin: From<SystemRawOrigin<AccountId>> +
|
||||
TryInto<SystemRawOrigin<AccountId>, Error=Origin::PalletsOrigin>
|
||||
impl<Origin: OriginTrait + Clone, AccountId: Into<[u8; 32]>, Network: Get<NetworkId>>
|
||||
Convert<Origin, MultiLocation> for SignedToAccountId32<Origin, AccountId, Network>
|
||||
where
|
||||
Origin::PalletsOrigin: From<SystemRawOrigin<AccountId>>
|
||||
+ TryInto<SystemRawOrigin<AccountId>, Error = Origin::PalletsOrigin>,
|
||||
{
|
||||
fn convert(o: Origin) -> Result<MultiLocation, Origin> {
|
||||
o.try_with_caller(|caller| match caller.try_into() {
|
||||
@@ -231,16 +210,11 @@ impl<
|
||||
///
|
||||
/// Typically used when configuring `pallet-xcm` for allowing a collective's Origin to dispatch an XCM from a
|
||||
/// `Plurality` origin.
|
||||
pub struct BackingToPlurality<Origin, COrigin, Body>(
|
||||
PhantomData<(Origin, COrigin, Body)>
|
||||
);
|
||||
impl<
|
||||
Origin: OriginTrait + Clone,
|
||||
COrigin: GetBacking,
|
||||
Body: Get<BodyId>,
|
||||
> Convert<Origin, MultiLocation> for BackingToPlurality<Origin, COrigin, Body> where
|
||||
Origin::PalletsOrigin: From<COrigin> +
|
||||
TryInto<COrigin, Error=Origin::PalletsOrigin>
|
||||
pub struct BackingToPlurality<Origin, COrigin, Body>(PhantomData<(Origin, COrigin, Body)>);
|
||||
impl<Origin: OriginTrait + Clone, COrigin: GetBacking, Body: Get<BodyId>>
|
||||
Convert<Origin, MultiLocation> for BackingToPlurality<Origin, COrigin, Body>
|
||||
where
|
||||
Origin::PalletsOrigin: From<COrigin> + TryInto<COrigin, Error = Origin::PalletsOrigin>,
|
||||
{
|
||||
fn convert(o: Origin) -> Result<MultiLocation, Origin> {
|
||||
o.try_with_caller(|caller| match caller.try_into() {
|
||||
@@ -248,9 +222,10 @@ impl<
|
||||
Some(backing) => Ok(Junction::Plurality {
|
||||
id: Body::get(),
|
||||
part: BodyPart::Fraction { nom: backing.approvals, denom: backing.eligible },
|
||||
}.into()),
|
||||
}
|
||||
.into()),
|
||||
None => Err(co.into()),
|
||||
}
|
||||
},
|
||||
Err(other) => Err(other),
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user