Skip to content

docs(anoncomms): Dispute mechanism spec for Logos Oracle Zone - #390

Open
seugu wants to merge 2 commits into
masterfrom
docs/dispute-detection
Open

docs(anoncomms): Dispute mechanism spec for Logos Oracle Zone#390
seugu wants to merge 2 commits into
masterfrom
docs/dispute-detection

Conversation

@seugu

@seugu seugu commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

The prev version of RFC has no proposer dispute solving mech so in this PR we present the dispute detection mech.

Assumptions: the disputy is pretty expensive in terms of time and gas but also so rare.

It requires at least N many attestation (requires N TXs ), LEZ contract deduplicates them all and discard minorities.
Then compute median and compare.

@seugu seugu changed the title docs(anoncomms): Dispute mechanism spec docs(anoncomms): Dispute mechanism spec for Logos Oracle Zone Aug 3, 2026
@seugu
seugu marked this pull request as draft August 3, 2026 06:35
@seugu
seugu marked this pull request as ready for review August 13, 2026 19:37
@seugu seugu self-assigned this Aug 13, 2026
@seugu
seugu requested a review from sydhds August 13, 2026 19:37
Membership of the active oracle set determines which `oracle id`s submit observations that indexers will accept.
Membership is also the basis of incentivization.
To join, an `oracle node` MUST bond stake in a LEZ contract and register its `oracle id` in the membership tree held in LEZ.Registration is a LEZ-only operation and does not require a cross-zone write into the Oracle Zone.
To join, an `oracle node` MUST bond stake in a LEZ contract and register

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A bit out of context, but at some point, we might need to define what an oracle node need to stake

| Heartbeat / round cadence | `R_round` | 1 block (`~30 s`) | Defined in block-height terms; must be `>= T_block`. |
| Dispute window | `W_dispute` | 3 Bedrock blocks (`~90 s`) | Time a proposed price waits for a dispute before it finalizes. |
| Heartbeat / round cadence | `R_round` | 1 Bedrock block (`~30 s`) | Defined in block-height terms; must be `>= T_block`. |
| Dispute window | `W_dispute` | 90 LEZ blocks (`~90 s`) | Time a proposed price waits for a dispute before it finalizes. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

90 LEZ blocks == 90s? What's the diff between Bedrock blocks and LEZ blocks?

Each `PriceObservation` carries the same `signature` and `membership_proof` it had on Bedrock.
LEZ verifies these against the `root_cycle` frozen for the disputed round's cycle, not against the current live root.

Since one transaction may not hold the full set at once,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The DisputeSubmission proto should have new fields like:

  • total numbers of observations
  • offset
  • obervations length

So first DisputeSubmission would advetize:

  • total numbers of observations = 256
  • offset: 0
  • length: 140

Second one:

  • total numbers of observations = 256
  • offset: 116
  • length: 116

This would allow the lez contracts to enforce and know that a submission is splitted. Wdyt?

Otherwise LEZ computes the median over the valid set with the same rules as [Aggregation](#aggregation)
and compares it to the written value.
If they match, the dispute fails and the written value stands.
If they differ, the dispute succeeds, the written `AttestedPrice` is replaced with the recomputed one,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we have a field indicating the AttestedPrice has been replaced by the dispute mechanism here?


How the dispute set is stored and deduplicated,
and whether resolution runs in one transaction or several, are left to implementation,
since both depend on the LEZ storage model and cycle budget.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will need some benchmark and tests so we can validate it is feasible :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants