#32346·solana

Balances are collected for transactions within a TransactionBatch that aren't locked or executed

Author: buffaluCreated Jun 30, 2023Updated Jan 7, 2025
Labelsenhancementgood first issuecommunityvalidator

Problem

When collecting balances before and after execution in BankingStage, the balances for transactions within a TransactionBatch that didn't execute still get collected even though the state didn't change.

There is likely a slight performance hit for doing this, especially with batches that contain many transactions that failed to lock.

Proposed Solution

When collecting pre-balances, check the lock results and only collect pre-balances for transactions that lock successfully. When collecting post-balances, check the execution results and only collect post-balances for transactions that executed.