Fix for FungiblesAdapter - trait changes: Contains -> AssetChecking

This commit is contained in:
Branislav Kontur
2022-11-08 13:48:15 +01:00
parent 6ece1b652f
commit 23f0bcdc7d
4 changed files with 23 additions and 14 deletions
Generated
+1
View File
@@ -6525,6 +6525,7 @@ dependencies = [
"sp-std",
"substrate-wasm-builder",
"xcm",
"xcm-builder",
"xcm-executor",
]
+1
View File
@@ -28,6 +28,7 @@ sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", d
# Polkadot
polkadot-primitives = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" }
xcm = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" }
xcm-builder = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" }
xcm-executor = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" }
# Cumulus
+9 -5
View File
@@ -18,12 +18,13 @@
use frame_support::traits::{
fungibles::{self, Balanced, CreditOf},
Contains, ContainsPair, Currency, Get, Imbalance, OnUnbalanced,
ContainsPair, Currency, Get, Imbalance, OnUnbalanced,
};
use pallet_asset_tx_payment::HandleCredit;
use sp_runtime::traits::Zero;
use sp_std::marker::PhantomData;
use xcm::latest::{AssetId, Fungibility::Fungible, MultiAsset, MultiLocation};
use xcm_builder::{AssetChecking, MintLocation};
/// Type alias to conveniently refer to the `Currency::NegativeImbalance` associated type.
pub type NegativeImbalance<T> = <pallet_balances::Pallet<T> as Currency<
@@ -87,13 +88,16 @@ where
/// Allow checking in assets that have issuance > 0.
pub struct NonZeroIssuance<AccountId, Assets>(PhantomData<(AccountId, Assets)>);
impl<AccountId, Assets> Contains<<Assets as fungibles::Inspect<AccountId>>::AssetId>
for NonZeroIssuance<AccountId, Assets>
impl<AccountId, Assets> AssetChecking<Assets::AssetId> for NonZeroIssuance<AccountId, Assets>
where
Assets: fungibles::Inspect<AccountId>,
{
fn contains(id: &<Assets as fungibles::Inspect<AccountId>>::AssetId) -> bool {
!Assets::total_issuance(*id).is_zero()
fn asset_checking(id: &Assets::AssetId) -> Option<MintLocation> {
if Assets::total_issuance(*id).is_zero() {
None
} else {
Some(MintLocation::Local)
}
}
}
@@ -31,7 +31,7 @@ use frame_support::{
log, match_types, parameter_types,
traits::{
fungibles::{self, Balanced, CreditOf},
ConstU32, Contains, ContainsPair, Everything, Get, Nothing,
ConstU32, ContainsPair, Everything, Get, Nothing,
},
};
use pallet_asset_tx_payment::HandleCredit;
@@ -43,10 +43,10 @@ use xcm::latest::{prelude::*, Weight as XCMWeight};
use xcm_builder::{
AccountId32Aliases, AllowKnownQueryResponses, AllowSubscriptionsFrom,
AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, AsPrefixedGeneralIndex,
ConvertedConcreteId, CurrencyAdapter, EnsureXcmOrigin, FixedWeightBounds, FungiblesAdapter,
IsConcrete, NativeAsset, ParentIsPreset, RelayChainAsNative, SiblingParachainAsNative,
SiblingParachainConvertsVia, SignedAccountId32AsNative, SignedToAccountId32,
SovereignSignedViaLocation, TakeWeightCredit, UsingComponents,
AssetChecking, ConvertedConcreteId, CurrencyAdapter, EnsureXcmOrigin, FixedWeightBounds,
FungiblesAdapter, IsConcrete, MintLocation, NativeAsset, ParentIsPreset, RelayChainAsNative,
SiblingParachainAsNative, SiblingParachainConvertsVia, SignedAccountId32AsNative,
SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, UsingComponents,
};
use xcm_executor::{
traits::{JustTry, ShouldExecute},
@@ -244,13 +244,16 @@ impl<T: Get<MultiLocation>> ContainsPair<MultiAsset, MultiLocation> for AssetsFr
/// Allow checking in assets that have issuance > 0.
pub struct NonZeroIssuance<AccountId, Assets>(PhantomData<(AccountId, Assets)>);
impl<AccountId, Assets> Contains<<Assets as fungibles::Inspect<AccountId>>::AssetId>
for NonZeroIssuance<AccountId, Assets>
impl<AccountId, Assets> AssetChecking<Assets::AssetId> for NonZeroIssuance<AccountId, Assets>
where
Assets: fungibles::Inspect<AccountId>,
{
fn contains(id: &<Assets as fungibles::Inspect<AccountId>>::AssetId) -> bool {
!Assets::total_issuance(*id).is_zero()
fn asset_checking(id: &Assets::AssetId) -> Option<MintLocation> {
if Assets::total_issuance(*id).is_zero() {
None
} else {
Some(MintLocation::Local)
}
}
}