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:



  • The pallet module in each FRAME pallet hosts the most important items needed to construct this pallet.


  • 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.


Type Definitions