The Augur core dev team has been making progress towards our platform release. In spirit of keeping everyone on the same page, we wanted to inform the community on what you can expect to see in the near future.
What will be in the initial Augur release?
The ability to create markets: binary (yes/no), scalar (a range of values, i.e. how many iPhones will Apple sell in Q4, how many inches of rain will fall in x location, etc.), and categorical (will it be Trump, Hillary, Johnson, or other?), the ability to trade, and the ability to resolve markets using reporting with both backstops implemented will be in the initial launch.
Markets denominated in other markets, like trading upon the outcomes of “What will GDP be granted that Kanye wins?” will be possible. To hedge against the possibility that Kanye loses, you can also short an equivalent amount of “Kanye Will Become President in 2020” shares. This is possible due to the markets’ shares being ERC-20 tokens, but needs to be implemented in the UI (uncertain whether that’ll make it to MVP launch in the UI, but it’ll come eventually).
There’s tons of things that could be built around Augur, adding features to Augur, or additional contracts interacting with Augur, but none of it needs to go in the core platform at this point.
In order to have the full security model of reporting, both the backstops of everyone reporting on a given event and forking need to be available, otherwise the incentives aren’t setup properly, and it wouldn’t be too difficult to resolve a market wrongly. We don’t want someone’s first experience with Augur to be something where they buy Kanye shares, he wins, and then the oracle says Trump won: the backstops are needed to prevent that. A diagram of the process is below, and a dispute works by posting a reputation bond. If the dispute was valid and the initial outcome was wrong then you get your bond back and more rep. If you posted a dispute and it wasn’t needed (i.e. it was reported on correctly the first time), you lose your rep bond.
Below is a diagram of the current reporting process, which is about 6,000 lines of code shorter than the old process:
What was removed for launch?
These things were removed for complexity reasons:
- Events resolving early (so instead of making “Will Elon ever make it to Mars” and having one market until say 2040, instead users should make markets like “Will Elon make it to Mars by the end of 2018?” and another one for 2019, etc.)
- The reporting commit and reveal has been removed because it’s unneeded complexity and cost (if people collude, the system will just end up going to the next backstop). This was suggested by Vitalik long ago and we finally got around to removing it.
- Markets with more outstanding shares in the first wave of reporting (limited reporter numbers) getting more reporters was removed.
- Indeterminate, unethical are all lumped under one invalid now.
What will be in future Augur releases?
- More than 8 outcome markets, perhaps using the LS-LMSR, since it’s actually good for things like this — these add a lot of complexity and don’t work very well when using an order book so they were removed for the time being.
- Allow markets denominated in other currencies (as opposed to just ETH + other markets themselves) which requires that the currency has an ETH exchange rate with a decentralized exchange so we can count it towards outstanding share value which is needed for the reporting system.
- Town Crier, Oraclize.it, SmartContracts.com, and RealityKeys as first resolver options built in the UI (and using the reporting system as a backstop, which allows for much quicker market resolution most of the time).
- Off chain trading using the 0x protocol.
- State channel trading.
- A more mobile friendly UI.
For audits, we want to have experts inside and outside the community review the code, and then we’ll implement the fixes and share the reports. Audits are in progress and will be continuing over the upcoming weeks. If you know anyone who you think would be good please email us at firstname.lastname@example.org, we’re always looking to add more people who can further audit our contracts!
1. Security Audits (in progress)
2. Code Bug Bounties
3. Bug Bounty Prediction Market Release
4. Augur Lite release with a maximum amount of shares outstanding / open interest in the markets (meaning only a small amount of money can be locked up in them). Alternatively, make it so users can only deposit a maximum amount, say, 5 ETH.
5. Full Augur Release
We want to launch slowly. In the beginning the core dev team will essentially have carte blanche to modify things, replace / upgrade contracts, etc in the case of a fault event or vulnerability after launch. The idea is to sort of start with “training wheels” and slowly remove them over time as the system proves to be secure. If something went wrong we could quickly update the contracts. If we maliciously updated them a fork of Augur would almost certainly develop, which is good! Early on the probability that the developers are malicious is lower than the probability of bugs and vulnerabilities. Later on we can switch to a decentralized way of updating things.
The Decentralized Mode for Updating:
- Contracts must be updated by a re-upload, people can transfer their rep / claim it on new contracts, traders & market creators cancel orders and migrate to the new contracts.
- For bugs found involving money or rep, contracts are locked and an escape hatch is enabled which allows withdraws of shares and cancelling orders for a value half way between the bid-ask spread at the time of the lock and another escape hatch is enabled which allows withdrawal of any bonded rep or rep being used for reporting. All rep in the ERC-20 contracts is fungible as usual so it can migrate to the new contracts. All ether is withdraw-able but ERC-20 wrapped ETH transfers are disabled on the old contract.
- When a bug is not found and it’s just some, for whatever reason, backwards incompatible upgrade, people should be allowed to migrate over to the new system. I.e. don’t emergency stop + withdraw at fixed price, instead allow users to trade around and sell complete sets and or wait for any straggling REP to resolve their markets. Ideally we’d be able to just add additional contracts for most new features and updates most of the time though, making this not required.