pallet_transaction_payment
Branch/Release: release-polkadot-v1.10.0
Source Code
Purpose
pallet-transaction-payment implements transaction fee logic.
In substrate, every transaction has an associated call, and each call has its own weight function. The weight function estimates the time it takes to execute the call.
Config::WeightToFee is a mapping between the smallest unit of compute (Weight) and smallest unit of fee.
This pallet also exposes
- how to update fees for the next block based on past fees (
Config::FeeMultiplierUpdate) - how fees are paid (
Config::OnChargeTransaction)
The base fee and adjusted weight and length fees constitute the inclusion fee, which is the minimum fee for a transaction to be included in a block. The formula of final fee:
inclusion_fee = base_fee + length_fee + [fee_multiplier_update * weight_fee];
final_fee = inclusion_fee + tip;The inputs are defined below in the glossary and config sections.
Config
- Pallet-specific handlers:
OnChargeTransaction-- Handler for withdrawing, refunding and depositing the transaction fee. Type must implement the traitOnChargeTransaction<Self>.FeeMultiplierUpdate-- Handler to define how base fees change over time (over blocks). Type must implement the traitMultiplierUpdate. Possible assignments includeConstantFee,SlowAdjustingFee, andFastAdjustingFee.
- Pallet-specific converters:
WeightToFee-- Mapping between the smallest unit of weight and smallest unit of fee. Type must implement the traitWeightToFee<Balance = BalanceOf<Self>>.LengthToFee-- Convert a length value into a deductible fee based on the currency type. Type must implement the traitWeightToFee<Balance = BalanceOf<Self>>.
- Pallet-specific constants:
OperationalFeeMultiplier-- A fee multiplier forOperationalextrinsics to compute "virtual tip" to boost theirpriority. Type must implement the traitGet<u32>.
- Common configs:
RuntimeEvent
Dispatchables
There are no dispatchables (and no errors) in this pallet. This pallet is only intended to configure the transaction fee logic for a chain.
Events
TransactionFeePaid(who, actual_fee, tip)-- a transaction fee was paid by accountwhowith total amount ofactual_fee + tip.