:RU: Как команда WingRiders строит DEX на Cardano

Перевод статьи How the WingRiders team is building DEX on Cardano | Cardanians

Децентрализованные биржи являются основой любой экосистемы DeFi. В сотрудничестве с командой WingRiders мы рассказали о том, как такая биржа может быть создана на платформе Cardano. В этой статье мы рассмотрим, как приложения создаются на Cardano в целом и с какими проблемами сталкивается команда WingRiders. Интересно посмотреть, какие варианты есть у команды и какие дизайнерские решения были приняты.

o.32eaca3706934d4977f2d1d969e531a0

Эволюция бирж

Централизованные биржи (CEX) по-прежнему доминируют в торговле цифровыми активами. Они контролируют закрытые ключи, параметры биржевой торговли, информацию о пользователях, безопасность средств, комиссионные и обменный коэффициент. Эти биржи не предлагают безопасный пассивный доход для владельцев монет или токенов.

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

Биржи, использующие книгу заказов, могут предлагать два типа заказов. Рыночный ордер позволяет пользователю продавать токены A за желаемое количество токенов B. Пользователь должен учитывать текущую рыночную стоимость токенов. Пользователь ожидает, что рыночный ордер будет исполнен почти немедленно. Второй тип - это лимитный ордер, в котором пользователь продает токены A за желаемое количество токенов B, но определяет точную рыночную стоимость, по которой должна быть совершена сделка. Таким образом, лимитный ордер может находиться в ожидании в течение более длительного периода времени, пока рыночные условия не приблизятся к ожиданиям пользователя.

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

Биржи, основанные на модели AMM, обеспечивают автоматическую торговлю активами посредством децентрализованного исполнения смарт контрактов. Запросы на обмен между пользователями выполняются полностью автоматически, и нет необходимости полагаться на доверенную третью сторону. В модели AMM используются так называемые пулы ликвидности. Вы можете думать о пуле ликвидности как о наборе двух видов токенов. Например, коллекция токенов A и другая коллекция токенов B образуют один пул ликвидности. AMM децентрализованные биржи не требуют сопоставления покупателя и продавца (нет сопоставления заказов). Вместо этого пользователи могут просто обменивать свои токены и активы, используя пулы ликвидности. Таким образом, запросы на обмен могут быть выполнены, по большому счету, немедленно.

Алгоритмы устанавливают стоимость токенов на основе изменяющегося соотношения в пулах ликвидности. Запрос пользователя на обмен всегда направляется в данный пул, содержащий идентичные токены. Типичная биржа AMM имеет несколько пулов ликвидности. Например, если она позволяет торговать токенами A, B и C, у нее может быть 3 пула. Будет 3 пула со следующими парами: A и B, A и C, B и C.

Для того чтобы иметь возможность совершать сделки на бирже AMM, необходимо иметь достаточное количество токенов в пулах. Другими словами, пулы нуждаются в достаточной ликвидности. Держатели токенов могут предоставлять эту ликвидность пулам и, таким образом, становиться так называемыми поставщиками ликвидности (LP). Поставщики ликвидности обычно размещают оба типа токенов для данного пула. Это означает, например, что поставщику ликвидности необходимо внести монеты ADA на сумму 100 долларов США и токены A также на сумму 100 долларов США для пула с парой ADA и токеном A. Поставщики ликвидности получают вознаграждение за предоставление токенов. Вознаграждение пропорционально предоставленной ликвидности и берется из комиссионных за совершенные сделки.

Как объясняет член команды WingRiders, AMM - это современный подход к торговле в децентрализованном мире, который стал новым стандартом. Это самый удобный способ обмена крипто токенами. С ростом популярности криптовалют мы можем ожидать, что пользователи будут регулярно хранить в своих кошельках множество типов монет и токенов, включая Bitcoin и Ethereum. Эти токены будут иметь определенную ценность, и пользователи смогут получить прибыль, если они предоставят токены на биржу AMM. Существует замечательный симбиоз между трейдерами и поставщиками ликвидности, причем обе группы извлекают выгоду из существования сервиса. Вот почему WingRiders DEX будет основана на модели AMM.

Понимание eUTXO и проблем, связанных с созданием dApps на Cardano

Прежде чем мы рассмотрим некоторые детали дизайна WingRiders, важно понять различия между экосистемой Cardano и Ethereum. Многие команды пытались взять DEX, который уже работает на Ethereum, и скопировать дизайн, чтобы быстро встроить DEX в экосистему Cardano. Эти команды вскоре поняли, что это неправильный путь и что им нужно более тщательно подойти к проектированию.

Команда VacuumLabs руководит разработкой WingRiders DEX. Команда имеет многолетний опыт работы с экосистемой Cardano и сотрудничала с командой IOG. Команда смогла избежать многих ошибок с самого начала и правильно спроектировала DEX с первой попытки.

Давайте объясним различия между проектами Cardano и Ethereum, чтобы лучше понять проблемы, с которыми сталкиваются команды. Это подтолкнет к пониманию, почему вы не можете просто скопировать концепцию из экосистемы Ethereum.

Каждая блокчейн сеть пытается достичь сетевого консенсуса по поводу изменений во владении монетами и токенами. Другими словами, каждый новый блок обновляет состояние. В индустрии блокчейна существует два широко распространенных способа работы с монетами. Каждый способ имеет свои преимущества и издержки. Первый - это модель неизрасходованных выходов транзакций (UTXO), который использует Bitcoin. Второй - это модель, основанная на учетной записи, которую использует Ethereum, но также и другие проекты, такие как Solana, Polkadot, Algorand и т.д. Команда IOG внедрила расширенную версию UTXO под названием Extended UTXO (EUTXO). EUTXO облегчает использование смарт контрактов. В этой статье мы продолжим использовать термин UTXO, но в контексте Cardano это EUTXO.

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

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

Изменение глобального состояния также возможно путем выполнения смарт контрактов, которые могут изменять балансы. Дизайн Ethereum имеет то преимущество для разработчиков приложений, что им не нужно беспокоиться о параллелизме. Разработчики могут свободно работать с учетными записями пользователей и изменять баланс. Поскольку обеспечивается индивидуальный доступ к балансам, существует меньший риск одновременного доступа двух агентов к одному и тому же балансу. Таким образом, разработать приложение относительно легко. Недостатками являются вышеупомянутая сложность распараллеливания, частые сбои транзакций и необходимость платить комиссию даже за неудачные транзакции. Более того, из-за упорядочения транзакций возникает проблема, известная как извлекаемая выгода майнера (MEV).

EUTXO Cardano существенно отличается от модели, основанной на учетной записи Ethereum. Вы можете думать о UTXO как о банкнотах. Если вы представите свой физический кошелек в виде адреса блокчейна, в нем может быть больше UTXO (больше банкнот). Если пользователь хочет узнать общее количество монет по адресу, ему необходимо будет суммировать стоимость всех UTXO. Расходование UTXO работает так же, как и с банкнотами. Если у пользователя есть UTXO со значением 100 ADA, и ему нужно заплатить 20 ADA, то все 100 ADA покинут адрес, из которых 20 ADA будут добавлены к адресу получателя, а 80 ADA вернутся на адрес отправителя. В результате будет два UTXO на 20 и 80 ADA (здесь мы пренебрегли комиссиями).

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

Проверка транзакций в сети Cardano намного проще. В модели UTXO важно только локальное состояние. Это означает, что исход транзакции зависит только от использования UTXOS, которые являются неизменяемыми объектами одноразового использования, которые выступают в качестве входных и выходных данных транзакций. Таким образом, транзакции независимы друг от друга, и нет ничего похожего на глобальное состояние.

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

Высокий уровень детерминизма и возможности распараллеливания являются преимуществами конструкции Cardano. С другой стороны, как объясняет член команды WingRiders, разработчикам приходится самим разбираться с параллелизмом. Каждый UTXO может быть использован только один раз, и он должен быть проверен всей сетью. Технически это означает, что UTXO может быть использован один раз для данного блока. Транзакции могут столкнуться с конфликтом, если они зависят от одного и того же UTXO в одно и то же время. Если некоторые средства были заблокированы смарт контрактом, только один участник может взаимодействовать с ними внутри одного блока. Как вы можете видеть, Cardano и Ethereum - это два совершенно разных мира.

Мы спросили команду WingRiders, какие у них есть варианты для создания DEX и как они работают со смарт-контрактами на Cardano.

В некотором роде Cardano в чем-то аналогичен хэш-функции Bitcoin с оплатой по сценарию, где транзакция проверяется скриптом. В отличие от Bitcoin, в случае Cardano вы можете прикрепить дополнительные данные (Datum) к EUTXO. Данные - это произвольные данные, подобные JSON. Монеты представлены триплетом: адрес, стоимость и, возможно, дата. Адрес может быть получен из открытого ключа, или это может быть адрес скрипта. В случае адреса скрипта UTXO может быть израсходован только в том случае, если проверка, определенная в соответствующем скрипте, прошла успешно.

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

Ончейн и оффчейн части не обязательно зависят друг от друга и не образуют единого целого. Сценарии проверки могут создаваться оффчейн частями и определять ограничения контракта. Таким образом, UTXO может быть израсходован транзакцией, которая не обязательно создается оффчейн частью. Если условия в сценарии проверки выполняются, то UTXO расходуется. Как объясняет член команды WingRiders, бизнес логика может быть даже реализована как часть программных кошельков или тесно связана с кошельками на интерфейсе.

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

Как проектировать DEX

Первые DEXes появились на Ethereum. Вначале ликвидность на децентрализованных биржах была низкой. Это была не очень хорошая ситуация для классического обмена книгами заказов. В конце концов стала популярной идея создания пулов ликвидности. Модель, основанная на счетах, хорошо подходит для этого, поскольку пулы ликвидности, по сути, могут быть просто балансами. Ethereum позволяет произвольно изменять эти балансы внутри блока. Uniswap извлекает выгоду из успеха концепции AMM.

Мы спросили команду WingRiders, как спроектировать DEX на Cardano и какие проблемы им необходимо преодолеть.

В Uniswap участники взаимодействуют с пулом ликвидности, атомарно обмениваясь токенами и обновляя балансы пула ликвидности. Этот простой дизайн не может быть скопирован и применен к Cardano. Пул ликвидности - это, по сути, общий ресурс, поскольку несколько трейдеров пытаются использовать его одновременно. Если бы пул ликвидности был представлен в виде одного UTXO в Cardano (наивный способ создать что-то вроде баланса Ethereum), на каждый блок можно было бы выполнить только один своп. Любые другие попытки потерпят неудачу. После каждого свопа необходимо будет создавать новый пул ликвидности UTXO с обновленным балансом.

Как произвести обмен в леджере на основе UTXO? Необходимо иметь доступный набор UTXO, из которого можно извлекать токены, и другой набор UTXO, в который можно вставлять токены. Обмен может быть реализован таким образом, чтобы отдельные транзакции расходовали UTXO из одного набора и вставляли UTXO с другой стороны набора. Обмен осуществляется посредством обмена выбранными UTXO. Пользователи должны предоставить UTXO токен одного типа (который останется в пуле ликвидности), чтобы получить UTXO со вторым типом токена.

На данный момент, как мы уже видим, мы сталкиваемся с проблемой, возникающей у проектировщиков DEX на Cardano. Они должны придумать некоторую бизнес логику, чтобы гарантировать, что отдельные участники не будут пытаться использовать один и тот же UTXO в пуле внутри блока. Это сложно, потому что транзакции независимы друг от друга. Без какой-либо координации или умного алгоритма пользователи могут попытаться использовать один и тот же UTXO, но только один может добиться успеха. Цель для проектировщиков очевидна. Как добиться множества взаимодействий между разными пользователями и единым пулом ликвидности в одном блоке.

Член команды WingRiders продолжает объяснять. В основном мы видим две стратегии решения проблемы параллелизма в Cardano: грубая сила и массовые транзакции. Стратегия грубой силы имеет ограниченную масштабируемость и область использования. По мере увеличения числа транзакций на платформе проблема параллелизма станет крайне узким местом. Команда решила использовать вторую стратегию: массовые транзакции.

Стратегия массовых транзакций разделяет взаимодействие со смарт контрактами на два этапа. На первом этапе пользователю необходимо создать запрос на обмен. Когда пользователь подписывает транзакцию, UTXO блокируются по адресу скрипта, включая условия, при которых UTXO могут быть израсходованы. На втором этапе наступает очередь агентов (агент также называется дозатором). Агенты ищут подходящие UTXO запросов, которые хотят взаимодействовать с определенным пулом ликвидности, чтобы выполнить запрошенный своп. Необходимо выполнить условия расходования средств. Агенты делают это со всеми другими доступными запросами на обмен и вставляют все обмены в одну большую пакетную транзакцию. При создании пакетной транзакции агенты знают, какие UTXO уже израсходовались. Они могут гарантировать, что конкретный UTXO не будет использоваться дважды в рамках пакетной транзакции. Такая транзакция завершилась бы неудачей, соответственно, сеть отказала бы в ней, поскольку один UTXO может быть израсходован только один раз. Как только пакетные транзакции подтверждаются сетью, пользователи обмениваются своими токенами. Большим преимуществом является интуитивно понятный пользовательский интерфейс, поскольку пользователи не конкурируют друг с другом при создании запросов на обмен, что означает отсутствие проблем с параллелизмом и более быструю работу.

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

Модель пакетной обработки

Давайте рассмотрим модель пакетной обработки более подробно. Во-первых, пользователям необходимо создать запросы на обмен (содержащие UTXO), которые должны быть отправлены, урегулированы и подтверждены. Это может занять примерно 5-30 секунд. Во-вторых, агенты могут принимать во внимание и собирать новые запросы на обмен (транзакции), как только они появляются в леджере. Агенты создают крупные пакетные транзакции и эффективно осуществляют множество свопов одновременно, используя пулы ликвидности.

Обратите внимание, что оффчейн часть функциональности DEX - это любой код, создающий транзакции DEX. Пользователи используют оффчейн код при создании запросов на обмен. Агенты используют автономный код при создании пакетных транзакций.

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

Пакетные транзакции также должны быть отправлены и подтверждены. Подтверждение может занять еще 5-30 секунд. Общее время реализации процесса от создания запроса до момента поступления обмененных токенов в ваш кошелек может составлять 15-60 секунд, но на самом деле большая его часть приходится на ожидание подтверждений. Если время больше приведенного, это может означать, что сеть может быть перегружена или что агенты собирают меньше запросов, чтобы уменьшить перегрузку блокчейна.

Все еще сложно правильно спроектировать модель пакетной обработки. Если DEX имеет большое количество запросов к одному пулу ликвидности, пакеты должны быть упорядочены между блоками. Это может привести к перегрузке при взаимодействии с единым пулом ликвидности, а время ожидания обмена будет очень длительным. Это то, что мы действительно могли видеть в недавних проблемах, связанных с DEX, которые обсуждались в Twitter.

Давайте посмотрим, что можно изменить и улучшить. Размер транзакции может быть уменьшен. Это не полностью решает проблему, но позволяет вставлять больше транзакций в блок. Аналогичным образом, использование ресурсов смарт контрактов также может быть сокращено. Чем более оптимальная реализация смарт контракта, тем больше транзакций смарт контракта может быть вставлено в блок.

Работа над оптимизацией является целью каждой команды разработчиков, и DEX не является исключением. Поскольку объем может быстро увеличиваться, решающее значение имеет хорошо оптимизированная реализация. К счастью, в команде WingRiders работают очень опытные разработчики Haskell. Сосредоточенность на оптимизации является приоритетом для команды с самого начала и до выхода в основную сеть.

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

Скорость свопов

Скорость свопов - очень важный фактор для пользователей. Одним из преимуществ WingRiders DEX будет именно скорость обмена. Обратите внимание, что воспринимаемая скорость DApp зависит от многих факторов, как внутренних, так и внешних. Чтобы разобраться с этим, давайте разберем все на части и соберем обратно. Каждое приложение DApp работает в условиях распределенной сети и имеет свои собственные свойства и функции. DApp не существует в вакууме, и может быть много других dApps, работающих параллельно. Чтобы иметь возможность предоставлять пользователям плавный пользовательский интерфейс, dApps также используют инфраструктуру, которая отражает состояние блокчейна или даже управляет некоторой бизнес логикой или процессами. Инфраструктура также приводит к задержкам. Все это внешние факторы.

Время создания блока - это свойство блокчейна, и оно является внешним фактором. В настоящее время Cardano установила это значение на уровне 20 секунд. На скорость обмена частично влияет время создания блока, но существует множество параметров, которые могут повлиять на общую пропускную способность сети (количество обрабатываемых пользовательских запросов). Если транзакции не помещаются в блок, они должны дольше ждать включения. Некоторые параметры Cardano в настоящее время установлены консервативно. Другими важными параметрами, влияющими на скорость DApp, являются размер блока, максимальный размер транзакции, единицы памяти скрипта Plutus на транзакцию и т.д.

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

На момент написания статьи блок может содержать около 4 транзакций максимального размера или около 250 крошечных транзакций. На самом деле в блоках присутствует сочетание того и другого. Это примерно от 12 до ~ 800 транзакций в минуту. Если бы все транзакции в блоке были бы скриптовыми, это сузило бы диапазон примерно до 12-72 транзакций в минуту для среднестатистических dApps. Реально, для транзакций с более крупными скриптами это будет около 20 транзакций DApp в минуту.

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

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

Количество обработанных запросов на обмен зависит от размера транзакции, и от использования смарт контрактами памяти и процессора. Именно здесь становятся очевидными внутренние факторы проектирования DApp, решения для параллелизма и компромиссов.

Команда WingRiders провела тест в общедоступной тестовой сети Cardano. В 10 блоках агенты выполнили 175 запросов на обмен. Если бы блоки создавались каждые 20 секунд, результат соответствовал бы примерно 55 запросам, обрабатываемым в минуту. Все это при наличии других dApps во время тестирования. Чтобы представить это в перспективе, согласно последним данным о транзакциях, Uniswap v3 приближается к 20-40 операциям в минуту.

Порядок запросов на обмен имеет значение

Пользователи отправляют свои запросы на обмен в определенном порядке. Агенты могут находить эти запросы в леджере и выполнять их. WingRiders гарантирует пользователям, что порядок отправленных обменов будет соблюдаться агентами. Порядок соблюдается для обеспечения справедливости в соответствии с принципом “первым пришел - первым ушел”.

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

  1. Алиса обменивает 10 000 000 BTC на ADA, что вызывает огромное проскальзывание

  2. Брайан обменивает 10 ADA на BTC

Когда Брайан поменяет свои 10 ADA после того, как обмен Алисы был выполнен, он получит гораздо больше BTC из-за проскальзывания, вызванного Алисой. Однако, когда обмен Брайана будет выполнен до обмена Алисы, он получит намного меньше, но это не сильно повлияет на Алису. Обратите внимание, насколько важен порядок с точки зрения удовлетворенности и справедливости пользователей.

Помните ли вы, что в сети Cardano нет ничего похожего на глобальное состояние, и порядок транзакций не имеет значения? Таким образом, это также относится и к возможностям смарт контрактов. Разработчики должны учитывать это при разработке логики приложений.

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

Чтобы следовать замыслу разработки WingRider и обеспечить обещанную справедливость, должен быть создан механизм для управления правильным порядком входных данных. Для обеспечения этого используются индексы, вставленные в редимер. Помещения определенных входных данных первыми в транзакцию недостаточно, и входные данные сортируются в другом порядке, прежде чем транзакция может быть прочитана валидатором. Это означает, что без дополнительных индексов в редимерах валидатор не может знать, какой вход (какой запрос) выполнить первым, а какой - вторым.

Итак, конструктор транзакций сначала вставляет входные данные Алисы в транзакцию и присваивает редимеру индекс 0. Это сигнализирует о том, что это должно быть сделано в первую очередь. Аналогично, редимеру Брайана был бы присвоен индекс 1. Индексы помогают валидатору определить, какой вход транзакции (запрос на обмен) выполнить первым, а какой - вторым.

Без описанной дополнительной логики с индексами валидаторы не смогли бы гарантировать, что запросы на обмен действительно выполняются в правильном порядке. Объясняя это другими словами, необходимо создать дополнительную логику для поддержания желаемого порядка, поскольку Cardano не может обеспечить это на уровне транзакций и их входных данных.

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

Сетевой эффект - ключ к успеху

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

Пользовательский интерфейс и доступность сервиса имеют решающее значение. Именно здесь WingRiders имеет большое преимущество благодаря своему обширному опыту работы с проектом Cardano и его инфраструктурой. Цель команды - сделать WingRiders основным элементом инфраструктуры. Это будет достигнуто за счет возможности очень простой интеграции в любой кошелек или dApps. Команда очень хорошо знает, как это сделать, так как в прошлом они создали популярный кошелек Adalite и сейчас работают над новым кошельком под названием Nufi (платформа для стейкинга с планами поддержки 10 блокчейнов). Команда также работала над интеграцией кошельков Cardano с кошельками Trezor и Ledger HW. WingRiders будет очень модульным и гибким программным обеспечением, подходящим для интеграции. Это эффективная стратегия сближения с пользователями и расширения сетевого эффекта.

Как удовлетворить пользователей

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

Безопасность сервиса является абсолютно ключевой функцией для завоевания доверия пользователей. WingRiders позволит внешним аудиторам (а именно CertiK) изучить исходный код, чтобы убедиться, что монеты и токены, отправленные на адрес обмена, никогда не будут потеряны. Пользователи и поставщики ликвидности могут быть уверены, что они не потеряют свои средства. Акцент на высокой безопасности соответствует философии проекта Cardano, и аудит безопасности является почти необходимым требованием для успеха.

WingRiders обещает пользователям, что обмены будут выполняться в каноническом порядке. Нет никаких причин давать кому-либо льготы. Ко всем пользователям будет одинаковое отношение.

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

Простота и ясность - другие важные требования к успеху. Пользовательский интерфейс является одним из приоритетов для команды. Как уже было описано, интегрировать WingRiders с кошельками и dApps будет очень легко. Это уже можно увидеть в их тестовой сетевой версии, где показана глубокая интеграция в кошелек (NuFi).

В дополнение к возможности получения вознаграждения за предоставление ликвидности пулам, команда стремится сохранить возможность участвовать в размещении монет ADA и, таким образом, не упустить вознаграждение за делегирование.

Экосистема Cardano быстро развивается, и первая версия обмена WingRiders может быть не совсем оптимальной. Команда будет отражать эволюцию инфраструктуры Cardano и соответствующим образом корректировать DEX.

Вывод

Целью статьи не было сравнение архитектуры Cardano и Ethereum. Обе платформы принципиально отличаются друг от друга и найдут свои собственные приложения. Вместе с командой WingRiders мы хотели показать вам, насколько сложно и проблематично создавать DEX в сети Cardano. Почти ничего, кроме базовой концепции, нельзя взять из мира Ethereum, и командам приходится придумывать совершенно новые идеи.

У WingRiders сильная и опытная команда, которая хорошо финансируется. DEX уже запущен в тестовой сети и появится в основной сети Cardano в 1 квартале 2022 года. Не стесняйтесь присоединиться и обязательно попробуйте осуществить своп или предоставить ликвидность. Вы можете зайти на официальный сайт проекта или пообщаться с командой в Discord.

// От переводчика: для получения дополнительных переведенных на русский язык статей о Cardano посетите русскоязычный раздел на форуме Cardano. Видеоролики о Cardano на русском можно найти на YouTube канале нашего замечательного амбасадора Тимура Сахабутдинова, а также на канале Чарльз Хоскинсон на русском. Хотите поговорить или задать вопрос о Cardano по-русски? Приглашаем вас в наше уютное сообщество в Telegram. Оставайтесь на связи, все только начинается!