Вы находитесь на странице: 1из 12

Loopring:

Децентрализованный протокол обмена


Daniel Wang Jay Zhou Alex Wang
daniel@loopring.org jay@loopring.org alex@loopring.org
Matthew Finestone
matt.finestone@gmail.com

https://loopring.org
9 мая 2018 г.

Аннотация
Loopring - открытый протокол для создания децентрализованных бирж. Loopring работает как набор смарт
контрактов, ответственных за торговлю и взаиморасчеты, причем объединение и передача ордеров происходит
офчейн. Протокол является бесплатным, расширяемым и служит стандартным строительным блоком для децен-
трализованных приложений (dApps), которые включают функциональные возможности обмена. Его совместимые
стандарты способствуют анонимной торговле. Важным улучшением по сравнению с существующими децентра-
лизованными протоколами обмена является способность ордеров смешиваться и взаимодействовать с другими
ордерами, устраняя ограничения торговых пар и резко увеличивая ликвидность. Loopring также использует
уникальное и надежное решение для предотвращения опережающей сделки: невозможно отправить транзакции
в блок быстрее, чем это сделает валидный узел. Loopring является блокчейн независимым и развертывается на
любом блокчейне, поддерживающем смарт контракты. На момент написания статьи он работает на Ethereum [1]
[2], а Qtum [3] и NEO [4] на стадии разработки.

1 Введение Торговля токенами на централизованных биржах не


имеет смысла, поскольку они не поддерживают преиму-
С ростом количества активов на базе блокчейнов зна- щества, которыми пользуются соответствующие децен-
чительно увеличилась потребность в обмене этими ак- трализованные проекты. Существуют также многочис-
тивами между пользователями. По мере ввода новых ленные риски и ограничения при использовании центра-
токенов, включая токенизацию традиционных активов, лизованных бирж, которые описаны ниже. Децентрали-
эта потребность будет только увеличиваться. Если ис- зованные биржи (DEXs) [7] [8] [9] попытались решить эти
ключить спекулятивную составляющую торговли, воз- проблемы и, во многих случаях, преуспели в уменьшении
можность обмена одной криптовалюты на другую явля- рисков безопасности, используя блокировки. Однако, по-
ется основополагающей для более крупной экосистемы. скольку DEX становятся ключевым элементом для новой
Действительно, в криптовалютах есть скрытый потен- экономики, есть значительные возможности для повы-
циал [5], который полностью можно раскрыть лишь с шения эффективности. Loopring стремится предоставить
возможностью свободно передавать и преобразовывать модульные инструменты для децентрализованных бирж
эти активы. с его открытым протоколом, не зависящем от dApp.
Таким образом, надежный обмен токенами является
обязательным для технологии блокчейн. Однако до сих
пор крипто-энтузиасты в основном торговали токенами 2 Обзор существующих бирж
на традиционных централизованных биржах. Протокол
Loopring необходим, потому что, как отмечено еще в 2.1 Недостатки централизованных бирж
Биткойн [6], что в отношении электронных денег “ос-
новные преимущества теряются, если третья сторона по- Три основных недостатка централизованных бирж; 1)
прежнему нуждается в предотвращении двойных расхо- Отсутствие безопасности, 2) Отсутствие прозрачности и
дов”, поэтому основные преимущества децентрализован- 3) Отсутствие ликвидности.
ных активов также исчезают, когда они должны прохо- Отсутствие безопасности возникает из-за того, что
дить через закрытые, централизованные биржи. пользователи обычно делегируют контроль за своими

1
секретными ключами одному централизованному объек- токенов. Для обмена токена A на токен B пользователи
ту. Таким образом, появляется возможность того, что должны пойти на биржу, которая поддерживает оба
централизованные биржи станут жертвами хакеров. Без- токена или регистрироваться на разных биржах, раскры-
опасность и риски хакерских атак, с которыми сталки- вая личную информацию. Пользователям часто прихо-
ваются все централизованные биржи, хорошо известны дится выполнять предварительные или промежуточные
[10] [11], но часто воспринимаются в качестве “вынужден- сделки, как правило, в паре с BTC или ETH, оплачивая
ных рисков” ради торговли токенами. Централизованные спреды в процессе обмена. Наконец, книги заказов могут
биржи по-прежнему являются лакомым куском для ха- быть недостаточно глубокими, чтобы завершить торгов-
керов, поскольку их сервера хранят более миллиона дол- лю без изменения цены. Даже если биржа претендует на
ларов средств пользователей. Разработчики бирж также обработку больших объемов, нет никакой гарантии, что
могут делать случайные ошибки в коде, от которых этот объем и ликвидность не являются поддельными [12].
никто не застрахован. И самое главное, что пользователи Результатом этого являются пробои ликвидности
не контролируют свои токены, когда они депонированы и фрагментированная экосистема, которая напомина-
на централизованной бирже. ет классическую финансовую систему, при этом значи-
Отсутствие прозрачности подвергает пользовате- тельный объем торговли централизован на нескольких
лей риску наткнуться на мошенническую биржу. Разли- биржах. Обещания ликвидности блокчейнов не имеют
чие здесь заключается в малейших намерениях бирже- смысла в рамках централизованных бирж.
вого оператора, поскольку пользователи по-настоящему
не владеют своими собственными активами на центра-
2.2 Недостатки децентрализованных
лизованных биржах, а скорее имеют особый вид долго-
вой расписки. Когда токены отправляются на кошелек бирж
биржи, она берет их на хранение и предлагает долговую Децентрализованные биржи отличаются от централизо-
расписку. Таким образом, все сделки производятся меж- ванных отчасти тем, что пользователи контролируют
ду долговыми расписками пользователей. Когда пользо- свои секретные ключи (активы) и совершают сделки
ватели погашают свои долговые расписки перед биржей, непосредственно на основном блокчейне. Они успешно
получают токены обратно на свой внешний кошелек. Во уменьшают многие из вышеперечисленных рисков, свя-
всем этом процессе отсутствует прозрачность, и биржа занных с безопасностью. Однако проблемы сохраняются
может закрыть, заморозить вашу учетную запись, обанк- в отношении производительности и структурных ограни-
ротиться и т. д. Также возможно, что они используют ак- чений.
тивы пользователя для других целей во время хранения, Ликвидность зачастую остается проблемой, посколь-
например, выдавая их третьим лицам. Отсутствие про- ку пользователи должны искать контрагентов через раз-
зрачности может стоить пользователям как полной по- розненные пулы ликвидности. Эффекты фрагментиро-
тери средств, так и более высокие комиссионные сборы, ванной ликвидности присутствуют, если DEX или dApps
задержки, регуляторные риски и неисполненные ордера. не используют согласованные стандарты для взаимодей-
Отсутствие ликвидности. С точки зрения бирже- ствия, и если ордера не распространяются на большую
вых операторов фрагментированная ликвидность пре- сеть. Ликвидность списков лимитных ордеров и, в част-
пятствует появлению новых бирж из-за двух сценари- ности, их отказоустойчивость – как быстро заполнен-
ев «победитель забирает все». Во-первых, выигрывает ные лимитные ордера восстанавливаются – могут суще-
биржа с наибольшим количеством торговых пар, потому ственно повлиять на оптимальные торговые стратегии
что пользователи считают, что желательно проводить [13]. Отсутствие таких стандартов привело не только к
все свои сделки на одной бирже. Во-вторых, выигрывает уменьшению ликвидности, но и к воздействию множе-
биржа с большей книгой заказов из-за благоприятных ства потенциально небезопасных проприетарных смарт
спрэдов между спросом и предложением для каждой контрактов.
торговой пары. Это препятствует конкуренции со сто- Кроме того, поскольку сделки производятся на блок-
роны новичков, потому что им сложно создать пер- чейне, DEXs наследуют ограничения этого блокчейна,
воначальную ликвидность. В результате многие биржи а именно: масштабируемость, задержки в выполнении
удерживают высокую долю рынка, несмотря на жалобы (майнинг) и дорогостоящие изменения ордеров. Таким
пользователей и даже серьезные инциденты с хакерами. образом, книга заказов блокчейна не очень хорошо мас-
Стоит отметить, что, поскольку централизованные бир- штабируется, так как выполнение кода на блокчейне за-
жи занимают большую долю на рынке, они становятся тратно (газ), что делает несколько отмененных ордеров
все более привлекательной целью для взлома. весьма дорогостоящей операцией.
С точки зрения пользователей, фрагментированная Наконец, поскольку списки ордеров являются обще-
ликвидность значительно снижает удобство. В центра- доступными, транзакция по размещению ордера вид-
лизованной бирже пользователи могут торговать только на майнерам, поскольку она ожидает, что ее добавят
в собственных пулах ликвидности биржи, по собствен- в следующий блок и только после этого помещают в
ной книге заказов и между поддерживаемыми парами список ордеров. Эта задержка подвергает пользователя

2
риску оказаться не у дел, когда его ордер никогда не На приведенном выше рисунке показан кольцевой
исполнится. ордер с тремя участниками. Каждый токен ордера на
продажу (tokenS) является другим токеном ордера на
2.3 Гибридные решения покупку (tokenB). Это создает цикл, который позволя-
ет каждому заказу обменивать свои токены, не требуя
По вышеуказанным причинам основанные на блокчейне обратного обмена для своей пары. Разумеется, традици-
биржи имеют ограничения, которые делают их некон- онная торговля парными ордерами по-прежнему будет
курентоспособными по сравнению с централизованными выполняться, она по существу является вырожденным
биржами. Существует компромисс между ончейн опера- случаем кольцевого ордера.
циями, централизованными биржами и гибкостью орде-
ров. Протоколы, такие как Loopring и 0x [14], совмещают Definition 3.1 (кольцевой ордер) Пусть C0 , C1 , · · · ,
возможности ончейн операций с офчейн управлением Cn−1 n различных токенов, O0→1 , · · · , Oi→i⊕1 , · · · ,
ордерами. Эти решения реализованы в открытых смарт On−1→0 n ордеров. Эти ордера можно объединить в
контрактах, что ограничивает возможности масштабиро- кольцевой ордер для торговли:
вания, выполняя несколько функций офчейн и предо- O0→1 → · · · → Oi→i⊕1 → · · · → On−1→0 ,
ставляя узлам гибкость при выполнении критических
ролей для сети. Однако и в гибридной модели остаются где n это длина кольцевого ордера, а i ⊕ 1 ≡ i + 1 mod n.
недостатки [15]. Протокол Loopring предлагает значимые Кольцевой ордер действителен, когда все состав-
различия в подходе к гибридному решению, описанные ные транзакции могут быть выполнены по обменному
в этой статье. курсу, равному или превосходящему исходную ставку,
указанную пользователем. Чтобы проверить валидность
кольцевого ордера, смарт контракты протокола Loopring
3 Протокол Loopring должны получать кольцевые ордера от майнеров.
Предположим, что Алиса и Боб хотят обменять свои
Loopring - это не DEX, а модульный протокол для по-
токены A и B. У Алисы 15 токенов A и она хочет за них
строения DEX для нескольких блокчейнов. Мы разби-
4 токена B; У Боба 10 токенов B и он хочет за них 30
раем на составные части традиционную биржу и пред-
токенов A.
лагаем вместо нее набор открытых смарт контрактов и
Кто покупает и кто продает? Это зависит только
децентрализованных участников. Роли в сети делятся на
от токена, который мы фиксируем, чтобы определить
кошельки, ретрансляторы, консорциум блокчейнов, раз-
ценовые котировки. Если токен A является эталонным,
деляющих ликвидность, обозреватели списков ордеров,
тогда Алиса покупает токен B по цене 15 4 = 3.75A, в то
майнеров и сервисы токенизации активов. Перед опреде-
время, как Боб продает 10 токенов B по цене 30 10 = 3.00A.
лением каждого из них мы должны сначала разобраться
В случае фиксации токена B как эталона, мы говорим,
с ордерами в Loopring. 4
что Алиса продает 15 токенов A по цене 15 = 0.26666667B
10
и Боб покупает 10 токенов A по цене 30 = 0.33333334B.
3.1 Кольцевой ордер Следовательно, покупатель и продавец определяются
Ордера в Loopring представляют собой так называе- произвольным образом.
мые Unidirectional Order Model (UDOM) [16]. UDOM В первом случае Алиса готова заплатить более высо-
представляет ордер как запрос на обмен токенов, кую цену (3, 75A), чем Боб, который продает свои токены
amountS/amountB, (сумма для продажи/покупки) вместо за (3, 00A), а во втором случае Боб готов заплатить более
цен спроса и предложения. Поскольку каждый ордер высокую цену (0.33333334B), чем Алиса, которая продает
является всего лишь обменным курсом между двумя свои токены за (0.26666667B). Понятно, что торговля
токенами, отличительной особенностью протокола явля- возможна, когда покупатель готов заплатить равную или
ется смешивание и сопоставление нескольких ордеров в более высокую цену, чем цена продавца.
кольцевой ордер. Используя до 16 ордеров вместо одной 15 10
4 30 15 10
торговой пары, имеем резкое увеличение ликвидности и 30 = 4 = · = 1.25 > 1 (1)
потенциал для выравнивания цен. 10 15
4 30
Таким образом, для того, чтобы набор n ордеров
Ордер#2
Владелец: Y
мог быть выполнен полностью или частично, нам нужно
8B 98C
amountS: 9B знать, является ли произведение каждого из обменных
amountB: 12C
курсов числом больше или равным 1. Если это так, все
Ордер#1 Ордер#3 n ордеров могут быть либо частично, либо полностью
Владелец: X 7898A Владелец: Z
amountS: 10000A amountS: 100C
выполнены [17].
amountB: 2B amountB: 160A Если мы представим третьего участника Чарли, при-
чем Алиса захотела продать x1 токенов A и получить y1
Рис. 1: Кольцевой ордер с 3 участниками токенов B, Боб хочет продать x2 токенов B и получить y2

3
токенов С, а Чарли хочет продать x3 токенов С и полу- они обрабатывают кольцевые ордера (алгоритмы
чить y3 токенов A. Необходимые токены присутствуют, и майнинга).
торговля возможна, если:
• Смарт контракты протокола Loopring
x1 · x2 · x3 (LPSC): Набор публичных и бесплатных смарт
≥1 (2)
y1 · y2 · y3 контрактов, который проверяет кольцевые ордера,
Смотрите главу 7.1 для более детальной информации полученные от кольцевых майнеров, обрабатывает
о ордерах Loopring. и передает токены от имени пользователей, стиму-
лирует майнеров и кошельки посредством комиссий
и выдает результаты. Ретрансляторы принимают
4 Участники экосистемы эти результаты, чтобы хранить списки ордеров и
историю торговли в актуальном состоянии. Смотри
Следующие участники экосистемы совместно предостав- приложение ?? для более детальной информации.
ляют весь функционал, который может предложить цен-
трализованная биржа. • Службы токенизации активов (ATS): Связь
между активами, которыми нельзя напрямую тор-
• Кошельки: Обычный кошелек, который дает говать через Loopring. Они являются централи-
пользователям доступ к их токенам и позволяет от- зованными службами, управляемыми надежными
правлять ордера в сеть Loopring. Кошельки будут компаниями или организациями. Пользователи де-
стимулировать создание ордеров путем разделения понируют активы (реальные, фиат или токены) и
комиссий с майнерами (см. главу 8). В будущем получают токены, которые могут быть погашены в
торговля будет происходить в рамках безопасных будущем. Loopring не является протоколом межце-
кошельков пользователей, подключение этих пулов почечного обмена (пока не будет найдено подходя-
ликвидности через наш протокол имеет первосте- щее решение), но ATS позволяет торговать токенам
пенное значение. ERC20 [18] с физическими активами, а также с
токенами других блокчейнов.
• Обмен ликвидностью с помощью ретрансля-
торов: Сеть ретрансляторов для обмена ордерами
и ликвидностью. Когда узлы запускают программ- 5 Процесс обмена
ное обеспечение ретрансляторов Loopring, они мо-
гут присоединиться к существующей сети и обмени- 1. Протокол авторизации: На рисунке 2, пользова-
ваться ликвидностью с другими ретрансляторами тель Y хочет обменять токены, он разрешает LPSC
через блокчейн. Блокчейн, который мы строим в обрабатывать amountS токенов B. Это не блокирует
качестве первой реализации, имеет доступ к рас- токены пользователя, которые могут свободно пе-
пределению ордеров в режиме реального времени ремещаться во время обработки ордера.
(1-2-секундные блоки) и обрезает старую историю,
чтобы обеспечить более быструю загрузку новы- 2. Создание ордера: Текущий курс и список орде-
ми узлами. Примечательно, что ретрансляторы не ров для токена B с токеном C, предоставляются
должны присоединяется к этой сети; они могут ретрансляторам или другим агентами, подключен-
действовать в одиночку и не делиться ликвидно- ными к сети, таким как обозреватели списков орде-
стью, или они могут запускать и управлять своей ров. Пользователь Y размещает ордер (лимитный
собственной сетью обмена ликвидностью. ордер) с указанием amountS и amountB и другими
параметрами через любой интегрированный коше-
• Кольцевые майнеры: Ретрансляторы – это узлы, лек. Сумма LRx может быть добавлена в ордер
которые получают ордера от кошельков или сети как комиссия для майнеров; чем больше количество
ретрансляторов, поддерживают списки ордеров и LRx, тем больше вероятность быть обработанным
историю торговли и, возможно, отправляют ордера майнером раньше остальных. Хэш ордера подписан
на другие ретрансляторы (через любую произволь- с помощью секретного ключа пользователя Y.
ную офчейн среду) и/или узлы ретрансляционной
сети. Майнинг – это функция, но не обязательная 3. Распространение ордера: Кошелек отправляет
для ретрансляторов. Он вычислительно тяжелый подписанный ордер одному или нескольким ре-
и полностью происходит офчейн. Мы называем трансляторам. Ретрансляторы обновляют свой спи-
ретрансляторы с включенной функцией майнинга сок ордеров. Протокол не требует, чтобы списки ор-
“кольцевыми майнерами”, которые создают коль- деров были построены определенным образом, на-
цевые ордера, объединяя одиночные ордера. Ре- пример, первый-пришел-первый-исполнился. Вме-
трансляторы свободны в выборе того, (1) как они сто этого ретрансляторы имеют право принимать
предпочитают взаимодействовать друг с другом, собственные решения при построении своих спис-
(2) как они строят свои списки ордеров, и (3) как ков ордеров.

4
4. Обмен ликвидностью: Ретрансляторы передают полностью или частично (в зависимости от курса
ордер другим ретрансляторам через произвольную в ордерах и токенов в кошельках пользователей).
среду взаимодействия. Опять же, существуют раз- Если все проверки пройдены успешно, контракт
личные варианты того, как будут взаимодейство- передает токены пользователям и одновременно
вать узлы. Чтобы облегчить определенный уровень платит комиссию майнеру и кошельку. Если баланс
сетевого подключения, существует встроенная сеть пользователя Y недостаточен, он будет считаться
ретрансляторов с обменом ликвидностью, исполь- уменьшенным: уменьшенный ордер будет автома-
зующая блокчейн. Как упоминалось в предыдущем тически увеличиваться до его первоначального раз-
разделе, эта сеть ретрансляторов оптимизирована мера, если на его адрес будут внесены достаточные
по скорости и удобству подключения. средства, это отличается от аннулирования, кото-
рое является односторонней операцией, и не может
быть отменена.
ОРДЕР 1
Владелец: X
уч-к X аккаунтX
amountS: 10000 A
amountB: 2 B
6 Операционная гибкость
8B
ОРДЕР 2
Владелец: Y
уч-к Y аккаунтY 7898 A
Важно отметить, что открытый стандарт Loopring позво-
amountS: 9 B 2 1
amountB: 12 C
ляет участникам иметь широкий выбор способов функ-
98 C ционирования. Участники могут свободно внедрять но-
ОРДЕР 3 вые бизнес-модели и обеспечивать удобство для пользо-
Владелец: Z
уч-к Z аккаунтZ
amountS: 100 C 6 вателей, получая вознаграждения LRx или что-то другое
amountB: 160 A
(если они того пожелают). Экосистема является модуль-
ной и предназначена для поддержки большого количе-
ре-тор M аккаунтM комиссия ства различных приложений.

3 обмен ликвидностью

4 выполнение 6.1 Список ордеров


ре-тор N аккаунтN
Ретрансляторы могут собирать свои списки ордеров лю-
майнинг
бым способом отображения и сопоставления ордеров
ОРДЕР 1 5 пользователей. Первая реализация нашего собственного
Владелец: X
amountS: 10000 A
списка ордеров соответствует модели OTC, где лимит-
amountB: 2 B ные ордера позиционируются только по цене. Другими
ОРДЕР 2
Владелец: Y
отправка
LPSC
словами, временные метки ордеров не имеют отношения
amountS: 9 B
amountB: 12 C
к списку ордеров. Тем не менее, ретранслятор может
ОРДЕР 3 свободно создавать свой список ордеров таким образом,
Владелец: Z
amountS: 100 C чтобы имитировать типичный механизм согласования
amountB: 160 A
блокчейн централизованной биржи, где заказы сортируются по
цене, при этом учитывая также временные метки. Если
Рис. 2: Процесс обмена в Loopring ретранслятор склонен предлагать этот тип списка ор-
деров, он может владеть/интегрироваться с кошельком,
5. Майнинг (Согласование ордеров): Майнеры и эти ордера кошелька отправляются исключительно
пытаются выполнить ордер полностью или частич- на единственный ретранслятор, который затем сможет
но по данному обменному курсу, сопоставляя его с сопоставлять ордера в зависимости от времени. Любая
несколькими другими ордерами. Майнинг является такая конфигурация возможна.
основной причиной, по которой протокол способен В то время, как другие DEX-протоколы порой тре-
обеспечить высокую ликвидность по любой паре. буют, чтобы ретрансляторы имели ресурсы - исходные
Если текущий курс лучше, чем заданный поль- балансы токенов, чтобы разместить ордера на покупку -
зователем Y, маржа распределяется между всеми ретрансляторы Loopring должны найти только подходя-
ордерами в кольцевом ордере. В качестве награды щие ордера для завершения сделки и могут сделать это
майнер выбирает между частью маржи (Margin- без начального баланса токенов.
Split и возвратом LRx пользователю) или просто
с сохранением комиссии в LRx. 6.2 Обмен ликвидностью
6. Верификация и выполнение: Кольцевой ордер Ретрансляторы могут свободно выбирать способ обмена
принимается LPSC. Он выполняет несколько про- ликвидностью (ордерами) друг с другом. Наш блокчейн
верок данных, предоставленных майнером, и опре- является лишь одним из решений, и экосистема сво-
деляет, может ли кольцевой ордер выполниться бодна в выборе взаимодействия. Помимо присоединения

5
к нашему блокчейну, они могут строить и управлять UDOM не включает цену (которая должна быть чис-
их собственным, создавая правила/поощрения по свое- лом с плавающей запятой(float)), но вместо этого исполь-
му усмотрению. Ретрансляторы также могут работать зует переменную rate или r, которая вычисляется как
в одиночку в виде особой реализации кошелька. Разу- amountS/amountB. rate не является числом с плавающей
меется, есть явные преимущества во взаимодействии с запятой, а значением, которое будет сравниваться только
другими ретрансляторами, учитывая сетевой эффект, с другими целыми числами без знака, чтобы сохранить
однако различные бизнес-модели могут иметь своеобраз- все промежуточные результаты в виде целых чисел без
ные схемы обмена ликвидностью и разделять комиссии знака и увеличить точность вычислений.
любым способом.
7.1.1 Процесс покупки
7 Спецификация протокола Когда майнер проверяет ордера, возможно, будет ис-
полнена более высокая ставка, что позволит пользовате-
7.1 Анатомия ордера лям получить больше tokenB, чем amountB они указали.
Однако, если buyNoMoreThanAmountB установлен в True,
Ордер представляет собой пакет данных, в котором опи-
протокол гарантирует, что пользователи получат не бо-
сывается намерение торговли. Ордер Loopring опреде-
лее amountB из tokenB. Таким образом, UDOM параметр
ляется с использованием модели Uni-Directional Order
buyNoMoreThantokenB определяет, когда заказ считается
Model или UDOM следующим образом:
полностью выполненным. buyNoMoreThantokenB указы-
message Order { вает максимум amountS или amountB, и разрешает поль-
address protocol; зователям выражать более грамотные торговые намере-
address owner; ния, чем традиционные ордера на покупку/продажу.
address tokenS; Например: amountS = 10 и amountB = 2, курс r =
address tokenB; 10/2 = 5. Таким образом, пользователь готов продать
uint256 amountS; 5 tokenS за каждый tokenB. Майнер проверяет и на-
uint256 amountB; ходит пользователя с курсом 4, позволяя пользователю
unit256 lrcFee получить 2.5 tokenB вместо 2. Однако, если пользо-
unit256 validSince; // Секунд с начала эпохи вателю требуется только 2 tokenB и установлен флаг
unit256 validUntil; // Секунд с начала эпохи buyNoMoreThanAmountB в True, LPSC выполняет тран-
uint8 marginSplitPercentage; // [1-100] закцию с курсом 4 и пользователь продает 4 tokenS за
bool buyNoMoreThanAmountB; каждый tokenB, сохраняя тем самым 2 tokenS. Имейте
uint256 walletId; ввиду, что это не учитывает комиссии за майнинг (см.
// Адрес двойной авторизации Раздел 8.1).
address authAddr; Действительно, если мы используем
// v, r, s - части подписи
Order(amountS,tokenS,
uint8 v;
amountB,tokenB,
bytes32 r;
buyNoMoreThantokenB)
bytes32 s;
// Секретный ключ двойной авторизации, для представления ордера в упрощенной форме, то
// не используется для вычисления хеша ордера, для пары ETH/USD на традиционной бирже возможны
// поэтому он НЕ подписан. ордера 1-й и 3-й, но не другие два:
string authKey;
uint256 nonce; 1. Продать 10 ETH по цене 300 USD/ETH.
} Этот ордер может быть выражен как:
Order(10, ETH, 3000, USD, False).
Чтобы создать ордер, его нужно подписать закрытым
ключом пользователя. Переменная authAddr использует- 2. Продать ETH по цене 300 USD/ETH, чтобы полу-
ся для подписания кольцевых ордеров, частью которых чить 3000 USD. Этот ордер может быть выражен
является этот ордер, что предотвращает действия зло- как: Order(10, ETH, 3000, USD, True).
умышленников. Для более подробной информации обра- 3. Купить 10 ETH по цене 300 USD/ETH,
титесь к разделу 9.1. Подпись представлена переменны- Этот ордер может быть выражен как:
ми v, r и s и передается вместе с параметрами ордера по Order(3000, USD, 10, ETH, True).
сети. Это гарантирует, что ордер остается неизменным в
течение всего его жизненного цикла. Несмотря на то, что 4. Потратить 3000 USD на покупку максималь-
ордер никогда не изменяется, протокол все еще может ного количества ETH по цене 300 USD/ETH,
вычислять его текущее состояние на основе его адреса Этот ордер может быть выражен как:
вместе с другими переменными. Order(3000, USD, 10, ETH, False).

6
7.2 Проверка кольца каждый ордер в кольцевом ордер имеет одинаковую
скидку. Например, если разность курсов равна γ, тогда
Смарт контракты Loopring не выполняют расчеты по
цена за каждый заказ будет равна:
обменному курсу или сумме, но должны получать и
r0→1 ·(1−γ), r1→2 ·(1−γ), r2→0 ·(1−γ), и удовлетворять:
проверять, какие майнеры это сделали. Эти вычисления
выполняются майнерами по двум основным причинам:
r0→1 · (1 − γ) · r1→2 · (1 − γ) · r2→0 · (1 − γ) = 1 (3)
(1) язык программирования смарт контрактов, такой как
solidity [19] на Ethereum, не поддерживает вычисления следовательно:
с плавающей запятой, особенно pow(x, 1/n) (вычисление
n-го корня из числа с плавающей запятой), и (2) жела- 1
тельно, чтобы вычисление было сделано офчейн, чтобы γ =1− √ . (4)
3
r0→1 · r1→2 · r2→0
уменьшить стоимость и облегчить блокчейн.
Если транзакция содержит n ордеров, скидка будет:
7.2.1 Проверка подкольца
1
Этот шаг не позволяет арбитражникам нечестно реали- γ = 1 − qQ , (5)
n n−1 i
зовать всю маржу в кольцевом ордере, внедряя в нее i=0 r
новые ордера. По сути, как только валидный кольцевой
ордер находит майнер, может возникнуть соблазн доба- где ri – курс i-го ордера. Очевидно, что только если
вить в него другие ордера, чтобы полностью присвоить разность курсов γ ≥ 0, ордера могут быть выполнены;
маржу пользователей (скидки). Как видно из рисунка 3 и фактический обменный курс i-го ордера (Oi ) rˆi =
ниже, тщательно рассчитанные значения x1, y1, x2 и y2 ri · (1 − γ), rˆi ≤ ri .
сделают произведение всех ордеров равным 1, поэтому Вспомним наш предыдущий пример, где у Алисы 15
скидки не будет. токенов A, и она хочет за них 4 токена B, у Боба 10
токенов B, и он хочет за них 30 токенов A. Если токен A
ОРДЕР 2
владелец: Y является эталоном, тогда Алиса покупает токен B за 15 4 =
amountS: 9B 30
amountB: 12C 3.75 A, а Боб продает токен B за 10 = 3.00 A. Подсчитаем
разность курсов: 150 1
120 = 1.25, таким образом, 1.25 = 0.8
2
ОРДЕР 1
владелец: X
ОРДЕР 3
владелец: Z
= (1 − γ) . Обменный курс, который делает √ торговлю
amountS: 10000 A amountS: 100 C справедливой для обеих сторон, составляет 0.8 · 3.75 ≈
amountB: 2 B amountB: 160 A
3.3541 token A на токен B.
ОРДЕР 5 ОРДЕР 4 Боб отдает 4 токена B и получает 13.4164 токенов
владелец: addressM владелец: M
amountS: x2 C amountS: x1 A A, больше, чем 12, которые он ожидал. Алиса получает
amountB: y2 A amountB: y1 B
4 токена B как и предполагалось, но отдает только
13.4164 токенов A взамен, меньше, чем она была готова
Рис. 3: Кольцевой ордер с подкольцом отдать (15). Обратите внимание: часть этой маржи будет
Это нулевой риск, добавление нулевой ценности в сеть направлена на оплату комиссии, чтобы стимулировать
и считается нечестным поведением со стороны майне- майнеров (и кошельки). (См. Раздел 8.1).
ра. Чтобы предотвратить это, Loopring требует, чтобы
валидный цикл не мог содержать никаких подколец. 7.2.3 Отслеживание выполнения и отмены
Чтобы проверить это, LPSC гарантирует, что токен не
может быть в позиции покупки или продажи дважды. Пользователь может частично или полностью отменить
На приведенной выше диаграмме мы видим, что токен ордер, отправив специальную транзакцию в LPSC, со-
A был дважды продан и дважды куплен, такое будет держащую сведения об ордере и суммах для отмены.
запрещено. LPSC учитывает это, сохраняет суммы для отмены и
посылает событие OrderCancelled в сеть. LPSC отсле-
живает выполненные и отмененные суммы, сохраняя их
7.2.2 Проверка курса
значения, используя хеш ордера в качестве идентифика-
Расчеты обменного курса в кольцевом ордере произво- тора. Эти данные являются общедоступными и события
дятся майнерами по указанным выше причинам. Именно OrderCancelled / OrderFilled посылаются в сеть по
LPSC должен убедиться, что они верны. Во-первых, он мере необходимости. Отслеживание этих значений имеет
проверяет, что курс покупки, который может выполнить решающее значение для LPSC во время этапа расчета
майнер для каждого ордера, равен или меньше первона- кольцевого ордера.
чального курса покупки, установленного пользователем. LPSC также поддерживает отмену всех орде-
Это гарантирует, что пользователь получит обменный ров для любой торговой пары с помощью события
курс, который он запросил или даже лучше. Как только OrdersCancelled и отмена всех ордеров для адреса с
обменные курсы подтвердятся, LPSC гарантирует, что помощью события AllOrdersCancelled.

7
7.2.4 Масштабирование ордера Для каждого ордера в кольцевом ордере, оплата
tokenS делается в следующем или предыдущем ордере
Ордера масштабируются в соответствии с историей вы-
в зависимости от реализации. Затем комиссия майнера
полненных и отмененных сумм и текущего баланса сче-
оплачивается в зависимости от модели вознаграждения,
тов отправителей. Процесс находит ордер с наименьшей
выбранной майнером. Наконец, как только все транзак-
суммой, которая должна быть выполнена в соответствии
ции сделаны, событие RingMined посылается в сеть.
с вышеуказанными характеристиками, и использует ее
как эталон для масштабирования всех транзакций в
кольцевом ордере. 7.3.1 Посылаемые события
Поиск ордера с наименьшим значением может помочь Протокол посылает события, которые позволяют ре-
определить объем выполнения для каждого ордера. На- трансляторам, обозревателям ордеров и другим участ-
пример, если i-ый ордер является ордером с наименьшим никам получать обновления списка ордеров как можно
значением, то количество токенов, проданных из каждо- более эффективно. Посылаемые события:
го ордера ŝ, и количество токенов, купленных из каждого
ордера b̂, могут быть рассчитаны как: • OrderCancelled: Отмена конкретного ордера.

• OrdersCancelled: Отмена всех ордеров торговой


ŝi = si , b̂i = ŝi /r̂i , ; пары, связанных с адресом.
ŝi⊕1 = b̂i , b̂i⊕1 = ŝi⊕1 /r̂i⊕1 ;
• AllOrdersCancelled: Отмена всех ордеров всех
ŝi⊕2 = b̂i⊕1 , b̂i⊕2 = ŝi⊕2 /r̂i⊕2 ; торговых пар, связанных с адресом.
...
• RingMined: Кольцевой ордер успешно выполнен.
где si баланс, который остается после того, как ордера Это событие содержит данные, относящиеся к каж-
частично выполнены. дой передаче токена внутри кольца.
Во время реализации мы можем смело предположить,
что любой ордер в кольцевом ордере имеет самое наи-
меньшее значение, затем пройти по кольцевому ордеру 8 Токен LRx
не более двух раз, чтобы рассчитать объем выполнения
LRx - это обобщенное обозначение токена. LRC - это
каждого ордера.
токен Loopring на Ethereum, LRQ на Qtum, LRN на NEO
Пример: если наименьшая сумма, которую нужно вы-
и т. д. Другие типы LRx будут введены в будущем, по-
полнить по сравнению с первоначальным ордером, равна
скольку Loopring будет развернут на других публичных
5%, все транзакции в кольцевом ордере уменьшаются
блокчейнах.
до 5%. Как только транзакции будут завершены, ордер,
который имеет наименьшее значение, должен быть пол-
ностью выполнен. 8.1 Комиссии
Когда пользователь создает ордер, он указывает коли-
7.3 Кольцевой ордер чество LRx, которое должно быть выплачено майнеру,
выполневшему ордер, в качестве платы, также указы-
Если кольцевой ордер выполняет все предыдущие про-
вает процент от маржи (marginSplitPercentage). Это
верки, он может быть закрыт, и транзакции могут быть
называется разделение маржи. Решение о том, что из
выполнены. Это означает, что все n ордеров из кольце-
них выбрать (комиссия или маржа), предоставляется
вого ордера связаны, как показано на рисунке 4:
майнеру.
O3 O2 Представление разделения маржи:

AdditionalBuyAmount
4 1
O O M arginSplit
OrderOriginalBuyAmount

O5 On

Рис. 4: Кольцевой ордер


Для совершения транзакций LPSC использует смарт T otalBuyAmount
контракт TokenTransferDelegate. Внедрение такого де-
легата улучшит протокол, сделав смарт контракт проще, OrderActualBuyAmount M argin
так как все ордера требуют авторизации этого делегата
вместо различных версий протокола. Рис. 5: 60% разделение маржи

8
Если маржа в кольцевом ордере слишком мала, майнер реализации или бизнес-модели, наша склонность состоит
будет выбирать комиссию в LRx. Если, наоборот, маржа в том, чтобы кошельки получали приблизительно 20%
достаточно существенна, и полученное разделение мар- – 25% от заработанных наград. Кошельки представ-
жи будет стоить гораздо больше, чем плата LRx, майнер ляют собой основную цель для интеграции протокола
будет выбирать часть маржи. Однако существует еще Loopring, поскольку у них есть пользовательская база,
одна оговорка: когда майнер выбирает разделение мар- но малый или вообще нет источника дохода.
жи, он должен заплатить пользователю (создателю ор-
дера) комиссию, которая предназначалась майнеру. Это
повышает порог того, где майнер будет выбирать раз-
8.2 Децентрализованное управление
деление маржи ради двухкратного увеличения комиссии Протокол Loopring является социальным протоколом в
ордера, увеличивая склонность к выбору платы в LRx. том смысле, что он полагается на координацию между
Это позволяет майнерам получать постоянный доход на участниками для эффективной работы по достижению
кольцевых ордерах с низкими маржами в противовес цели. Это не отличается от крипто протоколов в це-
получения меньшего дохода от более высокой маржи в лом, и действительно, его полезность в значительной
кольцевых ордерах. Наша модель вознаграждения осно- степени обусловлена теми же механизмами согласова-
вана на ожидании того, что по мере роста и созревания ния задач [20], постоянным достижением консенсуса и
рынка будет появляться меньшее количество ордеров с ограниченной функциональностью. С этой целью токены
высокой маржой, что потребует фиксированных сборов LRx используются не только для оплаты комиссии, но
LRx в качестве награды. В итоге получим следующий и для выравнивания финансовых стимулов различных
график: участников сети. Такое согласование необходимо для
y
широкого принятия любого протокола, но особенно остро
стоит для биржевых протоколов, учитывая, что успех в
основном связан с повышением ликвидности в надежной
децентрализованной экосистеме.
Токены LRx будут использоваться для обновле-
f ExpectedM iningIncome ния протокола через децентрализованное управление.
Смарт-контракт обновления будет регулироваться дер-
x жателями токенов для обеспечения целостности и без-
f 2f опасности, а также для ослабления рисков частичной
ликвидности за счет несовместимости. Учитывая, что
Рис. 6: Модель комиссий в Loopring смарт контракты не могут быть изменены после их
развертывания, существует риск того, что dApps или
где f – комиссия LRx, x – разделение маржи, y – доход
конечные пользователи будут продолжать взаимодей-
от майнинга. y = max(f, x − f ) как указано сплошной
ствовать с устаревшими версиями, а не с обновленными
линией; если комиссия LRx ордера равна 0, равенство
контрактами. Возможность обновления имеет решающее
примет вид y = max(0, x − 0), что упрощается до y = x,
значение для успеха протокола, поскольку он должен
как указано серой линией. Последствия:
адаптироваться к требованиям рынка и базовым целям.
1. Если разделение маржи равно 0, майнеры выбира- Децентрализованное управление держателями LRx поз-
ют комиссию LRx и все еще стимулируются. волит обновлять смарт-контракты без нарушения ра-
боты dApps или конечных пользователей. Сначала это
2. Если комиссия LRx равна 0, получаем серую линию будет осуществляться с помощью простого смарт кон-
и линейный рост доходов. тракта с мультиподписью с целью продвижения к функ-
ционированию на оспове DAO.
3. Когда доход от разделение маржи больше, чем
удвоенная комиссия LRx, майнеры выбирают раз-
деление маржи и платят LRx пользователю. 9 Мошенничество и защита от
Следует отметить, что если комиссия LRx отлична от ну- атак
ля, независимо от того, какой вариант выбирает майнер,
всегда будет передача LRx между майнером и создателем 9.1 Предотвращение опережающей сдел-
ордера. Либо майнер получает комиссию LRx, либо пла- ки
тит комиссию LRx обратно создателю ордера, чтобы за-
брать часть маржи. Майнеры будут делиться определен- В децентрализованных биржах опережающая сделка -
ным процентом сборов с кошельками. Когда пользова- это, когда кто-то пытается скопировать торговое реше-
тель отправляет ордер через кошелек и он выполняется, ние другого узла и выполнить его до первоначальной
кошелек вознаграждается комиссией или частью маржи. транзакции, которая находится в пуле ожидания тран-
Несмотря на то, что возможны и другие уникальные закций (mempool). Это может быть достигнуто путем

9
указания более высокой комиссии за транзакцию (цена authSignature. Обратите внимание, что ключи
на газ). Основная схема опережающей сделки в Loopring authKey НЕ являются частью транзакции в блок-
(и любом протоколе для согласования ордеров) - это чейне и, таким образом, остаются неизвестными
кража: когда злоумышленник крадет один или несколько для всех, кроме майнера.
ордеров из ожидающей выполнения транзакции; и, в
частности, для Loopring: когда злоумышленник крадет 6. Протокол Loopring проверяет соответствие пары
весь кольцевой ордер из ожидающей транзакции. authSignature и authAddr в каждом ордере и
Когда транзакция submitRing не подтверждена и все отклоняет кольцевой ордер, если какая-нибудь
еще находится в пуле ожидания, любой может легко authSignature отсутствует или недействительна.
обнаружить такую транзакцию и заменить minerAddress В результате имеем:
их собственным адресом (filcherAddress), тогда
он может повторно подписать полезную нагрузку с • Подпись ордера (приватным ключом адреса owner)
filcherAddress, чтобы заменить подпись кольцевого гарантирует, что ордер не может быть изменен, в
ордера. Злоумышленник может установить более вы- том числе authAddr.
сокую цену на газ и предложить новую транзакцию в
надежде, что майнеры выберут ее в следующий блок • Подпись майнера (с помощью приватного ключа
вместо первоначальной транзакции submitRing. minerAddress), если она сделана, гарантирует, что
Предыдущие решения этой проблемы имели важные никто другой не сможет добавить в блокчейн этот
недостатки: требовалось больше транзакций и, таким кольцевой ордер.
образом, стоило майнерам больше газа; и, по крайней
• authSignature гарантируют, что весь кольцевой
мере, вдвое больше блоков для выполнения кольцевого
ордер не может быть изменен, в том числе
ордера. Наше новое решение Двойная авторизация (Dual
minerAddress, и никакие ордера не могут быть
Authoring) [21] включает механизм настройки двух уров-
украдены.
ней авторизации для ордеров - один для создания и один
для майнинга. Двойная авторизация предотвращает кражу ордера и
Процесс двойной авторизации: кольцевого ордера, все еще гарантируя, что кольцевые
ордера могут быть выполнены в одной транзакции. Кро-
1. Для каждого ордера программное обеспечение
ме того, двойная авторизация позволяет ретрансляторам
кошелька генерирует случайную пару публич-
обмениваться ордерами двумя способами: совместимым
ный/приватный ключ и помещает ее в JSON снип-
и несовместимым. По умолчанию Loopring функциони-
пет (Альтернативой является использование адре-
рует как OTC-модель и поддерживает только лимитные
са, полученного из открытого ключа, а не самого
ордера, что означает, что временные метки заказов иг-
открытого ключа для уменьшения размера. Мы ис-
норируются. Это означает, что опережающая сделка не
пользуем authAddr для представления такого адре-
влияет на фактическую цену этой сделки, но влияет на
са и authKey для представления соответствующего
ее выполнение.
приватного ключа authAddr).

2. Вычислить хэш ордера со всеми полями, кроме


r, v, s и authKey), и подписать хэш с помощью
10 Другие атаки
приватного ключа owner (не authKey).
10.1 Атака Сибиллы или DOS
3. Кошелек отправит заказ вместе с authKey ре-
Злоумышленники, действуя сами или маскируясь, могут
транслятору для майнинга. Майнер проверит, что
отправить большое количество небольших ордеров для
authKey и authAddr составляют валидную пару, а
атаки узлов Loopring. Однако, поскольку мы разрешаем
подписи ордеров соответствуют owner адресам.
узлам отклонять заказы на основе их собственных крите-
4. Когда кольцевой ордер идентифицирован, майнер риев, которые они могут скрывать или раскрывать, боль-
будет использовать все authKey для подписи хеша шинство этих ордеров будут отклонены. Уполномочивая
кольцевого ордера, minerAddress и всех парамет- ретрансляторы самостоятельно оценивать ордера, мы не
ров для майнинга. Если в кольцевом ордере содер- рассматриваем DOS атаку как угрозу.
жится n ордеров, то будет n подписей n authKey.
Мы называем эти подписи authSignature. Майнер 10.2 Недостаточный баланс
может также подписать хеш кольца вместе со всеми
параметрами для майнинга, используя приватный Злоумышленники могут подписывать и распространять
ключ minerAddress. ордера, чей адрес на самом деле имеет нулевой баланс.
Узлы могут отслеживать и замечать, что фактический
5. Майнер вызывает функцию submitRing со все- баланс некоторых ордеров равен нулю, обновляя статус
ми параметрами, а также все дополнительные этих ордеров, а затем отбрасывать их. Узлы должны

10
тратить время, чтобы обновить статус ордера, поэтому 12 Благодарности
рекомендуется также вести черные списки для миними-
зации усилий. Мы хотели бы выразить благодарность нашим наставни-
кам, советникам и многим людям в сообществе, которые
были настолько приветливы и охотно делились своими
11 Выводы знаниями. В частности, мы хотели бы поблагодарить
Shuo Bai (из ChinaLedger); профессора Haibin Kan; Alex
Протокол Loopring представляет собой базовый уровень Cheng, Hongfei Da; Yin Cao; Xiaochuan Wu; Zhen Wang,
для децентрализованной биржи. При этом он имеет глу- Wei Yu, Nian Duan, Jun Xiao, Jiang Qian, Jiangxu Xiang,
бокие последствия в том, как люди обмениваются акти- Yipeng Guo, Dahai Li, Kelvin Long, Huaxia Xia, Jun Ma,
вами и ценностями. Деньги, как промежуточный товар, and Encephalo Path за обзор и предоставление отзывов
облегчают или заменяют бартерный обмен и решают по этому проекту.
проблему двойного совпадения потребностей [22], в соот-
ветствии с которой два участника должны предложить Список литературы
друг другу определенный товар или услугу. Аналогич-
ным образом, протокол Loopring направлен на то, чтобы [1] Vitalik Buterin. Ethereum: a next generation smart
отказаться от нашего желания для совпадения потребно- contract and decentralized application platform (2013).
стей в торговых парах, используя кольцевое соответствие URL {http://ethereum. org/ethereum. html}, 2017.
для быстрейшего совершения сделки. Это имеет смысл,
когда группа людей обменивается токенами, традицион- [2] Gavin Wood. Ethereum: A secure decentralised
ными активами с кем-то другим. Действительно, так же, generalised transaction ledger. Ethereum Project Yellow
как децентрализованные криптовалюты создают угрозу Paper, 151, 2014.
национальному контролю над деньгами, комбинаторный [3] Patrick Dai, Neil Mahi, Jordan Earls, and
протокол, который может удовлетворять любому коли- Alex Norta. Smart-contract value-transfer
честву торговцев (потребителей/производителей), пред- protocols on a distributed mobile application
ставляет собой теоретическую угрозу для самой концеп- platform. URL: https://qtum. org/uploads/files/
ции денег. cf6d69348ca50dd985b60425ccf282f3. pdf, 2017.
Преимущества протокола включают:
[4] Viktor Atterlönn. A distributed ledger for gamification
• Офчейн управление ордером и ончейн выполнение of pro-bono time, 2018.
означает, что нет уменьшения производительности [5] Hernando de Soto. The Mystery Of Capital. Basic
ради обеспечения безопасности. Books, 2000.

• Большая ликвидность благодаря кольцевым орде- [6] Satoshi Nakamoto. Bitcoin: A peer-to-peer electronic
рам и распределению ордеров. cash system. 2008.
[7] Fabian Schuh and Daniel Larimer. Bitshares 2.0:
• Двойная авторизация решает проблему опережаю- Financial smart contract platform, 2015.
щей сделки, с которой сталкиваются все DEX и их
пользователи. [8] Bancor protocol. URL https://bancor.network/, 2017.
[9] Yaron Velner Loi Luu. Kybernetwork: A
• Свободные, публичные смарт контракты позволя- trustless decentralized exchange and payment
ют любому dApp взаимодействовать с протоколом. service. https://kr.kyber.network/assets/
KyberNetworkWhitepaper.pdf, Accessed: 2018-03-05.
• Стандартизация между участниками позволяет со-
[10] Fortune. How to steal $500 million in
здавать сетевые эффекты и улучшать работу ко-
cryptocurrency. http://fortune.com/2018/01/
нечного пользователя.
31/coincheck-hack-how, Accessed: 2018-03-30.
• Сеть поддерживает различные виды списков орде- [11] Robert McMillan. The inside story of mt. gox, bitcoin’s
ров и взаимодействия. 460 dollar million disaster. 2014.
[12] Sylvain Ribes. Chasing fake volume: a crypto-plague.
• Снижение барьеров для входа означает снижение
https://medium.com/@sylvainartplayribes/
затрат на узлы, соединяющие сеть и конечных
chasing-fake-volume-a-crypto-plague-ea1a3c1e0b5e,
пользователей.
Accessed: 2018-03-10.
• Анонимная торговля непосредственно из кошель- [13] Rossella Agliardi and Ramazan Gençay. Hedging
ков пользователей. through a limit order book with varying liquidity. 2014.

11
[14] Will Warren and Amir Bandeali. 0x: An open protocol [18] Fabian Vogelsteller. Erc: Token standard. URL
for decentralized exchange on the ethereum blockchain, https://github.com /ethereum /EIPs /issues /20, 2015.
2017.
[19] Chris Dannen. Introducing Ethereum and Solidity.
[15] Iddo Bentov and Lorenz Breidenbach. The cost of Springer, 2017.
decentralization. http://hackingdistributed.com/
[20] Vitalik Buterin. Notes on blockchain governance.
2017/08/13/cost-of-decent/, Accessed: 2018-03-05.
https://vitalik.ca/general/2017/12/17/voting.
html, Accessed: 2018-03-05.
[16] Daniel Wang. Coinport’s implemenation of udom.
https://github.com/dong77/backcore/blob/ [21] Daniel Wang. Dual authoring — loopring’s solution
master/coinex/coinex-backend/src/main/scala/ to front-running. URL https://medium.com/loopring-
com/coinport/coinex/markets/MarketManager. protocol/dual-authoring-looprings-solution-to-front-
scala, Accessed: 2018-03-05. running-d0fc9c348ef1, 2018.

[17] Supersymmetry. Remarks on loopring.[22] Nick Szabo. Menger on money: right and wrong.
https://docs.loopring.org/pdf/ http://unenumerated.blogspot.ca/2006/06/
supersimmetry-loopring-remark.pdf, Accessed: menger-on-money-right-and-wrong.html, Accessed:
2018-03-05. 2018-03-05.

12

Вам также может понравиться