Skip to content

docs(bsm): design — make CLOB attesters slashable for forgery#19

Merged
drewstone merged 1 commit into
mainfrom
docs/bsm-fraud-slash
Jun 13, 2026
Merged

docs(bsm): design — make CLOB attesters slashable for forgery#19
drewstone merged 1 commit into
mainfrom
docs/bsm-fraud-slash

Conversation

@drewstone

Copy link
Copy Markdown
Contributor

The "bonded, slashable attesters" claim is aspirational for the CLOB path — peers detect misconduct off-chain (Verdict::Forged/Censored) but nothing routes it to a slash. This drafts the mechanism, honestly scoped.

The hard truth it surfaces

The attested path is un-challengeable today: the quorum signs H(bookId, nonce, fillsHash) and BatchFill carries the orders' terms but no signatures. So a forgery ("quorum vouched for an order trader X never signed") has no on-chain proof — there's no signature to invalidate, and "never signed" is a negative. Compression bought this.

What the design adds

Misconduct On-chain proof? Resolution
Forgery Yes, after binding the signed order set into the attested digest challengeForgedBatch → slash the quorum
Wrong-match Yes — the SP1 proven path a re-proof contradicts the settled fills
Censorship No (can't prove a negative w/o a DA layer) set-determinism + proposer rotation, not slashing

challengeForgedBatch is self-contained (the signed batch is public): re-derive the digest, verify the quorum signed this ordersCommitment, prove the order is in the committed set, show its trader sig is invalid → proposeSlash every co-signer (independent re-verification is the slashable duty). No new batch storage.

Cost & decisions

The load-bearing part is a consensus change (bind ordersCommitment over (order ‖ sig) into the attested digest) — breaking, ships fleet-wide like the proposer-sig change. The doc lists the calls for you: slash split (whole-quorum vs proposer-heavy), FORGERY_SLASH_BPS, challenger bounty, and whether to sequence the proven path first.

Not implemented — surfacing the design before touching consensus.

🤖 Generated with Claude Code

The redemption-default slash rail is live; CLOB attester misconduct has no
on-chain path. This drafts it, honestly scoped:

- Forgery (quorum vouched for an order no trader signed) is the one new
  slashable condition — but the attested path is un-challengeable today: its
  digest commits only fillsHash and BatchFill carries no signatures, so you
  can't prove a forgery (no sig to invalidate, "never signed" is a negative).
  The fix binds an ordersCommitment OVER SIGNED ORDERS into the attested digest
  (a consensus change), after which challengeForgedBatch is a self-contained
  proof: re-derive the digest, verify the quorum signed it, prove the order is
  in the committed set, show its trader sig is invalid → proposeSlash the quorum.
- Wrong-match rides the SP1 proven path (a re-proof contradicts the fills).
- Censorship is deliberately NOT slashable (can't prove a negative without a DA
  layer) — handled by set-determinism + proposer rotation.

Lists the decisions for Drew (slash split, rate, bounty, sequencing). Not yet
implemented — the digest binding is breaking and needs sign-off.
@drewstone drewstone merged commit e8dfc19 into main Jun 13, 2026
5 checks passed
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.

1 participant