New DutchX Smart Contracts are Now Live
Here to stay
We have deployed the DutchX 2.0 smart contracts to Mainnet — those that govern the DutchX open protocol.
In the first version of the DutchX smart contracts, we relinquished our “auctioneer powers.” This meant that neither Gnosis nor anyone else, had the ability to alter the contracts parameters or logic. We did this to ensure that, while we were working on a better governance solution, the DutchX remained outside of central control.
Our primary aim with this new deployment is to provide the dxDAO (when it is ready) with the auctioneer powers of the DutchX. Until then, projects can already start integrating on this final version as the DutchX 2.0 will remain unaltered.
What’s the dxDAO?
The dxDAO is a decentralized autonomous organization fully governed by the community that will be responsible for all changes to the new DutchX smart contracts.
What are auctioneer powers?
The auctioneer powers refer to the ability to change a number of modifiable parameters on smart contract level. Most notably, this means changing the whitelisted tokens and upgrading the master logic of the DutchX contract.
Why is it important to have upgradability on the DutchX?
Our choice to allow smart contract upgrades (via a proxy contract) has distinct advantages and disadvantages.
The main disadvantage of upgradeability is that it raises significant security concerns by adding another attack vector; changes to the core parameters could prove malicious.
On the other hand, advocates of upgradeability may put forward that it allows for bug repairs in contract logic, adjustments to changing regulatory frameworks, or general improvements to the protocol.
In the case of the DutchX, these advantages far outweigh the aforementioned disadvantages. Why? The DutchX protocol derives much of its value from the fact that it serves as a global liquidity pool. No matter how the user interacts — e.g. via a bidder interface (to be announced soon) or a seller interface, via another smart contract, directly with the CLI or blockchain or via trading bots, they all point towards one protocol, resulting in pooled liquidity. If upgradability weren’t possible, all these points of entry would have to be re-established upon every hard-fork — and the global liquidity pool could become split, resulting in a poor experience for users.
We designed the DutchX to be a fully-decentralized trading protocol. This means that changes to the DutchX protocol must also be decided in a decentralized fashion.
Who makes these decisions?
Enter dxDAO — ready, set, govern!
Getting governance right is a crucial part of reaching full-stack decentralization. Without robust decentralized governance, potential conflict of interest of a centralized entity versus the exchanges’ users cannot arise. The DutchX should, therefore, become more resilient and trustworthy for users.
In case you missed it, community governance of the DutchX Protocol by the dxDAO is scheduled. Though jointly set up by Gnosis and DAOstack, both teams will step back and let the community take over when the dxDAO has officially awakened.
With upgradability plus dxDAO governance, the DutchX protocol becomes self-sustainable and adaptable to a changing ecosystem and to regulatory frameworks.
Action items for those having already integrated
For the first and last time, project, teams, traders who have integrated with the first set of DutchX smart contracts, please be made aware:
- Tokens need to be added again in order to be traded.
- Integrations of any sort now need to point to the revised set of smart contracts (minor changes linked below).
- It’s now time to claim and withdraw your funds and start trading on the new set of smart contracts.
Security comes first
The revised set of DutchX smart contracts have been subjected to extensive internal peer reviews but also to an external audit by Solidified. No bugs have been found. Links to the audit results can be found below.
We also have an ongoing bug bounty (so far, no bugs have been reported) that will run on the revised DutchX smart contracts.
Price oracle
Other than the internal DutchX oracle (which returns always the last closing price), we have created another price oracle contract, which takes the median of the 9 last auctions of that pair; a price is only returned if auctions have run consecutively. The code has been peer-reviewed and audited (links included below).
Appendix
Documentation and smart contract changes
- Access DutchX ReadTheDocs with all information
- Contract Architecture & all deployed smart contracts addresses
- How the price oracle works
- Audit report of the DutchX smart contracts
- Audit report of the price oracle smart contract
- A list of changes from DutchX 1.0 to DutchX 2.0
****
Follow me on Twitter.
Special thanks to Eric Gorski.