ERC-792 is an arbitration standard on Ethereum, proposed and implemented by Kleros, a decentralized dispute resolution protocol.
ERC-792 uses two separate types of contracts to divide arbitration and execution: Arbitrator contract and Arbitrable contract. The former, akin to a court, is solely responsible for arbitration; while the latter, where disputes arise, executes the contract according to the arbitration outcome.
This abstraction makes it possible that developers of Arbitrable contracts do not need to know the internal process of Arbitrator contracts, and vice versa.
What Arbitrator contract does:
creates a dispute (
createDisputefunction, must be called byArbitrablecontract).appeals a ruling (
appealfunction, must be called byArbitrablecontract).delivers a ruling (by calling
rulefunction ofArbitrablecontract).
What Arbitrable contract does:
determines in which cases a dispute arises, defining logic to create disputes (by calling
createDisputefunction onArbitratorcontract with required fee).determines in which cases an appeal is possible, defining logic to appeal (by calling
appealfunction onArbitratorcontract with required fee).enforces decisions delivered by
Arbitratorcontract (via therulefunction, which must be called byArbitratorcontract).

Appeal
Following a decision by the Arbitrator, the involved parties are allotted a specific period to challenge the ruling. If the decision is not appealed within this window, it becomes conclusive. However, if an appeal is made, the Arbitrator has to make a decision (allowed to be the same) again.
This process continues until there are no further appeals. The cost associated with appealing serves as a deterrent against indefinite appeals.
Fees
Initiating a dispute incurs a fee payable to the Arbitrator, and appealing a decision also carries a cost. Both parties of a dispute must pay the arbitration fee, while the winner of the dispute will get reimbursed.
Dispute status
Waiting: initial status when a dispute arises.Appealable: the dispute got a ruling and theArbitratorallows to appeal it.Solved: the dispute got a ruling and the ruling is final, to be enforced. If a dispute is not appealed within the appealable time, it becomesSolved.
Workflow
Arbitrablecontract callscreateDisputefunction onArbitratorcontract to create a dispute.Arbitratorcontract gives a ruling, initiating the period for appeals.Arbitrablecontract callsappealfunction onArbitratorcontract to make an appeal.Once the appeal period ends,
Arbitratorcontract delivers a final ruling, callingrulefunction onArbitrablecontract.Finally,
Arbitrablecontract implements the decision.

