We introduce an enhanced Dutch Auction-based exchange model, Oedax, that allows both buyers and sellers to participate after an auction starts. In this post, we outline the design of such an exchange model and analyze some of its properties.
In a Dutch Auction, a fixed amount of an asset is put into the auction for sale. The initial ask price starts (much) higher than any open market prices and decreases gradually to zero, according to some pre-specified function. The dutch auction ends if and only if the actual price, calculated by dividing the accumulated money (sent by the bidders) by the number of assets (being sold by sellers), equals the ask-price at a given moment.
Dutch Auctions have some desirable properties. First of all, auctions always settle, guaranteed. Secondly, all participants in the same auction get the same price for settlement, regardless when they participate in the auction and the size of their contributions. This property avoids front-running issues that most order-based exchange models suffer. This same-settlement price property, however, does have a drawback as well — participants tend to withhold until a later time to participate when the ask-price becomes more reasonable instead of during the early phase of the auction.
Dutch Auction is an excellent means of price discovery, especially in a decentralized environment powered by blockchain technology. Specifically, the settlement prices in Dutch Auction can act as decentralized price oracles for smart contracts — assuming the auctions are well known and there are enough participants.
The original Dutch Auction model is designed for one-way asset offering and does not allow additions of assets being sold once the auctions start. We propose an enhanced version called Open-end Dutch Auction Exchange, or Oedax, which is more like a bi-directional exchange instead of a one-way auction.
We designed Oedax to facilitate two groups of people, sellers and buyers, to exchange assets, especially cryptocurrencies or crypto tokens. Therefore, in this post, we use crypto tokens as examples for easier description, but Oedax is truly generic and can be applied to the exchange of other types of assets.
Suppose sellers want to sell TokenA for TokenB, and buyers want to buy TokenA with TokenB. Oedax allows sellers to auction off TokenA to buyers for TokenB, and in the meanwhile and the very same auction, allows buyers to auction off TokenB to sellers for TokenA. Therefore an Oedax auction can be perceived as two internal-auctions seemingly integrated with shared parameters.
We further suppose that the fair market price for TokenA, with respect to TokenB, is P; and the initial sell-price of TokenA in an Oedax auction is M*P where M > 1 — we call P the target price and M the price scale factor. The duration of the Oedax auction is T, which is the expected time the auction will end if no one ever participated in the auction.
Then we specify two price curves, one for the selling of TokenA, i.e, the Sell Curve (or SC), and one for the buying of TokenA, i.e, the Buy Curve (or BC). These two curves are designed to satisfy the following requirements:
We further assume the amount of TokenA in the auction at any time t is Qs(t), and the amount of TokenB at any time t is Qb(t). Then a horizontal line representing the actual price p(t) = Qb(t)/Qs(t) can be drawn. We call this horizontal line the actual price line, or APL. Note that APL moves upward if more TokenB participates in the auction and downward if more TokenA participates in the auction.
An Oedax auction can start with zero TokenA and/or TokenB deposit, i.e, Qb(0) == Qs(0) == 0. As time passes, participants can deposit either TokenA or TokenB to change the actual price p. But Oedax applies some important price bonding rules:
A well-designed Oedax auction should have the actual price line be inside the Buy and Sell Curves before or immediately after the start of the auction to make sure it settles. This will boost user participation. The final settlement price is irrelevant of target price but is supposed to be close to it.
Oedax auctions only settle if the actual price falls in between the two bonding curves and the actual price line at time T’, we call the phase from time 0 to T’ phase-1. Phase-1 has the most uncertainties for participants and should be minimized if possible. T’ marks the start of phase-2, which has fewer uncertainties and guarantees the auction will settle.
We can introduce another parameter N, and once the gap between the two price curves is smaller than or equal to N*P we enter phase-3. The other way to define phase-3 is to use time elapsed with respect to T as a measure, e.g., after 0.75T we enter phase-3. Phase-3 represents a period where participation in the auction is the least risky and the buy-sell price gap is small enough.
It is certainly possible to define more phases or introduce further finer granularity for classifying auction participation. The general idea is to encourage and reward early participation which is critical for creating more liquidity, and charge fees for later participation. Conceptually, we can treat early participation as market makers and later participation as takers.
In phase-1, participants can deposit any amount of TokenA or TokenB into the auction without restrictions. If withdrawal is permitted, participants can also withdraw any amount of tokens.
After phase-1 and before an auction ends, participants can still deposit more TokenA or TokenB in the auction, or withdraw from it, but there are limits on the amounts to assure BC(t) ≤ p(t) ≤ SC(t) always hold. Those limits are:
To facilitate later participation in large sizes, Oedax can queue the amount beyond the current deposit limit in a waiting list, and when there is a counter-party beyond-limit deposit, Oedax will accept deposits from both buy and sell side to end up with at most one waiting list for either the sell or the buy side. The waiting list will automatically expire at the end of the auction.
To discourage withdrawal, a fee may apply. An Oedax auction can be configured with withdrawal disabled.
The two price curves can be defined independently, e.g, one curve can be a straight line and the other curve can be polynomial. But since these two inner auctions are happening in parallel, it may be more reasonable to design the Buy Curve and Sell Curve in such a way that the sell-price and the buy-price develop with the same velocity. We can achieve this by binding SC and BC using:
With this binding, only one of the two curves needs to be defined to derive the other one.
With this rule enforced, the curves for a TokenA/TokenB Oedax and curves for a TokenB/TokenA Oedax take the same shape. In other words, this rule makes Oedax token-symmetrical — an ABC/XYZ auction is the same as an XYZ/ABC auction. 
 The Loopring protocol also adapts such a similiar token-symmetrical data modeling approach — a ABC/XYZ sell order is an XYZ/ABC buy order. In our previous posts, we referred it as “unidirectional order modeling”.
Oedax trading model has the following advantages:
Oedax inevitably inherits some shortcomings that Dutch Auctions have, including:
For each trading pair, it is possible to create a series of Oedax auctions with shared parameters and a constant inter-auction delay. Once an auction ends, a new auction is automatically started with a target price equal to the last settlement price. We can call such a series of Oedax auctions a “Rolling Oedax”. With enough participants, a Rolling Oedax will keep running and provide much larger trading capability than a standalone Oedax.
: In practice, auctions must be triggered by a user action to kick off.
To participate in such a rolling auction, a user will need to participate in the earliest running Oedax auction of a series, and if the size of his/her deposit is beyond the earliest auction’s deposit limit, the remaining deposit will participate in the second-earliest auction, … If the user’s deposit is beyond the limit of all running auctions combined, the remaining deposit can be put into a waiting list which is shared by all outstanding Oedax auctions. When a new auction starts, the waiting list will be removed and all outstanding deposits in the waiting list will be converted to the initial deposits for the new auction.
It is also possible to treat more recent auctions as special waiting lists for older running auctions if withdrawal is enabled, which is likely to increase the trading volume of the oldest auction yet to settle. Otherwise, settlement across multiple auctions will even out the average price of each participation (order) over a designated period of time.
Rolling Oedax enables DEXs to facilitate market-price based peer-to-peer trading and guarantees that such orders will be traded with the least risky counterparties first at reasonable prices without using any price oracle.
Oedax will be used by Loopring 2.x to achieve “Fee Burning”, a unique token economic feature that enables Loopring relayers to accept any ERC20 tokens as fees, and to pay the protocol smart contract a small percentage of the fees called the burn.
Anonymous users will be able to trigger the burn to be auctioned off for LRC token in Oedax auctions, and the purchased LRC will be sent to address 0x0 automatically (our planned LRC ERC20 upgrade will treat this as a special destructive operation and reduce the total LRC supply). Oedax will automate the fee burning process in a trustless and decentralized fashion, which is an essential part of Loopring’s governance objective.
The fees collected by Oedax auctions will also be auctioned off for LRC, to burn.
Our goal is to develop Oedax as a permissionless and fully decentralized way of trading tokens. It means everybody can create auctions for all existing and future tokens at any time in arbitrary sizes — there will be no token or participant whitelist of any kind.
We plan to open-source the Oedax smart contract repository on GitHub once we get ready for the initial deployment on Ethereum mainnet. In the meanwhile, if you are interested in co-developing Oedax on Ethereum or lead the effort to make it work on other platforms, please let us know. We are setting up an LRC Grant from the Loopring Ecosystem Advancement Fund (LEAF) to incentivize quality work.
In the near future, we will add Oedax UI in UpWallet.
We would love to hear from you. If you do feel like sharing your thoughts, please send us an email to firstname.lastname@example.org.
To stay up-to-date with Loopring, please sign up for Loopring’s Bi-Weekly Update, and find us at:
⭑ Twitter: twitter.com/loopringorg
⭑ Reddit: reddit.com/r/loopringorg
⭑ Telegram: t.me/loopring_en
⭑ Discord: discord.gg/KkYccYp
⭑ StackOverflow: stackoverflow.com/c/loopring
⭑ Kakao: open.kakao.com/o/gJbSZdF (Korean)
Oedax: Loopring’s Open-Ended Dutch Auction Exchange Model was originally published in Loopring Protocol on Medium, where people are continuing the conversation by highlighting and responding to this story.
Community | !!200만원 내 원하는 선물!! 푸페이 혜자 이벤트 !!~~~^^
Community | 커뮤니티 예의는 지켜주세요 ♥
Community | [crypto cash] 크립토 캐시 그것이 알고싶다.
Community | 상장사 이름을 알려주세요
좋은정보 감사용 추천하고 갑니다 코로나 조심하시고 예수님 믿고 구원 받으세요
Community | [crypto cash] 크립토 캐시 그것이 알고싶다.
Write a post
Are you sure you want to delete this post?
Are you sure you want to delete this comment?
Purchase has been completed.
닉네임을 설정 후 작성해주세요.