Proof verifier

Your browser verifies Willow's proofs itself, so it doesn't take the server's word for anything.

What to verify
Advanced

Ending in public, no key is needed: the page verifies blocks Willow has already proven. Ending in your API key, Willow also proves new blocks when you ask. The chain's ID is the part after /rpc/; choosing a chain above changes it.

Its answer for the same request is compared with the proven one too. The provider must allow browser requests.

A log proof only counts if it was made by a program with one of these keys. One pair serves all seven chains. Replace them only if Willow tells you a new program is in use. Published keys:

How this works

Transactions. A block's header commits to every transaction and receipt in it. Willow sends them with Merkle proofs, and your browser verifies they are in the block, in milliseconds.

Logs. Willow proves each block's logs with SP1 proofs. Your browser verifies them and works out from your filter which logs must be there, so none can be left out.

Blocks. Your browser then verifies the block against Ethereum. On Ethereum it follows the validators' signatures from a starting point built into this page. On the other six chains it reads the chain's claim on Ethereum, which settles once its challenge period ends, after 5 to 7 days. Newer blocks are verified by the sequencer's signature. If Willow can't send that data, the page asks public nodes and shows the result in gold.

What you rely on. No node, Willow included. This page's code is served by Willow, with the program keys and the starting point. Its source is on GitHub, with a script that rebuilds this page and verifies that each file in SHA256SUMS.txt is the one Willow serves. To run the same verification on your own machine, ask Willow for the command-line verifier.

Links. ?chain=base&tx=0x… opens a transaction, and ?chain=base&from=…&to=…&address=…&topic0=… every matching log in a block range. Copy link makes one.