:RU: Почему на Cardano нет атак с использованием флеш-кредитов?

Перевод статьи https://cexplorer.io/article/why-are-there-no-flash-loan-attacks-on-cardano

image

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

Принцип мгновенных займов

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

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

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

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

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

Другими словами, атомарность обеспечивает характер транзакций по принципу “все или ничего”.

Лучше всего объяснить на примере. Допустим, у нас есть три вовлеченные стороны: протокол кредитования (A), заемщик (B) и целевой протокол C. Эти три действия выполняются в рамках одной транзакции: заимствование, действие и погашение.

  • Заимствование: Заемщик (B) инициирует транзакцию, заимствуя средства из протокола кредитования (A). При этом уменьшается баланс A и увеличивается баланс B.
  • Действие: Заемщик (B) затем использует эти заемные средства для взаимодействия с другим протоколом C. Эти действия могут быть для арбитража, ликвидации или любой другой операции, которая может принести прибыль. При этом уменьшается баланс B и увеличивается баланс C.
  • Погашение: Наконец, заемщик (B) погашает кредит в соответствии с протоколом кредитования (A), с учетом оплаты комиссий или процентов. При этом уменьшается остаток по счету B и увеличивается остаток по счету A.

Когда транзакция завершается, выясняется, что средства не были заимствованы.

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

Многие из этих концепций принципиально отличаются от простоты скриптов Plutus и модели UTxO. Это причина, по которой на Cardano до сих пор не было атак с использованием флеш кредитов.

Почему на Cardano нет атак с использованием флеш кредитов?

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

Скрипты валидатора на Cardano используются для определения того, можно ли потратить UTxO. Они делают это, проверяя, выполняются ли определенные условия. Если условия не выполняются, транзакция не является валидной, и UTXO остается неизрасходованным.

Одной из других причин большей безопасности в Cardano является модель UTxO.

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

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

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

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

Модель UTxO в большей степени не зависит от состояния. Во время проверки транзакции скрипт имеет доступ только к UTXO, контексту транзакции, Datum и Redeemer. Скрипт не имеет возможности, например, взаимодействовать с другими UTXO в системе.

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

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

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

Можно ли как-то создать флеш кредит на Cardano?

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

Вывод

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

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

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