When one transaction has two outcomes. A transaction succeeded on-chain while its canonical outcome proof said it failed. SeverityMedium ResultValid
Failure path
- Input 01Signed TX AExecutes
- Input 02Signed TX AInvalidNonce
- Storage keySame outcome IDHash collision
- Canonical proofFailure winsState effects remain
Invariant
An executed transaction and its canonical outcome proof must agree.
What failed
A malicious chunk producer could include the same signed transaction twice. Both outcomes used the transaction hash as their ID, allowing the later failure to overwrite the earlier success in canonical storage.
Impact
RPC clients, indexers, wallets, exchanges, relayers, and light-client systems could observe a valid failure proof for a transaction whose state effects had already occurred.