SIMD-0290

Relax Fee Payer Constraint

Author: Andrew Fitzgerald (Anza) · Category: Core Protocol GitHub →

TL;DR

This proposal aims to relax the handling of invalid fee payers in Solana. Currently, if a transaction with an invalid fee payer is included in a block, the entire block is rejected. This proposal suggests that instead of rejecting the entire block, the transaction with the invalid fee payer should simply skip execution.

Summary

This proposal aims to relax the handling of invalid fee payers in Solana. Currently, if a transaction with an invalid fee payer is included in a block, the entire block is rejected. This proposal suggests that instead of rejecting the entire block, the transaction with the invalid fee payer should simply skip execution.

Motivation

The current constraint forces block-validation to be synchronous since in order to determine if a block is valid or not, some subset of transactions must be executed in order to determine if the fee payer has sufficient funds to pay the transaction fees. By relaxing this constraint, we move one step closer towards asynchronous validation/execution.

Key Changes

  • The fee payer account has exactly fee lamports.
  • The fee payer account has at least X + rent_exempt_reserve lamports.

Impact

Transactions that are unable to pay fees may be included in blocks.

Backwards Compatibility

- All previously valid transactions and blocks are still valid. - Blocks produced after the change may be rejected by previous versions of the validator client(s).

Security Considerations

- Possible attack vector where a malicious leader can spam transactions with invalid fee payers. Mitigation for this is charging full CUs for these.