{"id":29960296,"url":"https://github.com/kleros/realitio-proxy","last_synced_at":"2025-09-12T06:41:42.481Z","repository":{"id":40701434,"uuid":"363400443","full_name":"kleros/realitio-proxy","owner":"kleros","description":"Proxy acting as Realitio arbitrator implementing IDisputeResolver","archived":false,"fork":false,"pushed_at":"2024-10-30T04:44:39.000Z","size":4312,"stargazers_count":1,"open_issues_count":4,"forks_count":4,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-07-09T12:03:06.113Z","etag":null,"topics":["arbitrable","dapps","ethereum","oracles","reality","smart-contracts","solidity","web3"],"latest_commit_sha":null,"homepage":"","language":"Solidity","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kleros.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-01T12:06:10.000Z","updated_at":"2025-05-05T09:30:09.000Z","dependencies_parsed_at":"2024-10-30T05:41:59.890Z","dependency_job_id":null,"html_url":"https://github.com/kleros/realitio-proxy","commit_stats":{"total_commits":101,"total_committers":14,"mean_commits":7.214285714285714,"dds":"0.48514851485148514","last_synced_commit":"d2f5d748d42faaff318cff38f3a66406a0ad0e46"},"previous_names":["kleros/realitio-arbitrator-with-appeals"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/kleros/realitio-proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kleros%2Frealitio-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kleros%2Frealitio-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kleros%2Frealitio-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kleros%2Frealitio-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kleros","download_url":"https://codeload.github.com/kleros/realitio-proxy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kleros%2Frealitio-proxy/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268624107,"owners_count":24280148,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-03T02:00:12.545Z","response_time":2577,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arbitrable","dapps","ethereum","oracles","reality","smart-contracts","solidity","web3"],"created_at":"2025-08-03T22:38:27.839Z","updated_at":"2025-08-03T22:38:29.295Z","avatar_url":"https://github.com/kleros.png","language":"Solidity","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Realitio Arbitrator With Appeals\n\nA [Realitio](https://github.com/RealityETH/monorepo/blob/main/packages/contracts/development/contracts/Realitio_v2_1.sol) arbitrator that implements appeals via [IDisputeResolver](https://github.com/kleros/dispute-resolver-interface-contract). Implementing this interface ensures compatibility with https://resolve.kleros.io user interface.\n\n### The Flow\n\n```\n             Kleros                         RealitioArbitratorWithAppeals                         Realitio\n          \u003cIArbitrator\u003e                          \u003cIArbitrator\u003e\n                                                 \u003cIArbitrable\u003e\n                                                 \u003cIRealitioArbitrator\u003e\n                                                 \u003cIDisputeResolver\u003e\n\n\n ┌──────────────────────────────┐        ┌─────────────────────────────────┐       ┌──────────────────────────────────────┐\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n │   createDispute() ◄──────────┼──1─────┼───────  requestArbitration──────┼───1───┼─────►  notifyOfArbitrationRequest()  │\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n │   executeRuling() ───────────┼───4────┼───────►  rule() ────────────────┼───────┼──►   assignWinnerAnd                 │\n │                              │        │                                 │       │      submitAnswerByArbitrator()      │\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n │    appeal()  ◄───────────────┼───3────┼────────  fundAppeal()           │       │                                      │\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n │                              │        │                                 │       │                                      │\n └──────────────────────────────┘        └─────────────────────────────────┘       └──────────────────────────────────────┘\n\n\n1 User calls requestArbitration(). Internal calls to createDispute() and notifyOfArbitrationRequest().\n2 Kleros jury decides. Ruling open for appeal.\n3 If any user wants to appeal, can do so by calling fundAppeal(). When total amount raised by both parties, appeal round starts.\n4 When ruling becomes finalized, user calls executeRuling(), causing internal calls to rule() and assignWinnerAndSubmitAnswerByArbitrator().\n```\n\n### Compile\n\n`yarn compile`\n\n### Deploy\n\nHere is an example deployment command: \n\n`ETHERSCAN=W1VIXXXXXXHTHTIS INFURA_PROJECT_ID=b0XXXXXX6802 PRIVATE_KEY=1XXXX0b80 npx hardhat deploy --network kovan  --reset --gasprice 70000000000`\n\n\nDeployment script will automatically verify the source code.\n\n### Live instances:\n\nGeneral Purpose Arbitrator (Subcourt 0, 31 votes, [Primary Document](https://ipfs.kleros.io/ipfs/QmaUr6hnSVxYD899xdcn2GUVtXVjXoSXKZbce3zFtGWw4H/Question_Resolution_Policy.pdf)) \n- https://etherscan.io/address/0x728cba71a3723caab33ea416cb46e2cc9215a596#code\n- https://kovan.etherscan.io/address/0x99489d7bb33539f3d1a401741e56e8f02b9ae0cf#code\n- https://rinkeby.etherscan.io/address/0xe27768bdb76a9b742b7ddcfe1539fadaf3b89bc7#code\n\nDAO Governance Arbitrator (Subcourt 4, 5 votes, [Primary Document](https://ipfs.kleros.io/ipfs/QmXyo9M4Z2XY6Nw9UfuuUNzKXXNhvt24q6pejuN9RYWPMr/Reality_Module_Governance_Oracle-Question_Resolution_Policy.pdf)) \n- https://etherscan.io/address/0xf72cfd1b34a91a64f9a98537fe63fbab7530adca#code\n\nDAO Governance Arbitrator (Subcourt 2, 1 vote, [Primary Document](https://ipfs.kleros.io/ipfs/QmXyo9M4Z2XY6Nw9UfuuUNzKXXNhvt24q6pejuN9RYWPMr/Reality_Module_Governance_Oracle-Question_Resolution_Policy.pdf)) \n- https://kovan.etherscan.io/address/0xb9fdd2904cbcc5543F02DB948B2CE59Ef10A950E#code\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkleros%2Frealitio-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkleros%2Frealitio-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkleros%2Frealitio-proxy/lists"}