Write-up for Submerged
Overview
This challenge is based on an observation: by using single-use addresses, you can craft transactions such that a smart contract can verify the transaction hash of the current transaction. As a result, we can write a contract which simulates a hypothetical TXHASH opcode, which other contracts can build upon.
There are a few interesting use cases for this primitive, but this challenge was focused primarily
on having challengers construct transactions that could be verified by the TxHashSimulator.
Solving the puzzle
By modifying the code from the challenge files, we can write a Foundry script which constructs the raw transaction, derives the sender, and tells us how much ETH to fund the sender with before broadcasting the raw transaction:
After this, it's as simple as calling the proveSubmergedSeed method and passing in the raw transaction bytes.