Asserter/Checker Problem

  • Asserter makes a claim , checker checks the claim for cost and gets R as reward, if successful.
  • If Asserter cheats without getting caught, Checker loses in the form of loss of items of value.
  • Two main threats to worry about: Laziness and Bribery
  • Bribery: Asserter bribes Checker more than the reward . Prevent this by large bond by Asserter so that bribe can’t be bigger than the reward .
  • Laziness: Checker does not check intentionally.
  • If we assume, asserter cheats with prob. X, then checker’s utility comes as:

, if checker doesn’t

, if checker checks

  • So, checking is only worthwhile, if utility of checking > not checking.

  • Thus, asserter can cheat with random prob < required and not get caught.
  • This doesn’t depend on how much asserter gains from cheating, as long as it’s non-zero which is a bad result.
  • Even adding more checkers doesn’t help, as the reward gets distributed which only reduces checker’s incentives.

Reason this is a problem:

  • Asserter controls the behaviour of the checker, as the utility of checker depends on asserter’s prob.
  • Need to add an attention parameter in checker’s incentives where checker pre-computes asserter’s claim off-chain beforehand and has to verify it on-chain time to time.
  • Two new parameters:

, fraction of time checker’s will post response

, penalty in case checker gives wrong answer

  • New equation becomes,

  • If , then checking is better than not checking
  • cost of checking is low

Assume 1 assertion / 5 mins and 0.0013. cost per assertion = 0.01*0.3% interest cost of locking = 0.0006

  • Multiple checkers need to submit proofs differently thus, scaling to multiple checkers efficient.

Technical Details

Checker: private key , public key

Hash fn:

Computation to solve:

Asserter challenge:

Checker post on-chain iff

Note: Only checker and asserter knows and , and requires

Checker can guess with prob. G, then multiply deposit with

  • Asserter publishes f(x), can challenge checker’s response while publishing r
  • Check the accusation and penalise checker, half the deposit to asserter
  • If asserter incorrect, accusation reverted.
  • Each checker will have different prob of posting on-chain due to use of private key, thus can’t copy others computation.
  • Asserter now instead of bribing checker, will try to mislead him into giving false information on-chain.


(Almost) Everything you need to know about Optimistic Rollup

The Cheater Checking Problem: Why the Verifier’s Dilemma is Harder Than You Think