Skip to content

op-dispute-mon: Fix handling of out of sync nodes #17814

@ajsutton

Description

@ajsutton

When op-dispute-mon is configured with multiple rollup RPCs and one is behind, it should use the in-sync node as source of truth, but is detecting it as a disagreement between them.

In this case the two nodes returned:

Node 1: Success, output root matching game
Node 2: err="failed to get L2 block ref with sync status: failed to determine L2BlockRef of height 13676523, could not get payload: not found"

Which resulted in the results array:

t=2025-10-10T10:55:59+1000 lvl=info msg="Got result" node=0 block=13676523 root=0x0000000000000000000000000000000000000000000000000000000000000000 isSafe=false notFound=true err=<nil>
t=2025-10-10T10:55:59+1000 lvl=info msg="Got result" node=1 block=13676523 root=0x7b7d60cdbd5b1a652050684e2b9f383eb014c3a9af3f868422363b21c08a34f2 isSafe=true notFound=false err=<nil>

and it logged the error:

t=2025-10-10T10:55:59+1000 lvl=warn msg="Nodes disagree on output root" l2BlockNum=13676523 firstOutput=0x7b7d60cdbd5b1a652050684e2b9f383eb014c3a9af3f868422363b21c08a34f2 found=1 valid=2

We're treating notFound as a valid result which is correct when the proposal is from a far future block, but incorrect in this case. We probably need to be smarter somehow...

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions