Skip to main content
Kleros arbitration can be integrated on either protocol version:
  • V1 uses the ERC-792 arbitration standard (IArbitrable / IArbitrator) on Ethereum Mainnet and Gnosis Chain. See ERC-792 and ERC-1497 for the full V1 standards.
  • V2 uses IArbitrableV2 / IArbitratorV2 on Arbitrum, with dispute templates and cross-chain support.
The steps below show both. Pick the version that matches the network you are deploying to. For contract addresses, see Deployment Addresses V2 and Deployment Addresses V1.

Installation

Contract Addresses (Arbitrum One)

Always verify addresses against Deployment Addresses V2 and the official repository before deploying to production.

Minimal Integration

Step 1: Implement the arbitrable interface

Step 2: Encode Extra Data

The extraData parameter specifies which court and how many jurors:

Step 3: Get Arbitration Cost

Court IDs

Start with General Court (ID: 1) for testing. Use minJurors = 3 for most cases.

Dispute Templates

Jurors need context. Create a template that describes the dispute:
Register templates on-chain or reference via IPFS URI.

Testing

1

Use Arbitrum Sepolia

Deploy to testnet first. Get Arbitrum Sepolia ETH from a public faucet such as the Arbitrum faucets list
2

Get Test PNK

Testnet PNK is available from the Kleros faucet
3

Create a Test Dispute

Call createDispute() with test ETH for fees

SDK (Optional)

For frontend integration, use the Kleros SDK (npm install @kleros/kleros-sdk):
Subgraph URLs are listed in Subgraph Endpoints. Evidence is submitted on-chain through the EvidenceModule; see Deployment Addresses V2.

Next Steps

Architecture Deep Dive

Understand how KlerosCore, Dispute Kits, and Sortition Module work together