:RU: Понимание устойчивости Cardano к спам-транзакциям

Перевод статьи https://cexplorer.io/article/understanding-resilient-of-cardano-against-spam-transactions

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

Блокчейн сети часто перегружаются

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

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

Комиссия за транзакцию служит одной из мер по предотвращению рассылки спама. Например, комиссия за транзакцию в размере 0,1 доллара США была бы разумной при переводе денежных средств на сумму 1000 долларов США. Одновременное заполнение сети 1 миллионом транзакций обошлось бы в 100 000 долларов.

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

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

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

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

Cardano работает с фиксированной структурой комиссий за транзакции, где размер комиссии определяется в зависимости от размера транзакции в байтах. Например, за транзакцию в 200 байт взимается комиссия в размере 0,164 ADA каждый раз.

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

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

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

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

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

Почему масштабируемость является проблемой для блокчейна?

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

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

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

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

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

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

В архитектуре сервер-клиент, когда сеть становится перегруженной, можно использовать несколько стратегий для управления нагрузкой:

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

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

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

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

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

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

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

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

Однако имеет значение, защищает ли конкретная нода свои ресурсы автономно или это делается центральным органом.

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

Насколько Cardano устойчив к спаму?

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

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

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

b4e63996eb64d8a34c06b12b5f7dfe7e

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

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

После отправки новая транзакция передается от релейной ноды ноде-производителю блоков. Затем эта транзакция распространяется на все другие ноды-производители блоков, и это облегчается релейными нодами. Далее мы обсудим, как мини-протоколы Node-to-Node (NtN) используются для распространения транзакций.

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

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

dd7ef4c2a6fb75abbe84185320165f37

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

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

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

Протокол Node-to-Node (NtN) облегчает передачу транзакций между полными нодами через релейные ноды. NtN включает в себя три мини-протокола (синхронизация цепочки, выборка блоков и отправка транзакций), которые мультиплексируются по одному каналу TCP.

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

На приведенной ниже диаграмме вы можете наблюдать, как происходит распространение блоков между пулами с помощью мини-протоколов. Алиса отправляет транзакцию ноде 1 (обозначена красными стрелками). Нода 2, имеющая свободное пространство в своем мемпуле, начинает запрашивать транзакции из своего окружения. Нода 2 отправляет запрос ноде 1 и, таким образом, получает транзакцию Алисы (изображена синими стрелками с 1 по 6). Мгновение спустя нода 3 делает то же самое, отправляя запрос ноде 2 (синие стрелки с 7 по 12). Транзакция Алисы теперь присутствует во всех мемпулах.

7db72a50c24858fa9ec93042c88ffb67

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

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

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

Давайте рассмотрим, что происходит во время спам-атаки.

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

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

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

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

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

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

8ab3ed4a293e5cfacc9c7f69af65e41b

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

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

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

Если бы идентичные спам-транзакции присутствовали во всех мемпулах, все мемпулы были бы снова очищены в течение двух блоков.

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

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

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

Приблизительная стоимость спам-атаки

Давайте разберем цифры.

В мемпуле может быть размещено 600 стандартных транзакций. Исходя из текущей рыночной стоимости ADA, комиссия за транзакции составит 50 долларов США за заполнение одного мемпула.

При наличии 3100 нод, каждая из которых имеет мемпул, одновременное заполнение всех мемпулов уникальными транзакциями обойдется злоумышленнику примерно в 155 000 долларов. Для этого потребуется отправить 1,8 миллиона транзакций.

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

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

У злоумышленника есть возможность продлить атаку.

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

Вывод

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

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

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