solana-labs/solana

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

Open

#32,346 opened on Jun 30, 2023

View on GitHub
 (3 comments) (0 reactions) (0 assignees)Rust (12,651 stars) (3,950 forks)batch import
communityenhancementgood first issuevalidator

Description

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.

Contributor guide