Ethereum doesn't store transaction signature (r,s,v) in its tries. The first answer in that it is state-based, not UTXO based: Retrieve the signature of a transaction on the blockchain

But there is no way to re-validate a transaction after it get mined. Is it good approach?


A transaction will not be mined without a valid signature, under current consensus rules. Thus, if it has been mined, a valid signature was provided.

This means that you can retrieve a historical transaction, and a historical state trie from just before that transaction, and replay the execution to validate the result.

Moreover, although the signature is not stored in the state trie, it is stored in the raw block data. At any point, you can retrieve the raw transaction and validate the signature as needed.

| improve this answer | |

Of course Ethereum stores the r,s,v parameters in the trie. Every block header has a transactionsRoot of a merkle tree, where each leaf is a transaction that has the fields nonce, gasPrice, gasLimit, to, value, v, r, s, data, init.

Transaction signatures aren't stored in the state tree because the state tree doesn't know or care what a transaction is, it just cares about the balances, nonces, code, and storage slots of all addresses.

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.