Gateways enable cross-chain arbitration between Kleros Court on Arbitrum and Arbitrable contracts on foreign chains.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.
Home Gateway (Arbitrum)
Located on Arbitrum, the Home Gateway:- Receives dispute creation messages from the Vea bridge
- Creates disputes on KlerosCore
- Sends rulings back through the bridge
Foreign Gateway (Foreign Chain)
Located on Ethereum mainnet, Gnosis Chain, etc., the Foreign Gateway:- Accepts
createDispute()calls from Arbitrable contracts - Relays dispute creation through the Vea bridge to the Home Gateway
- Receives rulings from the bridge and calls
rule()on the Arbitrable
Key Methods
createDispute(uint256 _choices, bytes _extraData) payable → uint256
Creates a cross-chain dispute. Caller must send ETH equal to the arbitration cost.
arbitrationCost(bytes _extraData) view → uint256
Returns feeForJuror[courtID] × minJurors in ETH.
relayRule(address _messageSender, bytes32 _disputeHash, uint256 _ruling, address _relayer)
Called by the Vea outbox once a ruling is relayed from Arbitrum. Forwards the ruling to the Arbitrable.
withdrawFees(bytes32 _disputeHash)
Pays the relayer’s fee after a ruling has been delivered.
Governance Methods (Governor Only)
changeCourtJurorFee(uint96 _courtID, uint256 _feeForJuror)
Updates the per-juror fee stored in the ForeignGateway for a specific court. This must be called to keep gateway fees in sync when KlerosCore court fees change on Arbitrum. Fee drift is a known operational risk — if this is not updated after a governance change to feeForJuror on Arbitrum, arbitration cost on the foreign chain will be incorrect.