:RU: Комиссия за транзакции и сетевая архитектура как защита от спама

Перевод статьи https://cexplorer.io/article/transaction-fees-and-network-architecture-as-spam-protection

В отличие от Bitcoin или Ethereum, которые работают на традиционном рынке комиссий, Cardano использует систему фиксированных и предсказуемых комиссий. Эти комиссии, хотя и не являются запредельными, установлены на уровне, который эффективно предотвращает спам-атаки. С другой стороны, чрезвычайно низкие комиссии за транзакции Solana - это палка о двух концах. Несмотря на то, что они делают транзакции доступными, они также приводят к высокому проценту сбоев - в настоящее время около 75% пользовательских транзакций не проходят. Сеть наводнена транзакциями, генерируемыми ботами.

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

Как сбалансировать инклюзивность и безопасность?

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

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

За транзакцию в 200 байт на Cardano комиссия всегда составляет ровно 0,164271 ADA - ни больше, ни меньше. Эта комиссия составляет примерно 0,1 доллара. По мере роста цены ADA будет увеличиваться и стоимость комиссии в долларах.

По сравнению с Bitcoin или Ethereum, которые используют традиционный рынок комиссий, где комиссии растут в зависимости от спроса в сети, эта комиссия низкая. В Ethereum комиссия может варьироваться от 1 до 100 долларов США (и более), даже если транзакция завершится неудачей.

Структура комиссий Solana состоит из двух частей: базовой комиссии и комиссии за приоритет. Базовая комиссия представляет собой фиксированную комиссию за транзакцию. В настоящее время базовая комиссия составляет 0,000005 SOL за подпись. Комиссия за приоритет - это необязательная дополнительная комиссия, которую пользователи могут внести, чтобы увеличить вероятность включения их транзакции в блок. Это особенно полезно для транзакций, требующих срочного решения.

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

В настоящее время стоимость транзакции на Solana колеблется от 0,00001 до 0,00003 SOL, что составляет приблизительно от 0,001 до 0,005 долларов. По сравнению с Cardano, тарифы Solana значительно ниже, примерно в 20-100 раз.

Хотя низкие тарифы привлекательны для пользователей и делают Solana инклюзивной сетью, они не защищают транзакции от спама. Боты могут отправлять тысячи транзакций в день всего за несколько долларов. Вот почему в настоящее время 75% пользовательских транзакций на Solana заканчиваются неудачей.

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

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

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

Блокчейн сеть должна быть общедоступной и не допускать дискриминации по отношению к своим пользователям. Она не требует каких-либо процедур “Знай своего клиента” (KYC). По сути, сеть не может подвергать транзакции цензуре.

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

Почему 75% пользовательских транзакций в Solana заканчиваются неудачей?

Чтобы транзакция была включена в блок и навсегда занесена в леджер, она должна пройти два базовых слоя: сетевой и консенсусный.

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

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

2b14b1922b59e9916485040e8532c7cd

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

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

Пользователи, пытающиеся использовать Solana, часто сталкиваются с тем, что их транзакции завершаются ошибкой. Затем им требуется повторно отправить транзакцию, что может потребовать многократных попыток. В первую очередь это связано с тем, что они конкурируют с транзакциями, генерируемыми ботами. В сети доминируют боты, которые работают быстрее и способны генерировать значительно больший объем транзакций, чем пользователи. Огромное количество транзакций, генерируемых ботами, связано с арбитражем. По оценкам, только 10% транзакций генерируются пользователями.

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

653a4b83fccde91faf76c74d813dd42f

Рассмотрим сценарий, в котором из 100 транзакций 10 принадлежат пользователям, а 90 - ботам. Если нода решит отменить 30% транзакций, возможно, что все пользовательские транзакции могут быть отменены в определенный момент времени. Если нода перегружена, она может решить отменить еще больше транзакций. Обычно это составляет 50% транзакций.

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

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

3151286c255fee4a962bcfd862f419db

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

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

39bc3ab5da9ed0c36c0c13dd00a04f56

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

Когда нода Solana отбрасывает транзакцию, комиссия за транзакцию не оплачивается. Это связано с тем, что комиссия за транзакцию взимается только в том случае, если транзакция успешно обработана и включена в блок. Если транзакция удаляется до того, как она достигнет консенсусного слоя, это будет выглядеть так, как если бы она никогда не была отправлена, и, следовательно, комиссия не взимается.

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

Расчеты

Ежедневно Solana обрабатывает около 25 миллионов пользовательских транзакций. Комиссии пользователей за эти транзакции варьируются от 25 000 до 100 000 долларов.

Подсчитано, что транзакции пользователей составляют около 10% от общего числа, а на долю ботов приходится до 90%. Это означает, что спамерам придется тратить около 50 000 долларов (250 SOL) в день на оплату транзакций.

Для сравнения, Ethereum ежедневно собирает около 400 ETH, что составляет примерно 1,5 миллиона долларов. Таким образом, рассылка спама Ethereum обойдется примерно в 30 раз дороже, чем рассылка спама Solana.

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

Необходимо понимать, что если бы Cardano мог обрабатывать такое же количество транзакций, что и Solana, и эта производительность может быть достигнута с помощью индоссантов входа, сеть получала бы комиссии примерно в размере 2,5 млн долларов США в день. Защита от спама была бы достаточной.

Один блок в блокчейне Cardano может вместить примерно 250-300 базовых транзакций. Если учитывать комиссию за транзакцию в размере 0,1 доллара США, Cardano получал бы доход в размере 25-30 долларов США за блок. Учитывая, что Cardano генерирует новый блок примерно каждые 20 секунд, это означает, что ежедневный объем составляет 4320 блоков. Если бы все эти блоки были заполнены исключительно действительными спам-транзакциями, пользователь, инициирующий атаку, нес бы ежедневные расходы, превышающие 100 000 долларов США в виде комиссий за транзакции.

Архитектура сети Solana

В предыдущей части статьи мы говорили о сетевом слое только с точки зрения ноды-валидатора. Это было несколько упрощено.

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

Давайте проследим жизненный цикл транзакции Solana. Транзакции Solana не объединяются в мемпул, как в других сетях. Вместо этого они должны отправляться напрямую в виде UDP-пакета лидеру протокола консенсуса. Таким образом, серверы RPC, которым известен график лидеров, отправляют транзакции непосредственно тем валидаторам, которые будут генерировать блоки в следующем раунде.

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

Проще говоря, валидаторы уязвимы для атак ботов через ограниченное число RPC-серверов. Это связано с тем, что все транзакции передаются последующим валидаторам через эти серверы. Когда объем спам-атаки превышает емкость группы блоков Solana, это приводит к перегрузке сети. В результате валидаторы начинают блокировать транзакции.

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

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

fb1538092ee29726984dae2381aaff68

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

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

Как Cardano защищен от нежелательных транзакций?

Помимо соответствующих комиссий за транзакции, децентрализация является наиболее эффективной защитой от спам-атак. Cardano, насчитывающий около 3000 пулов, является примером этого. Каждый пул, который является нодой, производящей блоки, обычно связан с 2-3 релейными нодами и таким образом защищен. Такое расположение предотвращает прямую сетевую связь с нодой, создающей блоки.

b4e63996eb64d8a34c06b12b5f7dfe7e

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

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

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

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

dd7ef4c2a6fb75abbe84185320165f37

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

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

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

e57ea74ff0cf9a12e159a8b8f069cb8d

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

Протокол Node-to-node (NtN) передает транзакции между полными нодами. NtN включает в себя три мини-протокола (chain-sync, block-fetch и tx-submitting), которые мультиплексируются по одному TCP-каналу.

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

Обратите внимание на разницу между Cardano и Solana. В случае Solana серверы RPC делегируют задачи валидаторам. Однако в Cardano каждая нода активно защищает свои ресурсы.

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

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

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

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

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

На рисунке вы можете видеть, что бот отправляет действительные спам-транзакции на ноду 1. Мемпул ноды 1 может быть заполнен действительными спам-транзакциями. Алиса и Боб отправляют действительные транзакции пользователей на ноду 3. У ноды 3 была свободное место в мемпуле, и она получила только одну действительную спам-транзакцию от ноды 2. Если бы нода 3 стала лидером в следующем слоте, большинство транзакций в блоке было бы от пользователей.

8ab3ed4a293e5cfacc9c7f69af65e41b

Когда бот отправляет транзакцию, она добавляется в мемпул, фактически резервируя ADA, которые использовались в качестве комиссии за транзакцию. Емкость мемпула Cardano в два раза превышает емкость блока и вмещает примерно 500-600 транзакций. Если бот попытается заполнить 100 мемпулов различными транзакциями, это приведет к общему количеству транзакций в 60 000 транзакций, что обойдется примерно в 6000 долларов США. Сеть может обработать такой объем транзакций в течение часа. Несмотря на это, сеть, вероятно, продолжит обрабатывать значительное количество пользовательских транзакций через ноды, на которые злоумышленник не нацеливался напрямую и которые содержат пользовательские транзакции в своем мемпуле. Однако некоторые транзакции могут быть получены от других нод, поэтому они могут быть действительными спам-транзакциями.

Вывод

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

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

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