How Kleros Arbitration Works with Reality.eth
Before integrating, understand the escalation flow:- A question is asked on Reality.eth and answerers post bonds.
- Each new answer must double the previous bond (e.g. 0.01 ETH → 0.02 → 0.04 ETH). This economically incentivizes correct answers.
- If the question is not challenged within the
timeoutperiod (typically 24 hours), the last answer finalizes. - If a party disagrees, they pay the arbitration fee to escalate the question to Kleros. This costs more than a bond, so it is a last resort for high-stakes questions.
- The Kleros Arbitrator Proxy creates a KlerosCore dispute. When Kleros rules, Reality.eth is notified and the answer is finalized.
Key Timing Parameter: feeTimeout
The RealityV2 Kleros integration contract has a feeTimeout parameter (set to 600 seconds / 10 minutes in the reference deployment). This is the time within which the other party must also pay the arbitration fee after it is requested. If they don’t pay within feeTimeout, the requester wins by default.
Integration Options
There are two ways to integrate with the Reality.eth + Kleros oracle.Off-chain (Quick Testing)
Use the Reality.eth web interface to submit questions and retrieve answers manually. Best for:- Testing the system before full integration
- Learning how question lifecycles work
- One-off questions that don’t need automation
On-chain (Production)
Have your smart contract call Reality.eth directly to ask questions, read answers, and react to oracle responses programmatically. This is the recommended approach for production DApps. For the on-chain path, you’ll want to be familiar with the Reality.eth interface and the reality-eth-monorepo for contract addresses and ABIs.Smart Contract Integration
Step 1: Ask a Question
askQuestion becomes the question reward, incentivizing answerers.
Question Parameters
templateID—0for bool,1for uint,2for single-select,3for multiple-select,4for datetime,5for hash.question— Parameters separated by the␟(U+241F) delimiter, formatted to match the template. Examples:- Bool:
"Did event X happen?␟category␟en" - Uint:
"What was the price of ETH on April 16, 2025?␟crypto␟en" - Single-select:
"Which team won?␟\"Lakers\",\"Celtics\",\"Bucks\"␟sports␟en"
- Bool:
arbitrator— Kleros Arbitrator Proxy address. See Smart Contracts for available proxies.timeout— Seconds before an unchallenged answer finalizes. Typically 86400 (24 hours). The contract enforces a maximum of 365 days.openingTimestamp— Earliest time answers can be submitted. Set to0for immediate.nonce— Differentiator for identical questions with the same parameters. Use0if you don’t need to ask the same question more than once.
Step 2: Read the Finalized Answer
Step 3: Handle the Callback (Optional)
For automated execution, use Reality.eth’s callback mechanism:Choosing an Arbitrator Proxy
Each Kleros Arbitrator Proxy is configured with:| Parameter | Description |
|---|---|
| Subcourt | Which Kleros court handles disputes |
| Number of jurors | Initial juror count for first round |
| Arbitration fee | Cost to escalate a question to Kleros |
integrations@kleros.io to deploy one configured for your use case.
For applications that span chains (question on Polygon, arbitration on Ethereum, for example), use a cross-chain proxy.
To check the current arbitration fee:
Evidence Submission
When a Reality.eth question goes to arbitration, evidence helps jurors make informed decisions. Submit evidence through the Kleros Arbitrator Proxy, not through Reality.eth.Evidence Timeline
- Question posted on Reality.eth
- Answer phase — users submit answers with bonds
- Arbitration requested — someone pays the arbitration fee
- Evidence period opens (typically 3-7 days, varies by court configuration)
- Voting phase — Kleros jurors review evidence and vote
- Final ruling reported back to Reality.eth
Submitting Evidence from a Contract
Submitting Evidence Directly
You can also call the proxy directly:Evidence Format
Evidence JSON follows the ERC-1497 standard. Host the JSON on IPFS (preferred) or any publicly accessible URL.Evidence Best Practices
- IPFS first —
/ipfs/QmHashoripfs://QmHashis preferred for permanence. Web URLs work but rely on host availability. - Both sides should submit — supporters of each answer should submit their own evidence. Jurors weigh both.
- Quality over quantity — clear, authoritative sources beat numerous weak ones.
- Submit early — anyone can submit during the evidence period, but late submissions risk being missed.
- Reference the underlying claim — each evidence file should clearly map to the answer it supports.
Monitoring Evidence Submissions
Watch for these events on the proxy contract:Fees and Payments
The Reality.eth + Kleros system has five fee types. Each plays a specific role in the incentive structure.| Fee | Set By | Paid By | Paid To |
|---|---|---|---|
| Question Reward | Asker | Asker | Highest-bonded correct answerer* |
| Answer Bond | Answerer | Answerer | Returned if correct, otherwise to the next correct answerer |
| Takeover Fee | Previous bond | Subsequent answerer | Previous answerer (deducted from rewards) |
| Arbitration Fee | Arbitrator | Anyone requesting | Arbitrator |
| Claim Fee (2.5%) | System | Claimer | Burned (deducted from claimed amount, Reality.eth v2.1+) |
Question Reward
- Set by sending ETH (or tokens via
askQuestionERC20) when callingaskQuestion() - Paid to whoever provides the final accepted answer, minus any arbitrator fee
- Higher rewards typically result in faster and more accurate answers
Answer Bond
- Backs the answerer’s claim that their answer is correct
- Must be at least double the previous bond if there was a prior answer
- Returned if the answer is correct
- Paid to the next correct answerer if the original answer is overturned
Takeover Fee
- Compensates the previous answerer when someone takes over a correct answer
- Equal to the bond supplied by the previous person who gave that answer
- Deducted from rewards that would otherwise go to the new answerer
Arbitration Fee
- Paid to the arbitrator when a party escalates the question
- Set by the arbitrator (check via
realityETH.getArbitrator(_qid).getDisputeFee(_qid)) - Usually paid by an answerer whose answer was replaced
Claim Fee
- Active from Reality.eth v2.1 onwards
- 2.5% of claimed bonds (excluding the final bond) is burned
Custom Primary Document for Arbitration
Most DApp integrations work fine with the standard Question Resolution Policy. In some cases, you may need a custom primary document tailored to your application.When You Need a Custom Document
- Your DApp has specific rules for how disputes should be judged
- Resolving disputes requires specialized knowledge or context
- You need a dedicated Kleros court for your application’s disputes
- The interpretation of answers in your domain differs from standard interpretations
How the Process Works
- Initial assessment — the Kleros team reviews your use case to confirm a custom document is necessary
- Document drafting — you work with Kleros to create a document that:
- Explains your application’s context to jurors
- Provides guidance on evaluating evidence
- Defines specialized terminology
- Establishes clear criteria for determining correct answers
- Deployment — Kleros deploys a dedicated arbitrator proxy with your primary document embedded as part of the proxy’s metaevidence
- Usage — when disputes go to arbitration, jurors apply your guidelines
Real-World Example: Seer Prediction Markets
Seer needed a custom resolution policy because their prediction markets have specific rules for handling complex outcomes, edge cases like delayed events, and explicit authoritative information sources. If your application might need this level of customization, contactintegrations@kleros.io.
DAO Governance Integration
The Reality.eth + Kleros oracle powers the Zodiac Reality Module for DAO governance. This module translates off-chain Snapshot votes into on-chain transactions through Reality.eth’s verification:- A Snapshot proposal passes with a batch of transactions
- The SafeSnap plugin posts the proposal as a Reality.eth question
- If the answer (“Is this proposal valid?”) goes unchallenged, the transactions execute through the Gnosis Safe
- If challenged, Kleros Court arbitrates
Reality.eth Deployments
Reality.eth contracts are deployed across multiple chains. Reference the correct contract address for your target chain:| Chain | Repository Path |
|---|---|
| Ethereum Mainnet | chains/deployments/1/ |
| Gnosis Chain | chains/deployments/100/ |
| Arbitrum One | chains/deployments/42161/ |
| Polygon | chains/deployments/137/ |
Production Integrations
The Reality.eth + Kleros oracle is used in production by:- Prediction Markets — Seer, Polkamarkets/Foreland, and Omen use it to verify real-world event outcomes
- Optimistic Governance — the Zodiac SafeSnap module uses it for secure DAO proposal execution
- Content Moderation — Moderate / Susie bot uses it for decentralized content policy enforcement
Testing
For local development, deploy Reality.eth and a mock arbitrator on a testnet:0x05b942faecfb3924970e3a28e0f230910cedff45.
Common Questions
Does my DApp need to call the arbitrator proxy directly? No. Your DApp only needs to interact with Reality.eth for the standard question/answer flow. The proxy is invoked automatically when arbitration is requested. You only need to call the proxy directly to submit evidence during an active arbitration. What happens if there’s a dispute? Reality.eth and Kleros handle the dispute flow through the arbitrator proxy. Your DApp doesn’t need any special logic — once the dispute resolves,resultFor() returns the arbitrated answer.
How do I write a clear question?
Be specific, include resolution criteria, and specify a trusted information source. Example: “Did the S&P 500 close above 5,000 on April 10, 2025, according to the official S&P website?”
Can I handle the full flow inside my DApp without using the Reality.eth frontend?
Yes. You can implement everything from your DApp: ask questions, submit answers, request arbitration, and submit evidence.
Need Help?
Contact the Kleros team atintegrations@kleros.io for:
- Custom arbitrator proxy deployments
- Help with Reality.eth integration
- Assistance with complex use cases or custom primary documents