Expand description

Transaction Payment Pallet

This pallet provides the basic logic needed to pay the absolute minimum amount needed for a transaction to be included. This includes:

  • base fee: This is the minimum amount a user pays for a transaction. It is declared as a base weight in the runtime and converted to a fee using WeightToFee.
  • weight fee: A fee proportional to amount of weight a transaction consumes.
  • length fee: A fee proportional to the encoded length of the transaction.
  • tip: An optional tip. Tip increases the priority of the transaction, giving it a higher chance to be included by the transaction queue.

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 + [targeted_fee_adjustment * weight_fee];
final_fee = inclusion_fee + tip;
  • targeted_fee_adjustment: This is a multiplier that can tune the final fee based on the congestion of the network.

Additionally, this pallet allows one to configure:


pub use pallet::*;


The module that hosts all the FRAME types needed to add this pallet to a runtime.


Require the transactor pay for themselves and maybe include a tip to gain additional priority in the queue.
A struct to make the fee multiplier a constant
Implements the transaction payment for a pallet implementing the Currency trait (eg. the pallet_balances) using an unbalance handler (implementing OnUnbalanced).
The FeeDetails is composed of:
The base fee and adjusted weight and length fees constitute the inclusion fee.
Information related to a dispatchable’s class, weight, and fee that can be queried from the runtime.
A struct to update the weight multiplier per block. It implements Convert<Multiplier, Multiplier>, meaning that it can convert the previous multiplier to the next one. This should be called on on_finalize of a block, prior to potentially cleaning the weight data from the system pallet.


Something that can convert the current multiplier to the next one.
Handle withdrawing, refunding and depositing of transaction fees.

Type Definitions

Fee multiplier.