For the block parameter of eth_getStorageAt call, we are given 4 options:
HEX String - an integer block number String "earliest" for the earliest/genesis block String "latest" - for the latest mined block String "pending" - for the pending state/transactions (https://github.com/ethereum/wiki/wiki/JSON-RPC#the-default-block-parameter)
How does Ethereum handle the case when the param is not 'latest'? In other words, how does it manage to retrieve the history storage?