It's pretty easy to get state change before/after a block using a Web3 library. But I am stuck on getting the state change of a transaction.
Like any etherscan txn receipt we can view the State change: https://etherscan.io/tx/0x66519e9ce700b99a473da93cbe1f437bc843dc2a40a5c2079fd5d2defb421ec3#statechange
The same contract could have multiple state changes within a block, how to programmatically get each of these changes? I would imagine I need a full-archive node to access the historical state before this block and replay all the txns within that block?