Skip to content
This repository has been archived by the owner on May 7, 2024. It is now read-only.

kleros/cross-chain-sundial-proxy

Repository files navigation

Cross-Chain Sundial Proxy

Enables cross-chain arbitration for Sundial on Polygon using Kleros as arbitrator.

We use Polygon Fx-Portal mechanism for cross chain communication. You can find out more about how Fx-Portal works from here:

High-Level Flow Description

  1. Alice requests arbitration on the main chain paying the arbitration fee to the ETH proxy
  2. The ETH proxy communicates the request to the Polygon proxy through the Fx-Portal.
  3. The Polygon tries to notify Sundial of the arbitration request:
    1. If the Project ID is valid and reclaimation period has not passed, the arbitration request will be accepted.
      1. Notify the ETH proxy through the Fx-Portal.
      2. Call the receiveMessage function with Polygon Tx hash on Ethereum
    2. Otherwise, if it changed then:
      1. Notify the ETH proxy through the Fx-Portal.
      2. Call the receiveMessage function with Polygon Tx hash on Ethereum
      3. The ETH proxy refunds Alice. END
  4. In the mean time while Sundial was being notified of the arbitration request, the arbitration fees might have changed:
    1. If the fees stayed the same (most common case) then:
      1. Create a dispute on Kleros Court.
    2. If the fees have decreased then:
      1. Create a dispute on Kleros Court.
      2. Refund Alice of the difference.
    3. If the fees have increased, then the arbitration request will fail:
      1. Refund Alice of the value paid so far.
      2. The ETH proxy notifies the Polygon proxy through the Fx-Portal that the arbitration failed to be created.
      3. The Polygon proxy notifies Sundial of the failed arbitration. END
  5. The Kleros court gives a ruling. It is relayed to the Polygon proxy through the Fx-Portal.
    1. If the ruling is the current answer, Bob, the last answerer, is the winner. END
    2. If it is not, Alice is the winner. END

Relaying Messages from Polygon to Ethereum

Polygon-to-Ethereum communication requires manual intervention, the exact mechanism for it is described here

There is also a fx-tunnel-relayer bot developed by the UMAProtocol for this purpose that can either be used as is or as a reference for our own bot.

Deployed Addresses

See contracts/README.md.

Contributing

Repo Structure

Each directory at the root of this repository contains code for each individual part that enables this integration:

  • contracts/: Smart contracts to enable cross-chain arbitration for Sundial. Learn more.