I am considering trying to use or implementing some form of light Ethereum node that only needs access the most recent version of data stored in smart contract storage on the blockchain and trying to only download pertinent blocks. In this consideration, I am looking for more information about how a contract's memory is kept. I imagine that the initial state of all of a contracts persistent variables is stored in the same block that the contract is mined into.
Is there a way to know the block number/block data that contains the transaction that causes the change in state (most recent version) of this persistent contract storage?