DutchX - fully decentralized auction based exchange

We want to introduce a new exchange that is ready to be deployed on mainnet.
It comes with a few features that make it unique and we believe it can add additional value beyond what current DEXs can provide.

Features

  1. Full decentralization
    a) all actions on chain (contracts thus 1st class citizens)
    b) anyone can list tokens
    c) no role with special rights in the trading process
    d) a DAO will be able to make upgrades to the contract but only with a 30 day notice period

  2. Regular user (including contracts) can (relatively) safely submit market orders
    a) market orders can not be attacked with frontrunning
    b) a market maker does not need to constantly update prices onchain to provide a small spread
    c) those advantages are “bought” with slow execution of trades (on average 6-12h)

  3. It should be possible to use the DutchX as a fairly reliable price oracle for any token that is traded here. (if a price update just every ~6 hours is acceptable)

How it works

Using the mechanics of a dutch auction.

  1. Anyone can register a token pair (A/B)
  2. traders can act as askers (market order) or bidders (limit order)
  3. upfront enough askers need to commit to sell token A for token B
  4. once a threshold is reached a auction will start at 2* the previous price (market price)
  5. the price will continuously fall down, reaching the previous price after 6h and 0 after 24.
  6. at any time bidders can commit to buy A with B at the current price (or better)
  7. once enough bid volume is reached to buy all ask volume at the current price the auction closes
  8. everyone will get the same price

For each auction A/B a parallel auction B/A will run (if there is ask volume).

Fee structure

A fee structure is build around a native reward token of the DutchX that can only be earned by providing liquidity/ trading on the dutchX. (MGN = Magnolia token)

  1. all fees remain in the system - there is no flow to an external party
  2. fees are taken out of each trade and are put into the next batch as a “bonus”
  3. thus every auction (with the exception of the first) pays fees into the next but receives from the previous
  4. every trade will produce MGN tokens. Traders can reduce their individual fee rate if they hold MGN
  5. effective personal fee rate will be (average fee rate - personal rate) thus a trader with a low personal fee rate would receive fees
  6. up to half of the fee can be paid with OWL (the fee credits generated by locking GNO) - used OWL is burned

The contracts can be found here: https://github.com/gnosis/dx-contracts
The dutchX is deployed on Rinkeby here: 0xd78ae0828deda8995076175ea5a388e8e5b9f0c1
Simple trading bots and a CLI can be found here: https://github.com/gnosis/dx-services

More infos on our blog: https://blog.gnosis.pm/tagged/dutchx
A security audit and bug bounty program was done - a mainnet release is imminent.

10 Likes

FYI - this is now live on the mainnet.
More infos here: https://blog.gnosis.pm/the-dutchx-smart-contracts-are-live-on-the-mainnet-af1446eef199

Find the relevant adresses here: https://dutchx.readthedocs.io/en/latest/smart-contracts_addresses.html#mainnet

You can find a UI for the seller side of the auction here: https://dutchx-rinkeby.d.exchange/
At this point only for Rinkeby.

3 Likes

How do you prevent front running?

Hi @fedecaccia,

since orders are batched together and a unique price for all orders is determined, the sequence of the orders is no longer relevant for the settlement. Read also about it here: https://blog.gnosis.pm/the-main-benefits-of-the-dutchx-mechanism-6fc2ef6ee8b4

Just a heads up here:
The dutchX surpassed yesterday for the first time $1m in trading volume.

Also - we will be give full control/ownership of this project to an ambitious DAO experiment - the dxDAO.
More infos here.

Hey! I work with DeFi Pulse. Can I get in contact with your biz dev or tech lead. I think you be great fit for a new resource we are creating.

@celey
Easiest might be to reach out on https://gitter.im/gnosis/DutchX
https://dutchx.readthedocs.io/en/latest/ might also answer a lot of questions.