Ethereum contracts run on a blockchain and therefore have the characteristics of blockchains: all transactions (state transitions) are traceable and can be replayed by any node in the system. In fact they are
replayed by any node downloading the blockchain from scratch. When the node is up to date, all current storage of the contracts can be queried from a DApp, JSON RPC etc.
How can the history
of the storage be queried?
To give an example, if one were to build a subcurrency using the Subcurrency example
, we would effectively have an altcoin running on Ethereum. Securely transacting with these "coins" is a matter of sending Ethereum transactions to the contract calling its
But how would we do things such as:
- Show the transaction history of an address in terms of the subcurrency
- Show transaction details in terms of the subcurrency, i.e. "On 2015-01-05 11:28 an amount of 33 subcoins were transferred from address X to address Y, executed in Ethereum transaction 0x12345 in block 82324"
- Search for addresses that have transacted in the subcoin, even if they don't currently possess coins anymore