Add dispute-game economics: challenger bonds, slashing, and terminal … - #672
Merged
Mimah97 merged 2 commits intoJul 30, 2026
Merged
Conversation
…arbitration/void Challenging a resolution candidate was free, letting an attacker stall resolution indefinitely by repeatedly disputing at zero cost. A losing challenger could also never lose their stake, and a candidate that exhausted its appeal rounds (or was simply abandoned mid-dispute) had no path out of `Challenged`, permanently locking user collateral. - `challenge` now requires a bond (>= MIN_CHALLENGE_BOND_AMOUNT), locked in the contract alongside the proposer's bond and recorded per-candidate across every appeal round. - `finalize` (and the new `arbitrate_uphold_proposer`) refund the proposer and slash every recorded challenger's bond, split reward/burn/treasury. - `void_market` (admin, timelocked via ARBITRATION_TIMELOCK_SECONDS since the last challenge deadline) slashes the proposer's bond instead, refunds challengers, and calls a new market-contract `void_market` entrypoint (gated to the registered resolution contract) to cancel the market so collateral becomes reclaimable rather than stuck. - New events for bond lock/slash/reward/void; unit tests cover the bond requirement, the documented split, an adversarial multi-round griefing scenario, and both terminal arbitration paths.
9 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
closes #661
This PR completes the dispute-game incentive mechanism by introducing balanced bonding, fair reward distribution, and a clear terminal resolution process for unresolved disputes.
Changes
Added a challenger bond requirement for dispute initiation.
Implemented win/lose payout logic for proposers and challengers.
Added automatic/governed slashing of incorrect proposers.
Refunded or rewarded bonds based on the final dispute outcome.
Introduced a terminal dispute state after MAX_APPEAL_ROUNDS (3), allowing disputes to be resolved through arbitration or marked as void, preventing markets from remaining indefinitely unresolved.
Impact
These changes strengthen the protocol's dispute economics, discourage malicious proposals and frivolous challenges, and ensure every dispute reaches a deterministic on-chain conclusion.