Augur's v1 oracle has its virtues, but speed is not one of them.
This is about to change, thanks to a suite of improvements in v2. The fastest a market can resolve in v1 is ~7 days. In v2, markets can resolve in ~24 hours, and dragged-out disputes are far less likely due to a more efficient process.
Today, we’ll walk through these changes to reporting and disputing and then share programmatic info for devs. First, for those new to augur, here’s a quick overview of how markets are finalized on Augur.
Since Augur has no central operator, it uses a communal system driven by incentives to resolve the outcome of markets
Users stake Reputation (REP), Augur's native token, on the outcome they believe to be correct. Users that dispute honestly in favor of a market's correct outcome, defined as the outcome that future users of the platform will believe to be correct, earn additional REP. Those that dispute in favor of an incorrect outcome lose REP.
This communal, incentivized process is sometimes referred to as the “Augur oracle.” An oracle is any mechanism for bringing real-world information onto a blockchain. In the case of Augur, the oracle tells the blockchain what outcome occurred and thus how a market should resolve. For example, whether it rained in Seattle yesterday or who won the presidential election.
After a market enters reporting, an Initial Reporter (typically the market creator), selects which outcome occurred. This becomes the “Tentative Winning Outcome.”
Users can dispute the Tentative Winning Outcome by staking REP on an alternative outcome that they believe to be correct. An alternative outcome requires a specified threshold of REP, which is called the Dispute Bond, to be staked on it in order to become the new Tentative Winning Outcome.
In v2, if you stake REP in favor of an outcome that the market ends up resolving to, you receive a 40% ROI on your staked REP (except in the case of an usued pre-stake or initial reporting). If you stake on an outcome that the market does not end up resolving to, you lose your entire stake.
With each successive dispute round, a higher Dispute Bond is needed to shift the Tentative Winning Outcome. A user may contribute the full Dispute Bond or fill it partially as part of a crowd-sourced fill along with other users.
Let’s look at the changes that speed up resolution in v2.
Once a market enters reporting in v2, the Designated Reporter (DR) has 24 hours to submit a report on the market’s outcome, as opposed to 72 hours in v1.
Once the Initial Reporting window is complete, users have 24 hours to dispute. If the Dispute Bond is not filled in that window, the market resolves to the initially reported outcome. In v1, there was no 24 hour dispute window. Markets entered 7-day windows right away.
In V2, users can dispute outcomes immediately, rather than having to wait up to 7 days as in v1. Markets still must remain undisputed for an entire seven-day window in order to finalize to the Tentative Winning Outcome, but anyone may dispute an outcome at any time, regardless of when it won or when the next window begins.
This feature shuts off if a market hits a sufficiently large REP threshold such that it is within 8 rounds of a potential fork, at which time rounds return to a weeklong pace.
Users can add extra support for a Tentative Winning Outcome by pre-staking REP that will be used to dispute in that outcome’s favor in the event that is no longer the Tentative Winning Outcome. Pre-staking can help accelerate a market’s resolution by advancing to a further round and deterring other users from needlessly disputing. In theory, one could slice months off resolution time by making one large pre-contribution.
Pre-filled Stake yields ROI if and only if 1) the market resolves to the staked-on outcome and 2) the pre-stake ends up being used to dispute in that outcome's favor. Regardless, the pre-staker will recieve back the staked REP once the market finalizes.
One of the causes of long disputes in v1 was ambiguous market terms. In v2, markets will likely have stronger terms due to better guidance and a robust template system for market creators, along with stronger incentives to create valid markets.
The good news is that even if a market takes some time to resolve, traders will likely be able to settle their positions at minimal cost via overlays or other independent settlement products. STLD, for example, will offer instant settlement, letting traders cash out their positions as soon as markets enter reporting.
In v2, a maximum of 20 dispute rounds will occur before a fork. 2.5% or more of the total REP supply being filled in a single Dispute Bond will trigger a fork. We’ll cover forking in-depth in another post.
To submit the initial report, either the Designated Reporter (or any user, if the Designated Reporter did not report within 24 hours of the market’s end time) will need to call the function
Market.doInitialReport with the payout numerators of the outcome.
Market.doInitialReport, the initial reporter can optionally specify an amount of REP to escrow for the outcome in anticipation of a dispute. If the outcome is disputed, it will automatically get applied to the outcome. Otherwise, the initial reporter will be able to reclaim the amount once the market is finalized.
If the report is submitted by the Designated Reporter and the Designated Reporter is not the owner of the market’s no-show REP bond, the REP bond will be returned to owner, and the Designated Reporter will need to stake the REP to use for the report. Otherwise, the No-show REP Bond is used as stake for report.
Market.doInitialReport will fail for any of the following reasons:
If the call to
Market.doInitialReport succeeds, the market’s initial dispute window will be set to 24 hours, and the report will be submitted and logged on the Ethereum blockchain.
If a market has an initial report and its dispute window has not ended, users can call
Market.contribute to stake a specified amount of REP in an outcome other than the market’s tentative outcome to dispute it.
Market.contribute will fail if any of the following conditions are true:
If the call to
Market.contribute is successful, the specified quantity of REP will be staked on the outcome, and the transaction will be logged on the blockchain.
Users that backed the winning outcome can claim their staked and earned REP by calling
DisputeCrowsourcer.redeem once the market is finalized.
Market.contribute, users also can call
Market.contributeToTentative to stake a specified amount of REP in a market’s tentative outcome in anticipation of a dispute.
Market.contributeToTentative will fail if:
Market.contributeToTentative will escrow the REP and apply it to the outcome if it becomes disputed. This contribution transaction is also logged on the blockchain.