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.
Overview
Kleros V2 introduces a new arbitration standard, dispute template system, and cross-chain architecture. This guide covers the contract-level changes required to migrate an existing V1 (ERC-792 + ERC-1497) integration to V2.Interface Changes
Arbitrable Interface
- V1 (ERC-792)
- V2
IArbitrableV2 combines the arbitrable and evidence interfaces. There is no separate IEvidence interface in V2.
Arbitrator Interface
- V1
- V2
Evidence and MetaEvidence → Dispute Templates
V1: MetaEvidence + Dispute Event
V2: Dispute Templates + DisputeRequest Event
extraData Format
- V1
- V2
- Court IDs are renumbered: V1 uses 0-based court IDs (General Court =
0). V2 uses 1-based IDs (General Court =1, Forking Court =0— reserved). Hardcoded V1 court IDs will silently route disputes to the wrong court. courtIDis encoded asuint96instead ofuint256
Event Changes
| V1 Event | V2 Replacement |
|---|---|
MetaEvidence(metaEvidenceID, evidence) | DisputeTemplate registered in DisputeTemplateRegistry |
Dispute(arbitrator, disputeID, metaEvidenceID, evidenceGroupID) | DisputeRequest(arbitrator, disputeID, externalDisputeID, templateId, templateUri) |
Evidence(arbitrator, evidenceGroupID, party, evidence) | Same event, but now in IArbitrableV2 |
Ruling(arbitrator, disputeID, ruling) | Same event, now in IArbitrableV2 |
Chain Migration
V1 contracts live on Ethereum Mainnet (or Gnosis/Polygon). V2 contracts live on Arbitrum One. If your arbitrable is on Arbitrum: Integrate directly with KlerosCore. If your arbitrable stays on another chain: Use the Foreign Gateway as your arbitrator. The gateway handles cross-chain dispute creation and ruling relay via Vea.Fee Token Support
V2 adds ERC-20 fee token support. You can pay arbitration fees in accepted ERC-20 tokens instead of only ETH, when integrating directly with KlerosCore on Arbitrum:Migration Checklist
Update imports
Replace
@kleros/erc-792 with @kleros/kleros-v2-contracts. Change IArbitrable + IEvidence to IArbitrableV2.Remove appeal code
Delete any
appeal(), appealCost(), or appealPeriod() calls from your contract. V2 handles appeals internally.Replace MetaEvidence with Dispute Templates
Create a dispute template JSON and register it with
DisputeTemplateRegistry. Replace MetaEvidence and Dispute events with DisputeRequest.Update extraData encoding
Change from
abi.encodePacked(uint256, uint256) to abi.encodePacked(uint96, uint256) and use V2 court IDs.Deploy on Arbitrum or use Foreign Gateway
Deploy your arbitrable on Arbitrum for direct integration, or use the Foreign Gateway on your current chain for cross-chain disputes.
Reference Contracts
| Contract | Purpose | Repository |
|---|---|---|
| ArbitrableExample | Minimal V2 arbitrable implementation | kleros-v2/contracts/ |
| DisputeTemplateRegistry | Template registration | kleros-v2/contracts/ |
| ForeignGateway | Cross-chain arbitrator | kleros-v2/contracts/ |