superchain-trace: a debugger for OP Stack interop messages

Cross-chain messages on the OP Superchain are easy to send and surprisingly hard to debug. superchain-trace shows you exactly where your message is in its lifecycle and why it might be stuck.

superchain-trace
Open-source · Rust · MIT

The interop debug gap

The OP Superchain interop system lets contracts on Optimism, Base, Zora, Mode, and other OP Stack chains pass messages directly. The happy path is great. The unhappy path is opaque: when a message is "stuck" — submitted on the source chain, indexed by OP-Supervisor, but not yet relayed and executed on the destination — there's no developer-facing tool to tell you which step failed and why.

The lifecycle has four stages: source-chain submit, supervisor index, safety level promotion (unsafe → safe → finalized), and destination relay+execute. A stuck message can be at any of them, and the failure mode at each stage looks different. Without a tracer you're reading raw receipts and guessing.

What superchain-trace does

Three commands, each single-shot:

  • trace <tx> --chain op — fetches the tx receipt, identifies L2ToL2CrossDomainMessenger events, walks the lifecycle, and prints where it actually is
  • status <tx> --chain base — quick safety-level check (unsafe / safe / finalized)
  • chains — list supported Superchain networks

Built for the OP Foundation Interop Mission. Single Rust binary, cargo install, no service dependencies — same conventions as the rest of the kcolbchain Arbitrum/OP toolkit.

Where it fits

superchain-trace is the OP-side companion to the Arbitrum tools we shipped this week:

One Rust binary per problem; no shared service to deploy.