Skip to main content

Documentation Index

Fetch the complete documentation index at: https://kleros-mintlify-changelog-2026-05-12-1778458371.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

System Overview

Kleros V2 uses a modular architecture where specialized contracts handle specific responsibilities:

Core Components

KlerosCore

The orchestrator. Manages the dispute lifecycle and coordinates between modules.
ResponsibilityDescription
Dispute creationAccepts disputes from arbitrable contracts
Period managementMoves disputes through evidence → vote → appeal → execution
Fee collectionCollects and distributes arbitration fees
Court configurationStores court parameters (timing, fees, stakes)
interface IArbitratorV2 {
    function createDispute(uint256 _choices, bytes calldata _extraData) 
        external payable returns (uint256 disputeID);
    
    function arbitrationCost(bytes calldata _extraData) 
        external view returns (uint256 cost);
    
    function currentRuling(uint256 _disputeID) 
        external view returns (uint256 ruling, bool tied, bool overridden);
}

Sortition Module

Handles juror selection using weighted randomness. Key concepts:
  • Sortition Tree: Data structure mapping staked PNK to selection probability
  • Phases: Staking → Generating → Drawing (prevents RNG manipulation)
  • Delayed Stakes: Stake changes queue until the drawing phase completes

Dispute Kits

Modular voting mechanisms. The protocol ships with DisputeKitClassic but supports custom implementations.
KitMechanismUse Case
ClassicPlurality voting, proportional to stakeDefault for all courts
Sybil ResistantRequires Proof of HumanityOne-person-one-vote disputes
GatedRequires token holdingsSpecialized community disputes
Classic Dispute Kit features:
  • Commit-reveal voting (optional, per court)
  • Coherence-based rewards (vote with majority = keep stake)
  • Appeal crowdfunding

Gateways (Cross-Chain)

Enable disputes from other chains to be resolved on Arbitrum.
[Ethereum Mainnet]          [Arbitrum One]
       │                          │
  Foreign Gateway ──bridge──► Home Gateway ──► KlerosCore
       │                          │
  Your Contract                Jurors Vote
Flow:
  1. Arbitrable on mainnet calls Foreign Gateway
  2. Message bridged to Home Gateway on Arbitrum
  3. Dispute resolved on Arbitrum
  4. Ruling bridged back to mainnet

Dispute Lifecycle

1

Evidence Period

Parties submit evidence. Jurors are drawn via Sortition Module.
2

Commit Period (if enabled)

Jurors submit hidden vote commitments (hash of vote + salt).
3

Vote Period

Jurors reveal votes. Must match commitment if commit phase was used.
4

Appeal Period

Losing party can fund an appeal. More jurors drawn for next round.
5

Execution

Stakes redistributed. Coherent jurors rewarded, incoherent penalized. Ruling sent to arbitrable.

Court Hierarchy

Courts form a tree. Appeals can “jump” to parent courts when juror count exceeds threshold. Court parameters:
  • minStake: Minimum PNK to stake
  • feeForJuror: ETH fee per juror per round
  • jurorsForCourtJump: Threshold to appeal to parent court
  • timesPerPeriod: Duration of each dispute period

Data Flow

Creating a Dispute

Executing a Ruling

Security Model

MechanismPurpose
Stake-weighted selectionSybil resistance need PNK to participate
Coherence incentivesVote with majority to keep stake, lose stake if incoherent
AppealsMultiple rounds catch errors, increases cost of attacks
Phase systemPrevents RNG manipulation
Guardian/GovernorEmergency pause capability

Key Addresses (Arbitrum One)

ContractPurpose
KlerosCoreMain arbitrator
SortitionModuleJuror selection
DisputeKitClassicDefault voting
DisputeTemplateRegistryTemplate storage
EvidenceModuleEvidence tracking
For current addresses, check the kleros-v2 deployment files.