Skip to main content

What is an Arbitrable Contract?

An arbitrable contract is any smart contract that can create disputes and enforce rulings from Kleros. Your contract implements an arbitrable interface (IArbitrableV2 in Kleros V2, ERC-792 in V1), which defines two things:
  1. How disputes are created: your contract decides when conflicts arise
  2. How rulings are enforced: your contract executes the outcome
Kleros handles everything in between: juror selection, voting, appeals, and determining the final ruling.
This section includes both V2 arbitrable contract guides (IArbitrableV2) and the V1 protocol standards - ERC-792 and ERC-1497 - along with their integration references (V1 Arbitrable Apps, Centralized Arbitrator, Arbitrable Proxy).

When to Use Kleros Arbitration

Good Fit

  • Subjective disputes humans can judge
  • High-value transactions worth the cost
  • Cases where trust is impossible
  • Multi-party disagreements

Poor Fit

  • Fully objective, on-chain verifiable outcomes
  • Micro-transactions (fees > value)
  • Time-critical decisions (< 1 week)
  • Disputes requiring real-world enforcement

Key Design Decisions

Before writing code, decide on these:

1. Ruling Options

Define what jurors can decide. Common patterns:
Choice 0 is reserved for “Refuse to Arbitrate” jurors select this when the dispute is invalid or unanswerable.

2. Who Pays Fees?

Arbitration costs ETH. Your contract decides who pays:
Most Kleros products use loser pays both parties deposit the arbitration fee upfront, and the winner is reimbursed. This is the pattern used by Escrow V2 and Curate V2.

3. Dispute Triggers

When does a dispute start? Common triggers:
  • Explicit request Party calls raiseDispute()
  • Timeout No response within deadline
  • Challenge Someone disputes a pending action
  • Automatic Conflicting claims detected

4. Evidence Submission

Decide how evidence reaches jurors:
  • On-chain events Emit Evidence events from your contract
  • Separate module Use the EvidenceModule contract
  • Cross-chain Evidence from foreign chain via gateway

Interface Requirements (V2)

This section is specific to Kleros V2. For V1, contracts implement ERC-792 and ERC-1497 instead, and must emit a MetaEvidence event so the Court interface can display the dispute.
To integrate with Kleros V2, your contract must implement:

Architecture Patterns

Pattern A: Direct Integration

Your contract is the arbitrable. Simplest approach.

Pattern B: Proxy/Resolver

Use DisputeResolver as intermediary. Good for upgradability.

Pattern C: Cross-Chain

Arbitrable on mainnet, resolution on Arbitrum.

Cost Considerations

Start with 3 jurors in General Court for most disputes. Increase for high-value cases.

Security Mindset

Your contract must handle:
  • Reentrancy rule() is an external call
  • Ruling validation Check ruling is within expected range
  • Duplicate rulings Prevent rule() being called twice
  • Fee changes Arbitration cost can change between calls
  • Arbitrator trust Only accept rulings from your arbitrator

Next Steps

Implementation Guide

Step-by-step walkthrough with complete code examples