StateAtBlockNumber currently calls pruner.HeaderByNumberIfStateRetained, which fully decodes the block header even though opening historical state only needs:
GlobalStateRoot
Hash, for the state-retention hash → number check
A partial-header decode could avoid materializing heavier unused fields such as EventsBloom.
Use #3782 as reference implementation
StateAtBlockNumber currently calls pruner.HeaderByNumberIfStateRetained, which fully decodes the block header even though opening historical state only needs:
GlobalStateRoot
Hash, for the state-retention hash → number check
A partial-header decode could avoid materializing heavier unused fields such as EventsBloom.
Use #3782 as reference implementation