TransactionPayment¶
Events¶
TransactionFeePaid¶
A transaction fee actual_fee
, of which tip
was added to the minimum inclusion fee,
has been paid by who
.
Attributes¶
Name | Type | Composition |
---|---|---|
who | T::AccountId |
AccountId |
actual_fee | BalanceOf<T> |
u128 |
tip | BalanceOf<T> |
u128 |
Storage functions¶
NextFeeMultiplier¶
Python¶
result = substrate.query(
'TransactionPayment', 'NextFeeMultiplier', []
)
Return value¶
'u128'
StorageVersion¶
Python¶
result = substrate.query(
'TransactionPayment', 'StorageVersion', []
)
Return value¶
('V1Ancient', 'V2')
Constants¶
OperationalFeeMultiplier¶
A fee multiplier for Operational
extrinsics to compute "virtual tip" to boost their
priority
This value is multiplied by the final_fee
to obtain a "virtual tip" that is later
added to a tip component in regular priority
calculations.
It means that a Normal
transaction can front-run a similarly-sized Operational
extrinsic (with no tip), by including a tip value greater than the virtual tip.
``rust,ignore
// For
Normal`
let priority = priority_calc(tip);
// For Operational
let virtual_tip = (inclusion_fee + tip) * OperationalFeeMultiplier;
let priority = priority_calc(tip + virtual_tip);
```
Note that since we use final_fee
the multiplier applies also to the regular tip
sent with the transaction. So, not only does the transaction get a priority bump based
on the inclusion_fee
, but we also amplify the impact of tips applied to Operational
transactions.
Value¶
5
Python¶
constant = substrate.get_constant('TransactionPayment', 'OperationalFeeMultiplier')