diff --git a/runtime/common/src/handlers.rs b/runtime/common/src/handlers.rs index 197e3574378589bc969d502d1d81976033de72d8..11d54620946788232c47d7681782c22013f72b70 100644 --- a/runtime/common/src/handlers.rs +++ b/runtime/common/src/handlers.rs @@ -15,7 +15,10 @@ // along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>. use super::{entities::*, AccountId, IdtyIndex}; -use frame_support::{pallet_prelude::Weight, traits::UnfilteredDispatchable}; +use frame_support::{ + pallet_prelude::Weight, + traits::{Imbalance, UnfilteredDispatchable}, +}; use pallet_smith_members::SmithRemovalReason; use sp_core::Get; @@ -178,3 +181,25 @@ impl< !pallet_authority_members::Pallet::<Runtime>::online().contains(idty_index) } } + +type CreditOf<Runtime, Balances> = + frame_support::traits::tokens::fungible::Credit<Runtime, Balances>; +pub struct HandleFees<Runtime, Balances>( + frame_support::pallet_prelude::PhantomData<Runtime>, + frame_support::pallet_prelude::PhantomData<Balances>, +); +impl<Runtime, Balances> frame_support::traits::OnUnbalanced<CreditOf<Runtime::AccountId, Balances>> + for HandleFees<Runtime, Balances> +where + Runtime: pallet_treasury::Config, + Balances: frame_support::traits::fungible::Balanced<Runtime::AccountId>, +{ + fn on_nonzero_unbalanced(amount: CreditOf<Runtime::AccountId, Balances>) { + // fee is moved to treasury + let _ = Balances::deposit( + &pallet_treasury::Pallet::<Runtime>::account_id(), + amount.peek(), + frame_support::traits::tokens::Precision::Exact, + ); + } +} diff --git a/runtime/common/src/pallets_config.rs b/runtime/common/src/pallets_config.rs index 0b906cddb07fc0d2d574be2db35a47472e4a1adf..b694409073f69d3afd6682b09117132abf910387 100644 --- a/runtime/common/src/pallets_config.rs +++ b/runtime/common/src/pallets_config.rs @@ -104,7 +104,8 @@ macro_rules! pallets_config { impl pallet_duniter_account::Config for Runtime { // does currency adapter in any case, but adds "refund with quota" feature - type InnerOnChargeTransaction = FungibleAdapter<Balances, HandleFees>; + type InnerOnChargeTransaction = + FungibleAdapter<Balances, HandleFees<Runtime, Balances>>; type Refund = Quota; type RuntimeEvent = RuntimeEvent; type WeightInfo = weights::pallet_duniter_account::WeightInfo<Runtime>; @@ -162,7 +163,7 @@ macro_rules! pallets_config { impl pallet_balances::Config for Runtime { type AccountStore = Account; type Balance = Balance; - type DustRemoval = HandleFees; + type DustRemoval = HandleFees<Runtime, Balances>; type ExistentialDeposit = ExistentialDeposit; type FreezeIdentifier = (); type MaxFreezes = frame_support::pallet_prelude::ConstU32<0>; @@ -175,18 +176,6 @@ macro_rules! pallets_config { type WeightInfo = weights::pallet_balances::WeightInfo<Runtime>; } - type CreditOf = frame_support::traits::tokens::fungible::Credit<AccountId, Balances>; - pub struct HandleFees; - impl frame_support::traits::OnUnbalanced<CreditOf> for HandleFees { - fn on_nonzero_unbalanced(amount: CreditOf) { - // fee is moved to treasury - let _ = Balances::deposit( - &Treasury::account_id(), - amount.peek(), - frame_support::traits::tokens::Precision::Exact, - ); - } - } pub struct OnChargeTransaction; parameter_types! { @@ -336,7 +325,7 @@ macro_rules! pallets_config { type GetCurrentEpochIndex = GetCurrentEpochIndex<Self>; type MaxRequests = frame_support::traits::ConstU32<100>; type OnFilledRandomness = (); - type OnUnbalanced = HandleFees; + type OnUnbalanced = HandleFees<Runtime, Balances>; type ParentBlockRandomness = pallet_babe::ParentBlockRandomness<Self>; type RandomnessFromOneEpochAgo = pallet_babe::RandomnessFromOneEpochAgo<Self>; type RequestPrice = frame_support::traits::ConstU64<2_000>; @@ -518,7 +507,7 @@ macro_rules! pallets_config { type EvaluationPrice = frame_support::traits::ConstU64<1000>; type MaxRefereeDistance = MaxRefereeDistance; type MinAccessibleReferees = MinAccessibleReferees; - type OnUnbalanced = HandleFees; + type OnUnbalanced = HandleFees<Runtime, Balances>; type OnValidDistanceStatus = Wot; type RuntimeEvent = RuntimeEvent; type RuntimeHoldReason = RuntimeHoldReason; diff --git a/runtime/g1/src/lib.rs b/runtime/g1/src/lib.rs index c2b192a2403bec3e99bacba4861cb9b39973d2ce..8dccda2f1d873a1b5e7b754f712e7b69b7cf16b1 100644 --- a/runtime/g1/src/lib.rs +++ b/runtime/g1/src/lib.rs @@ -35,10 +35,7 @@ pub use common_runtime::{ constants::*, entities::*, handlers::*, AccountId, Address, Balance, BlockNumber, FullIdentificationOfImpl, GetCurrentEpochIndex, Hash, Header, IdtyIndex, Index, Signature, }; -use frame_support::{ - traits::{fungible::Balanced, Contains, Imbalance}, - PalletId, -}; +use frame_support::{traits::Contains, PalletId}; pub use frame_system::Call as SystemCall; use frame_system::EnsureRoot; pub use pallet_balances::Call as BalancesCall; diff --git a/runtime/gdev/src/lib.rs b/runtime/gdev/src/lib.rs index a2b0ec5d808f29c4e7c9bee0aa3932ac5f112c28..cecb06be5088a2346dc7dd256479df2d11857756 100644 --- a/runtime/gdev/src/lib.rs +++ b/runtime/gdev/src/lib.rs @@ -35,10 +35,7 @@ pub use common_runtime::{ constants::*, entities::*, handlers::*, AccountId, Address, Balance, BlockNumber, FullIdentificationOfImpl, GetCurrentEpochIndex, Hash, Header, IdtyIndex, Index, Signature, }; -use frame_support::{ - traits::{fungible::Balanced, Contains, Imbalance}, - PalletId, -}; +use frame_support::{traits::Contains, PalletId}; pub use frame_system::Call as SystemCall; use frame_system::EnsureRoot; pub use pallet_balances::Call as BalancesCall; diff --git a/runtime/gtest/src/lib.rs b/runtime/gtest/src/lib.rs index 6be12db81e88fed8c40bef5608b14f70d5e58d1b..842fc6a387814272075a72aad5a8ee5ca3508b6c 100644 --- a/runtime/gtest/src/lib.rs +++ b/runtime/gtest/src/lib.rs @@ -35,10 +35,7 @@ pub use common_runtime::{ constants::*, entities::*, handlers::*, AccountId, Address, Balance, BlockNumber, FullIdentificationOfImpl, GetCurrentEpochIndex, Hash, Header, IdtyIndex, Index, Signature, }; -use frame_support::{ - traits::{fungible::Balanced, Contains, Imbalance}, - PalletId, -}; +use frame_support::{traits::Contains, PalletId}; pub use frame_system::Call as SystemCall; use frame_system::EnsureRoot; pub use pallet_balances::Call as BalancesCall;