Вы здесь

Cardano жив и будет жить

После нескольких месяцев испытаний на небольших группах функционал открытой тестовой сети Cardano, наконец, был расширен до поддержки смарт-контрактов. Вслед за этим все кому не лень начали тестить сеть и колдовать над даппами, при этом разработчики всячески пытались продемонстрировать, насколько тяжело им дается работа. Все эти «стенания» вызвали ожесточенную дискуссию вокруг ряда технических решений, лежащих в основе Cardano. Многие критики проекта используют эту дискуссию как возможность указать на недостатки Cardano, исказить проблему и в конечном итоге принизить потенциал одного из гигантов криптоиндустрии.

Cardano жив и будет жить

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

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

Несмотря на масштаб развернувшейся дискуссии вокруг Cardano, мы попытаемся сохранить беспристрастность и рассказать как о плюсах, так и минусах проекта, в том числе развеем некоторые заблуждения и расскажем о новых фишках. С этого момента все ниженаписанное будет носить сугубо технический характер, за исключением разве что резюме в конце.
Выбор конструктивного решения – это, как правило, выбор между несколькими компромиссными решениями. Часто успех карьеры инженера-программиста зависит от того, насколько хорошо он делает этот выбор. Здесь же нам предстоит выяснить, из чего пришлось выбирать команде Cardano, и для удобства сравнения точкой отсчета возьмем Ethereum.

Многие отмечали, что выбор Cardano в пользу eUTXO может усложнить процесс переноса протоколов. Это, безусловно, так: мы упоминали об этом в своей презентации много месяцев назад; то же самое у себя в твиттере написал и Ларс Брюньес, руководитель департамента по вопросам образования в IOG, а также ряд других специалистов.

Чтобы всецело оценить последствия этого выбора, необходимо разобраться, что предшествовало этому решению.

Историческая справка

Биткоин впервые ввел такое понятие, как «остаток неизрасходованной криптовалютной мелочи», или сокращенно UTXO (далее по тексту – остаток). Каждая операция, проводимая между пользователями, требует определенного количества входных данных и выдает некоторое количество выходных данных, причем каждая выходная информация (далее – выход) – это сведения о средствах (некоторое количество биткоинов) и сведения о субъекте, который вправе их – бикоины - потратить.

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

У этой схемы есть свои преимущества:

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

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

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

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

1_3LVsWbgP2TVCFHGObBjWVA@2x.png

В этих моделях получить доступ к глобальной информации, такой как цена, несложно. И у этого есть много негативных последствий.

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

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

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

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

Три слова, которые вы можете часто увидеть в обсуждениях, это «одновременность», «параллелизм» и «конфликт». Если вы не разбираетесь в этих тонких материях, ниже мы дадим определения этим понятиям: одновременность – это способность нескольких участников добиваться прогресса в выполнении задачи, не мешая друг другу; параллелизм – это способность нескольких участников выполнять задачу одновременно, не мешая друг другу; конфликт - это когда несколько участников действительно мешают друг другу.

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

1_hNcAdJ8FN3nEAtT5_kmOug@2x.png

Взято из «Введения в понятие одновременности в языках программирования»

В этом смысле блокчейн Ethereum хорош в одновременности, но ужасен в параллелизме. Модель UTXO прекрасна в плане параллелизма, но может сталкиваться с конфликтами, что может отразиться на ее способности к одновременности в некоторых схемах протоколов.

Cardano и eUTXO

А теперь давайте поговорим о проекте Cardano. Команда Cardano решила усовершенствовать модель UTXO таким образом, чтобы сами даппы могли находить компромисс между независимой и централизованной работой. В модель eUTXO, над которой работала команда Cardano, введены три новых базовых элемента для смарт-контрактов: datum (данное), redeemer (условие) и validator (валидатор).

Datum – это произвольный фрагмент данных, прикрепленный к одному UTXO. Он представляет собой часть внутреннего состояния, относящегося к этому UTXO. Вы можете использовать его, например, для отслеживания времени разморозки (разблокировки) и обратного адреса в контракте на передачу прав.

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

Ну и, наконец, validator представляет собой набор условий, при которых остаток (UTXO) может быть израсходован; в том числе он отвечает за проверку правильности нового состояния. Чтобы принять это решение, у валидатора есть доступ ко всей транзакции целиком.

Единственное, от чего зависит смарт-контракт, это указанные выше компоненты, которые включены в него в качестве входных данных, и единственное, что может выдать смарт-контракт, это то, что указано в нем в качестве выходных данных транзакции.

Транзакции в Cardano частично упорядочены (в зависимости от их условий), и оператор пула для стейкинга, вносящий изменения в порядок, не оказывает влияния на результат, поэтому риск MEV исключается.

Аналогично этому, каждая транзакция в Cardano детерминирована: пользователь создает, объявляет и подписывает новое состояние. Единственный способ изменить состояние – это потратить остаток, при этом остаток можно потратить только один раз, поэтому вы защищены от изменения состояния без вашего согласия.

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

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

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

1_gh4TJYUJ6i4bZK8Elnfo5g@2x.png

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

Именно поэтому при разработке схемы протокола необходимо хорошенько продумать все технические моменты.

Заблуждения

Прежде чем перейти к решениям необходимо разобрать некоторые ошибочные представления об этой проблеме:

Заблуждение 1: Cardano неидеален, потому что он допускает только 1 транзакцию на блок.

На самом деле все совершенно не так: Cardano допускает несколько сотен транзакций на блок.

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

Заблуждение 2: только один пользователь может взаимодействовать со смарт-контрактом на один блок/транзакцию.

Тоже неверно: конкуренция (считай – конфликт) разворачивается вокруг остатка, но сами остатки могут управляться одним и тем же смарт-контрактом.

Не стоит путать Cardano с Ethereum: в первом для воспроизведения какого-либо действия вы вызываете смарт-контракт; во втором – вы замораживаете остатки с помощью контракта, который сам определяет, когда эти остатки могут быть потрачены в дальнейшем.

Заблуждение 3: единственный путь решения этой проблемы – централизация.

Централизация способна решить эту проблему, но это не единственный способ. Сморите ниже.

Возможные решения

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

Чтобы было понятнее, давайте разберем несколько примеров на условных биржах.

Можно было бы так настроить биржу, что ей и не понадобился бы единый пул ликвидности. Вместо того, чтобы все объединять в единый пул, ликвидность распределялась бы между несколькими пулами, и чем больше бы она распределялась, тем больше возможностей для взаимодействия открывалось бы для людей и тем меньше разногласий возникало бы по поводу этих средств. Однако, чем больше вы разбиваете пулы, тем ниже эффективность, с которой вы используете капитал, и тем ниже эффективность перекрестного арбитража. Таким образом, разумнее было бы разработать решения этих проблем по аналогии с тем, как это реализовано в концепции концентрированной ликвидности у Uniswap v3.
Как вариант можно было бы рассмотреть биржевую модель портфеля заказов, которую крайне дорого вести и обновлять в Ethereum, но которая кажется более подходящей для блокчейна Cardano: каждый заказ здесь представляет собой отдельный остаток, однако сложность заключается в том, что у вас по-прежнему сохраняется конкуренция за наиболее выгодные заказы. Правильным решением в этом случае было бы разместить рыночные заказы в цепочке, а сторонний агрегатор сопоставлял бы и выполнял эти заказы. Таким образом, здесь главное – гарантировать, чтобы в одних руках не было слишком много власти над рыночной информацией.

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

Решение от SundaeSwap

Мы выбрали решение, которое отличается от вышеперечисленных. Очень скоро мы будем готовы приоткрыть завесу тайны и показать, как это работает. Следите за новостями!

Резюме

Короче говоря, слухи о смерти Cardano были сильно преувеличены. Существуют решения тех проблем, которые мы видим сегодня, а у самого проекта есть масса технологических достоинств и светлое будущее.

Недостаток нашей отрасли заключается в том, что многие люди, часто с весомым голосом, топят за какую-то одну технологию. Тут может быть и финансовый интерес, а может и нездоровая приверженность только одному проекту в ущерб всем остальным, когда отступление от своих прежних идей без потери лица не представляется возможным; а может просто незнание из-за плохих взаимоотношений с членами другого сообщества. В любом случае, не очень правильно утверждать, что один проект идеален и превосходит все остальные, будь то Bitcoin, Ethereum, Cardano, Solana, Mac, PC, Hammers, Screwdrivers или любой другой проект.

В нашей команде вы не найдете ни одного ярого поклонника Cardano. Но мы согласны с тем, что у Cardano есть интересные решения сложных проблем и стоящая за ним команда выбрала путь, который открывает новые возможности в криптоэкосистеме. Мы, безусловно, верим в успех их предприятия, а потому и создали свой продукт на его основе. В долгосрочной перспективе, как разработчики в криптопространстве, мы считаем, что конечному пользователю будет все равно, с каким блокчейном взаимодействовать. Идеальный конечный результат, на наш взгляд, это сделать так, чтобы блокчейны стали подобны языкам программирования: разные проекты выбирают разные сети, необходимые для раскрытия сильных сторон их протоколов.

Так что Cardano жив. А тыкать пальцем на один неудачный эксперимент в самом начале становления экосистемы и считать его роковым предзнаменованием краха Cardano – это в лучшем случае наивность, а в худшем - интеллектуальная незрелость. Выше мы описали несколько творческих решений, и мы уверены, что существует еще множество других, которые придумали те, кто работает с Cardano.

Категория: 
Tutorial
Монета: 
2
Ваша оценка: Нет Средняя: 2 (1 оценка)
8709 / 0
Аватар пользователя Serg Demin
Публикацию добавил: Serg Demin
Дата публикации: ср, 09/22/2021 - 10:30

Что еще почитать:

Комментарии:

Евгений654

Кардано это скам.
Используйте монеро.

пн, 10/11/2021 - 01:37