[Seeking feedback] Omen – Dispute Resolution integration

Hey community :wave:t2:,

the last few days I’ve been working on one of the last few missing pieces for the soon to be launched prediction market platform Omen. A good overview that outlines what Omen is and how it works can be found in this article.

As I just published a first draft version of the smart contract integration between realit.io and the DxDAO I am actively reaching out to you, seeking for feedback and reviewing the arbitrator smart contract.

Some context – The need for dispute resolution

As outlined in more detail on this article, Omen will be using realit.io, a crowd-sourced on-chain smart contract system that will set the correct outcome of markets created in Omen. In case of malicious or incorrect outcome voting, a dispute resolution can be called at anytime. Once the fee was paid, the answer will be paused on realit.io and the final decision will be delegated to the DxDAO. The final decision making will take place through the decentralized government mechanisms by the DxDAO members (proposal voting) and provide the final answer for realit.io

Deliverables

The integration basically exist of two parts, the Arbitrator Contract that handles the smart contract interaction between realit.io and the DxDAO and the second part, a DAOstack Generic Scheme that provides an UI on DAOstack to let the DxDAO members vote on the final outcome.

Testing Walkthrough

This shortly walks you through the process of testing the integration workflow.

1. Create Question on realit.io :

Please note that this first step to create questions on realit.io will be fully automated by the Omen smart contracts (Work in progress). However, as of now the question need to be created manually. Set the Custom Arbitrator contract to this address: 0x1f279db583c9e90df76c42e5439f4ceb4d5a8eef

Post image

2. Add an answer

As Arbitration can only be requested once at least one answer has been submitted, create an answer for the created question.

Post image

3. Request Arbitration

Requesting Arbitration will call the function “notifyOfArbitrationRequest” on the Arbitrator contract.

Post image

The status in realit.io will be changed to “Arbitration pending”:

Post image

4. Dispute Resolution Request

The function “notifyOfArbitrationRequest” that has just been triggered creates a “Dispute Resolution Request” within the DxDAO (Currently at this Testing DAO: https://alchemy-omengenericsche-m5ml19.herokuapp.com/dao/0xd94c5810a43ae1560569592e041bf839e490cd1b/) to notify members to act.

Post image

5. Create Final Answer Proposal

For every possible final answer a new proposal of the type “Propose final Answer to Question” needs to be created.

Post image

6. Upvote the proposal for execution

As you probably don’t have REP on this testing DAO either provide me a Rinkeby address in the comment to assign you some REP or ping me to let me vote it up for you.

Post image

7. Check that the question was resolved on realit.io

Post image

8. Make sure the Dispute Fee has been transferred to the DAO

Arbitrator contract events:

Post image

Next Steps

To finalize the integration and starting the deployment process for Rinkeby and Mainnet this week I highly appreciate your feedback.

  • Awaiting community feedback & changes
  • Pushing the Arbitrator Contract to Rinkeby & Kovan
  • Pushing the Arbitrator Contract to Mainnet
  • Deploying DAOstack Generic Scheme
  • Requesting realit.io to add the DxDAO in Arbitrator-Dropdown in DApp
2 Likes

Beautiful work @nicoelzer. I would like to request some REP to 0x92B3d06B1BAdFD9DDbFB08ce354e6283848DC8bf !

2 Likes

This is great! Could I get REP at 0x117CAAee32366C29c0b1B25dF1ab2A78d723849e ??

1 Like

@JohnKelleher @corkus just sent you some REP.

1 Like