Skip to content

Accord

General-purpose, capital-weighted Schelling arbitration oracle on Solana.

Any Solana program can file a dispute via a single CPI call. The Accord draws stake-weighted jurors using a verifiable random function, collects commit-reveal votes, and emits a ruling the filer reads lazily. No central judge is picked — the Schelling equilibrium makes honesty the profitable strategy conditional on an honest stake majority. See the Trust Profile for every residual assumption.

Why use it

  • Two CPI calls to integrate: create_dispute() → get_ruling(). The Accord has zero knowledge of your program's domain.
  • Schelling-point security (honest-majority-stake assumed): jurors vote truthfully because voting with the majority is the profitable strategy. Inspired by Kleros (Ethereum, since 2019, 1000+ disputes).
  • Oracle-verified randomness: the magicblock VRF (RFC 9381) determines juror selection. Unbiasable, unpredictable, on-chain verifiable. Availability is provider-dependent — see the Trust Profile.
  • Canonical juror-set root: a live on-chain stake accumulator (Merkle-Sum Tree) keeps the juror set + stake weights as a root maintained on every stake/unstake. No posted root to withhold, no bond, no fraud window — the draw is manipulation-resistant by mechanism (ADR-0012).
  • Exponential appeals: 3 → 7 → 15 → 31 jurors. Bribery is deterred, not structurally impossible — see the security-value ceiling in the Trust Profile.

How it works

Your Program (Arbitrable)
    │
    ├─ create_dispute(subaccord, options, evidence_hash, fee)
    │      └─ Accord draws N jurors (VRF, stake-weighted)
    │      └─ Jurors commit hash(vote, salt) → reveal {vote, salt}
    │      └─ Majority → Ruling
    │
    └─ get_ruling(dispute_id) → winning_option

What you need

  1. A Subaccord — a specialized juror pool with its own staking token, min stake, and fee schedule. Use an existing one or create your own (permissionless).
  2. Capital — the filer pays INITIAL_NUM_JURORS × fee_per_juror (= 3 × fee_per_juror) per round. Appeals cost exponentially more.
  3. The SDK — @useaccord/sdk for TypeScript, or raw Anchor IDL for any language.

Next steps

Deep reads