How do you turn a one-off formal verification effort into something that keeps paying off?
For
@Optimism, one hand-written Dafny model we wrote became three things:
- a proof of what "correct" means for cross-chain message validation
- ground truth for AI agents checking the Go code, function by function
- a fuzzer where every failure is a violation of a proven property
Along the way it caught a cold-start rewind bug that could silently erase backfilled blocks, which Optimism has since remediated.
The technical breakdown, from Dafny invariants to the fuzzing harness, below 👇