Build1 publisher3 min readPublished
Alpenglow drops a vote account without a BLS key before it counts stake
The consensus set under Alpenglow is the top 2,000 vote accounts by stake, and the filter checks for a BLS public key in vote state before it considers stake at all. Each admitted seat pays 1.6 SOL an epoch.
The Engineer · Build desk

What happened
- Under Alpenglow the validator rebuilds the consensus set once an epoch, filtering every vote account and keeping the top 2,000 by stake.
- The filter also removes every account whose stake merely equals the last admitted one, so three validators tied at position 2,000 leave an admitted set of 1,997.
- Every admitted vote account pays a Validator Admission Ticket at the epoch boundary, 1.6 SOL at today's 400 ms slots and 0.8 SOL if slots reach 200 ms.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- cost A full set of 2,000 seats burns roughly 3,200 SOL an epoch, near 584,000 SOL a year at today's slot time, and operators pay it at every epoch boundary whether or not they noticed the gate.
- exposure Delegators absorb a failed admission as an epoch with no rewards, and the validator's dashboard gives them no signal that it happened.
- contradiction According to the dev.to post, the reference watchtower and the node compute the balance requirement differently, so an operator monitoring the tool can be told an account is healthy while the node is preparing to reject it.
- decision Operators have to hold ticket runway inside the vote account and stop counting delegator rewards toward it, with genesis's 160 SOL pre-funding as the working guide.
At about 1,300 voting validators, Solana sits roughly 700 seats short of the 2,000-seat cap [1][2][1]. So the tests that bite first are the two that run before the sort. Both live in a filter function in the validator, which a dev.to post reads line by line [20].
Alpenglow votes are BLS signatures. A vote account with no BLS public key in its vote state cannot vote, and the filter drops it before it looks at stake [4]. The post calls this the check most likely to catch a validator that upgraded the binary and forgot the key [5]. Stake does not rescue it, and neither does the payout path: the node runs the same filter twice, once for consensus admission and once for reward distribution [16].
The balance test is the number easiest to get wrong. A vote state is 3,762 bytes, and at the mainnet rent rate in force after the second SIMD-0437 step, 5,080 lamports per byte, the rent-exempt minimum comes to 19,110,960 lamports, about 0.019 SOL [7][14][2]. Add one epoch's ticket at today's 400 ms slots and the bar is roughly 1.62 SOL [9][3]. Since 3 September 2026 the node subtracts accrued delegator rewards from the lamport balance before it compares, because those lamports are not the validator's to spend [7]. A vote account holding 3 SOL of which 1.5 SOL belongs to delegators presents 1.5 SOL to the test and misses by about 0.12 SOL [15][4].
Ticket pricing is a table keyed to slot time: 1.6 SOL per epoch at 400 ms, 1.4 at 350 ms, 1.2 at 300 ms, 1.0 at 250 ms, 0.8 at 200 ms [9]. The per-epoch figure falls because faster slots make shorter epochs, and the annual cost holds by construction, with 1.6 SOL over 182.6 epochs and 0.8 SOL over 365.2 epochs both landing near 292 SOL a validator [10]. Genesis pre-funds each bootstrap vote account with 160 SOL, which is 100 epochs of tickets [13].
Since 9 September 2026 the debit has had its own reward type in block reward data, so explorers and tax tools will show a negative line item on every admitted vote account once the gate is live [12]. The node will also state its verdict on request. The admin RPC method validatorAdmissionTicketStatus reports eligibility two epochs ahead, with three failure reasons: vote account not found, no BLS pubkey, and insufficient funds in the vote account [18].
The cut-off itself is one line of code, keeping only stakes greater than the floor, so a single lamport above a neighbour holds a seat and a single lamport below loses one [8]. For the seat cost, 1.62 SOL is the right bar only for an operator whose vote account holds nothing but its own lamports. Share block revenue through that account and the bar becomes 1.62 SOL plus whatever the delegators are owed [15].
What to watch
- Whether the watchtower's balance check is patched to subtract pending delegator rewards before the admission gate goes live.
- Whether the voting validator count climbs toward 2,000, making the stake cut-off rather than the BLS key the test that evicts operators.
- Whether slot time drops below 400 ms, moving the per-epoch ticket down the table while the annual cost stays near 292 SOL.