Reward full priority fee to validator
Summary
Reward 100% of priority fee to validator.
Motivation
To better align validator incentives, priority fee should change from current 50% burn 50% reward to 100% reward to validator.
Alternatives Considered
Current 50-50% model is an alternative, which does not fully align with validator's incentive, and encourages side deals.
New Terminology
None
Detailed Design
-
When calculate fee for
SanitizedMessage
, it should separate prioritization_fee from transaction fee.- change
FeeStructure.calculate_fee()
- change
-
During fee collection, priority fees are accumulated separately from transaction fees;
- change
bank.collector_fees
andbank.filter_program_errors_and_collect_fee()
- change
-
When distributing collected fees, the collector_id receives the sum of priority fees. Logic for distributing base transaction fees is unchanged.
- Change
bank.distribute_transaction_fee()
- Change
-
No change to fee payer account validation;
-
No change to how much transaction would be paying in total;
Impact
The implemented proposal aims to enhance incentives for validators to prioritize transactions with higher priority fees, thereby providing more substantial compensation for the validators' efforts in processing higher-paying transactions.
Security Considerations
None
Drawbacks
By paying the complete priority fee to their own accounts, leaders can now inflate the reported priority fees in their blocks artificially, incurring minimal costs. Previously, burning a portion of the priority fees deincentivized such behavior. The artificial inflation of fees could lead wallets to overestimate the required priority fee.
Backwards Compatibility
The implementation of this proposal necessitates the use of a feature gate. Although there will be no alteration to the transaction submitter's payment structure, the software incorporating the proposal will allocate a greater portion of fees to the leader compared to other versions. Consequently, a feature gate is essential to ensure that all validators transition to the new functionality at the epoch boundary, thereby preserving consensus.