Oedax (Open-End Dutch Auction Exchange Model): модель Голландского аукциона от Loopring

Natali
Протокол LOOPRING
9 min readMar 14, 2019

Мы вводим усовершенствованную голландскую модель на основе аукционов, Oedax, которая позволяет как покупателям, так и продавцам участвовать после начала аукциона. В этом посте мы описываем дизайн такой модели обмена и анализируем некоторые ее свойства.

Голландский аукцион

На голландском аукционе фиксированная сумма актива выставляется на аукцион для продажи. Начальная цена ask начинается (намного) выше любой открытой рыночной цены и постепенно уменьшается до нуля, в соответствии с некоторой предварительно заданной функцией. Голландский аукцион заканчивается тогда и только тогда, когда фактическая цена, рассчитанная путем деления накопленных денег (отправленных участниками торгов) на количество активов (продаваемых продавцами), равна ask-цене в данный момент.

Голландские аукционы обладают некоторыми удобными свойствами. Прежде всего, аукционы всегда гарантированно завершаются. Во-вторых, все участники одного и того же аукциона получают одинаковую цену для расчета, независимо от того, когда они участвуют в аукционе, и размера своих взносов. Это свойство позволяет избежать проблем опережающих сделок, которые возникают в большинстве биржевых моделей на основе ордеров. Однако у этого свойства с такой же расчетной ценой есть и недостаток — участники склонны воздерживаться до более позднего времени для участия, когда цена ask становится более разумной, а не на ранней стадии аукциона.

Голландский аукцион является отличным средством определения цены, особенно в децентрализованной среде, основанной на технологии блокчейн. В частности, расчетные цены в голландском аукционе могут выступать в качестве децентрализованных ценовых оракулов для смарт-контрактов — при условии, что аукционы хорошо известны и достаточно участников.

Классическая голландская модель аукциона предназначена для одностороннего предложения активов и не допускает добавления активов после начала аукциона. Мы предлагаем расширенную версию под названием Open-end Dutch Auction Exchange, или Oedax, которая больше похожа на двунаправленную торговлю, а не на односторонний аукцион.

Введение в Oedax

Мы разработали Oedax, чтобы облегчить двум группам людей, продавцам и покупателям, обмен активами, особенно криптовалютами или токенами. Поэтому в этом посте мы используем токены в качестве примера для более легкого описания, но Oedax действительно является универсальным и может быть применен к обмену другими типами активов.

Предположим, что продавцы хотят продать TokenA за TokenB, и покупатели хотят купить TokenA за TokenB. Oedax позволяет продавцам выставлять на аукцион TokenA для покупателей за TokenB, и в то же время тот же аукцион позволяет покупателям выставлять TokenB для продавцов за TokenA. Поэтому аукцион Oedax можно воспринимать как два внутренних аукциона, интегрированных с общими параметрами.

Мы также предположим, что справедливая рыночная цена для TokenA, в отношении TokenB, равнаP; а первоначальная цена TokenA в аукционе Oedax M*P, где M > 1 — мы называем P целевой ценой, а M коэффициентом масштабирования цены. Продолжительность аукциона Oedax равна T, что является ожидаемым временем окончания аукциона, если никто никогда не участвовал в аукционе.

Затем мы указываем две кривые цен, для продажи TokenA, т.е, кривая продажи (Sell Curve или SC), и для покупки TokenA, т.е, кривая покупки (Buy Curve или BC). Эти две кривые предназначены для удовлетворения следующих требований:

  • SC(0) == P*M && SC(T) == P/M (правило#1);
  • BC(0) == P/M && BC(T) == P*M (правило#2);
  • Также есть время t, t ≤ T, такое что SC(t) == BC(t) == P (правило#3).

Предположим, что сумма TokenA в аукционе в любое время t это Qb(t), а количество TokenB в любой момент времени t этоQb(t). Затем можно провести горизонтальную линию, представляющую фактическую цену p(t) = Qb(t)/Qs(t). Мы называем эту горизонтальную линию линией фактической цены, или APL. Обратите внимание, что APL движется вверх, если больше TokenB участвует в аукционе и вниз, если больше TokenA участвует в аукционе.

Кривые цен (красная: кривая продажи, зеленая: кривая покупки) с T = 40, P = 2.0, M = 4.0

Определение и расчёт цены

Аукцион Oedax может начинать с нуля как TokenA, так и/или TokenB, т.е Qb(0) == Qs(0) == 0. Со временем участники могут внести депозит TokenA или TokenB, чтобы изменить фактическую цену p. Но Oedax применяет некоторые важные правила связывания цен:

  • Как только фактическая цена p падает между кривыми SC и BC во время T’, она всегда должна оставаться между кривыми, чтобы выполнялосьBC(t) ≤ p(t) ≤ SC(t)для любого t ≥ T’ вплоть до окончания аукциона (правило#4);
  • Кривая продажи не может упасть ниже, как только она встретится с фактической линией цены, но она может возобновить падение, как только фактическая линия цены сама движется вниз (если есть место от кривой продажи, чтобы упасть дальше). При возобновлении падения вниз кривая продажи должна упасть с предыдущего значения. При построении графика кривая продажи кажется разрезанной на куски и частично сдвинутой вправо вдоль оси Х. То же самое правило относится и к кривой покупки, но в противоположном направлении (правило#5);
  • Сближение кривой продажи и кривой покупки знаменует конец аукциона. Если фактическая линия цены никогда не попадала между кривыми цен, аукцион не будет завершен, и все токены будут возвращены участникам; в противном случае фактическая линия цены, безусловно, сойдется с двумя кривыми цены, и аукцион завершится. (правило#6);
Аукцион Oedax, который заканчивается во время 50 и ценой 3.0 — горизонтальные серые линии представляют фактические цены в разные моменты времени.

Хорошо продуманный аукцион Oedax должен иметь фактическую линию цены внутри кривых покупки и продажи до или сразу после начала аукциона для того, чтобы он окончился успешно. Это повысит участие пользователей. Конечная расчетная цена не имеет отношения к целевой цене, но должна быть близка к ней.

Фазы

Аукционы Oedax завершаются успешно только, если фактическая цена падает между двумя кривыми цен и фактической линией цены в момент времени T’, назовем фазу от времени 0 до T’ фаза-1. Фаза-1 имеет наибольшую неопределенность для участников и должна быть сведена к минимуму, если это возможно. T’ знаменует начало фазы-2, которая имеет меньше неопределенностей и гарантирует, что аукцион будет завершен.

Мы можем ввести еще один параметр N, и как только разрыв между двумя кривыми цен будет меньше или равен N*P, мы войдем в фазу-3. Другой способ определения фазы-3-использовать время, прошедшее по отношению к T, в качестве меры, например, после 0.75T мы входим в фазу-3. Фаза-3 представляет собой период, когда участие в аукционе является наименее рискованным, а разрыв между ценой покупки и продажи достаточно мал.

Конечно, можно определить больше этапов или ввести более тонкую классификацию участия в аукционе. Общая идея состоит в том, чтобы поощрять и вознаграждать раннее участие, которое имеет решающее значение для создания большей ликвидности, и взимать плату за последующее участие. Концептуально мы можем рассматривать раннее участие как маркет-мейкеров, а последующее - как участников.

Участие в аукционе и его отмена

В фазе-1 участники могут внести на аукцион любую сумму TokenA или TokenB без ограничений. Если вывод средств разрешен, участники также могут вывести любое количество токенов.

После фазы-1 и до окончания аукциона участники все еще могут внести на аукцион TokenA или TokenB или выйти из него, но существуют ограничения на суммы, гарантирующие BC(t) ≤ p(t) ≤ SC(t. Выглядят они так:

  • Ограничение депозита для TokenA Qb(t)/BC(t) — Qs(t)
  • Ограничение депозита для TokenB Qs(t)*SC(t) — Qb(t)
  • Ограничение вывода для TokenA Qs(t) - Qb(t)/SC(t)
  • Ограничение вывода для TokenB Qb(t) - Qs(t)*BC(t)

Для облегчения участия крупных сумм, Oedax может создавать пул(очередь) на суммы, превышающие текущие ограничения депозита, и когда появится возможность, Oedax будет принимать депозиты как от покупателей, так и от продавцов, чтобы в конечном итоге с не более одного очередников на получение либо продать или купить на стороне. Срок действия списка ожидания автоматически истекает в конце аукциона.

Чтобы предотвратить вывод средств, может взиматься комиссия. Аукцион Oedax можно настроить с отключенным выводом средств.

Кривые цен

Две кривые цены могут быть определены независимо, т.е. одна кривая может быть прямой, а другая-полиномиальной. Но поскольку эти два внутренних аукциона происходят параллельно, может быть, разумнее спроектировать кривую покупки и кривую продажи таким образом, чтобы цена продажи и цена покупки двигались с одинаковой скоростью. Мы можем достигнуть этого путем связывания SC и BC, используя:

  • BC(t)*SC(t) == P*P (правило#7)

При этой привязке для получения другой кривой необходимо определить только одну из двух.

Если это правило соблюдается, то кривые для TokenA/TokenB Oedax и кривые для TokenB/TokenA Oedax имеют одну и ту же форму. Другими словами, это правило делает Oedax “токен-симметричным” аукцион ABC/XYZ аналогичен аукциону XYZ/ABC. [1]

[1] Протокол Loopring также адаптирует подобный подход токен-симметричной модели, когда ордер на продажу ABC/XYZ является ордером на покупку XYZ/ABC. В наших предыдущих статьях мы называли это "моделью однонаправленного ордера".

Особенности Oedax

Торговая модель Oedax имеет следующие преимущества:

  • Он не полагается на другие типы торговых платформ для определения или корректировки цен.
  • Она позволяет как продавцам, так и покупателям участвовать в аукционе после начала аукциона. Oedax может даже разрешить условный вывод средств до окончания аукциона.
  • Можно принять предварительные лимитные ордера и принять их в Oedax, как только ценовой диапазон аукциона удовлетворит требованиям ордера.
  • Объем окончательного расчета аукциона Oedax не ограничен начальным депозитом любого токена и потенциально может быть намного больше, чем голландский аукцион. Oedax подходит для крупных сделок и удобен для маркет-мейкинга.

Oedax неизбежно наследует некоторые недостатки, которые имеют голландские аукционы, в том числе:

  • Не является мгновенным, требуется время, чтобы закончить аукцион;
  • Окончательная цена является разумной (близкой к рыночной) только тогда, когда аукцион имеет достаточное количество участников.

Обкатка Oedax

Для каждой торговой пары, можно создать серию Oedax аукционов с общими параметрами и постоянной задержкой между ними. После окончания аукциона автоматически запускается новый аукцион[2] с целевой ценой, равной последней расчетной цене. Мы называем такие серии Oedax аукционов “обкаткой Oedax”. При достаточном количестве участников обкатка Oedax будет продолжать работать и обеспечивать гораздо большие торговые возможности, чем автономный Oedax.

[2]: На практике аукционы должны быть вызваны действием пользователя.

Для участия в таких аукционах, пользователю нужно будет поучаствовать в первом Oedax аукционе серии. Если размер его депозита на предыдущем аукционе превышает ограничение на депозит текущего, остаток депозита будет участвовать во втором аукционе. Если депозит находится за пределом всех запущенных аукционов, оставшуюся сумму можно поставить в список ожидания, который является общим для всех незавершенных Oedax аукционов. Когда начнется новый аукцион, список ожидания будет удален и все непогашенные депозиты в списке ожидания будут конвертированы в первоначальные депозиты для нового аукциона.

Более поздние аукционы также можно рассматривать как специальные списки ожидания для более старых аукционов, если включен вывод средств, что, вероятно, увеличит объем торгов самого старого аукциона, который еще предстоит завершить. В противном случае расчет на нескольких аукционах будет выравнивать среднюю цену каждого участника (ордера) в течение определенного периода времени.

Обкатка Oedax позволяет DEX облегчить децентрализованную торговлю на основе рыночных цен и гарантирует, что такие ордера будут сначала торговаться наименее рискованными контрагентами по разумным ценам.

Использование Oedax в Loopring

Oedax будет использоваться Loopring 2.x для достижения "сжигания комиссий", уникальной экономической функции, которая позволяет ретрансляторам Loopring принимать любые токены ERC20 в качестве комиссии и оплачивать смарт-контракт небольшим процентом от комиссии.

Анонимные пользователи смогут инициировать сжигание токенов на аукционах Oedax, а приобретенный LRC будет отправлен на адрес 0x0 автоматически (наше запланированное обновление будет рассматривать это как специальную операцию, которая уменьшит общее предложение LRC). Oedax автоматизирует процесс сжигания комиссии в доверительной и децентрализованной форме, что является неотъемлемой частью планов Loopring.

Комиссии, собранные аукционами Oedax, также будут выставлены на аукцион для покупки LRC и последующего сжигания.

Разработка и гранты LEAF

Наша цель заключается в разработке Oedax как публичного и полностью децентрализованного способа торговли токенами. Это означает, что каждый может создавать аукционы для всех существующих и будущих токенов в любое время в произвольных размерах — не будет никаких ограничений токена или участника.

Мы планируем открыть исходный код репозитория смарт-контрактов Oedax на GitHub как только мы будем готовы к первоначальному развертыванию в основной сети Ethereum. В то же время, если вы заинтересованы в совместной разработке Oedax на Ethereum или попробовать свои силы, чтобы заставить его работать на других платформах, пожалуйста, сообщите нам об этом. Мы создаем Грант LRC от Фонда Loopring Ecosystem Advancement Fund (LEAF) для стимулирования качественной работы.

В ближайшем будущем мы добавим Oedax UI в UpWallet.

Мы хотели бы услышать ваше мнение. Если вы хотите поделиться своими мыслями, отправьте нам письмо foundation@loopring.org.

Чтобы получить доступ к исходной статье, посетите официальный английский блог Loopring.

Для получения более актуальной информации, пожалуйста, присоединяйтесь к нам в социальных сетях:

⭑ Twitter: twitter.com/loopringorg
⭑ Reddit: reddit.com/r/loopringorg
⭑ Discord: discord.gg/KkYccYp
⭑ StackOverflow: stackoverflow.com/c/loopring
⭑ Telegram: t.me/loopring_en
⭑ Telegram: t.me/loopring_russian

--

--