Skip to content
Snippets Groups Projects
Commit 7679d061 authored by Daniel Shiposha's avatar Daniel Shiposha Committed by GitHub
Browse files

Add `ConstFeeMultiplier` to the transaction payment pallet (#12222)

* fix: FeeMultiplierUpdate

* fix: cargo fmt

* fix: rustdoc

* Revert "fix: rustdoc"

This reverts commit 96b6ad80a4cd4d856cf5a830889858c4dd4c385b.

* Revert "fix: cargo fmt"

This reverts commit 13016527bdbc53d9484642d6b52430550c0efc55.

* Revert "fix: FeeMultiplierUpdate"

This reverts commit 2cbddd0b85e0293d0eeda859807ddf70cee29067.

* feat: add ConstFeeMultiplier

* fix: use cConstFeeMultiplier in the template node
parent 11372795
No related merge requests found
......@@ -14,7 +14,9 @@ use sp_consensus_aura::sr25519::AuthorityId as AuraId;
use sp_core::{crypto::KeyTypeId, OpaqueMetadata};
use sp_runtime::{
create_runtime_str, generic, impl_opaque_keys,
traits::{AccountIdLookup, BlakeTwo256, Block as BlockT, IdentifyAccount, NumberFor, Verify},
traits::{
AccountIdLookup, BlakeTwo256, Block as BlockT, IdentifyAccount, NumberFor, One, Verify,
},
transaction_validity::{TransactionSource, TransactionValidity},
ApplyExtrinsicResult, MultiSignature,
};
......@@ -38,7 +40,7 @@ pub use frame_support::{
pub use frame_system::Call as SystemCall;
pub use pallet_balances::Call as BalancesCall;
pub use pallet_timestamp::Call as TimestampCall;
use pallet_transaction_payment::CurrencyAdapter;
use pallet_transaction_payment::{ConstFeeMultiplier, CurrencyAdapter, Multiplier};
#[cfg(any(feature = "std", test))]
pub use sp_runtime::BuildStorage;
pub use sp_runtime::{Perbill, Permill};
......@@ -251,13 +253,17 @@ impl pallet_balances::Config for Runtime {
type WeightInfo = pallet_balances::weights::SubstrateWeight<Runtime>;
}
parameter_types! {
pub FeeMultiplier: Multiplier = Multiplier::one();
}
impl pallet_transaction_payment::Config for Runtime {
type Event = Event;
type OnChargeTransaction = CurrencyAdapter<Balances, ()>;
type OperationalFeeMultiplier = ConstU8<5>;
type WeightToFee = IdentityFee<Balance>;
type LengthToFee = IdentityFee<Balance>;
type FeeMultiplierUpdate = ();
type FeeMultiplierUpdate = ConstFeeMultiplier<FeeMultiplier>;
}
impl pallet_sudo::Config for Runtime {
......
......@@ -226,6 +226,30 @@ where
}
}
/// A struct to make the fee multiplier a constant
pub struct ConstFeeMultiplier<M: Get<Multiplier>>(sp_std::marker::PhantomData<M>);
impl<M: Get<Multiplier>> MultiplierUpdate for ConstFeeMultiplier<M> {
fn min() -> Multiplier {
M::get()
}
fn target() -> Perquintill {
Default::default()
}
fn variability() -> Multiplier {
Default::default()
}
}
impl<M> Convert<Multiplier, Multiplier> for ConstFeeMultiplier<M>
where
M: Get<Multiplier>,
{
fn convert(_previous: Multiplier) -> Multiplier {
Self::min()
}
}
/// Storage releases of the pallet.
#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo, MaxEncodedLen)]
enum Releases {
......@@ -371,7 +395,8 @@ pub mod pallet {
// add 1 percent;
let addition = target / 100;
if addition == Weight::zero() {
// this is most likely because in a test setup we set everything to ().
// this is most likely because in a test setup we set everything to ()
// or to `ConstFeeMultiplier`.
return
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment