Проблемы и ограничения производительности блокчейна

Проблемы и ограничения производительности блокчейна

Это блог компании Cryptor

Мы разрабатываем блокчейн-технологии для стартапов и бизнеса

Вы заметили, что когда мы говорим о производительности блокчейна, мы обычно называем приблизительные цифры? Откуда берутся 1000, 100 000 ТХ в секунду и другие круглые числа? Почему разработчики блокчейна не гордо заявляют о 4,617 tx/sec на своих сайтах после каждого обновления кода блокчейна?

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

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

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

Что такое время обработки транзакций?

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

Ниже приведена примерная последовательность шагов, на которые клиентское программное обеспечение тратит время:

  • Пользователь подготавливает и подписывает транзакцию
  • Пользователь отправляет транзакцию в сеть и ждет подтверждения принятия
  • Сеть реплицирует информацию между участниками сети
  • Некоторые участники генерируют новые блоки, включая пользовательскую транзакцию, и реплицируют новые блоки между участниками сети
  • Пользователь получает информацию о новом блоке со своей транзакцией из сети

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

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

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

Представьте себе, что мы разработали супер-блокчейн. Как мы можем определить его проблемы с производительностью и когда они могут возникнуть?

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

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

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

Одноранговая сеть

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

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

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

Этот этап довольно трудоемкий, особенно если узлы сети разбросаны по всему миру. Очень трудно измерить производительность сети, эмулируя большое количество состояний p2p-сети. Таким образом, для блокчейнов нет точного значения tx/sec.

Алгоритм консенсуса

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

Количество сообщений между узлами варьируется в разных блокчейнах. Например, в большинстве алгоритмов доказательства ставки требуется получить сообщения(«голоса») по крайней мере от 1/3 производителей блоков, чтобы принять данный блок и цепочку, на которой он построен. В случае возникновения сетевых проблем такие сети не успевают доставить сообщения всем участникам в разумные сроки. Иногда алгоритм требует дополнительных сообщений: добавить или удалить производителей блоков, возобновить работу после паузы в производстве блоков и т. д.

Оценивая производительность блокчейна в транзакциях в секунду, важно понимать, сколько времени тратится на сетевой консенсус, насколько он эффективен и может ли быть дополнительно оптимизирован. Блокчейн 100 tx/sec может демонстрировать более стабильное качество обслуживания, чем высокоскоростной блокчейн 1000 tx/sec с периодическими паузами во время реконфигурации сети или сложных транзакций. На данный момент максимум-несколько тысяч ТХ/сек. Но это только сейчас!

Вывод

В настоящее время блокчейны являются надежными сетями с устойчивыми к вредоносным транзакциям. Они медленнее своих централизованных аналогов — мы не можем говорить о миллионах транзакций в секунду. Если вы видите сообщения около миллиона ТХ/сек, спросите об архитектуре. Создатели сверхбыстрых «блокчейнов» часто немного отстают, так как миллионы tx/sec обычно означают подключение промежуточного ПО. По сути, такое программное обеспечение – это не что иное, как общий централизованный сервис, отвечающий таким скоростным требованиям. В большинстве случаев это решение L2 или решения, которые обещают собрать много параллельных цепей.

Будьте осторожны, когда вы читаете или оцениваете производительность блокчейна, поскольку это чрезвычайно сложный и спорный вопрос. Производительность современного блокчейна с более или менее стандартной схемой и консенсусом может достигать 1 000 — 10 000 tx/sec под нагрузкой в реальных проектах (Bitshares, Steemit, EOS, Ethereum, PoA Network), а не миллионы. Современные p2p-сети с несколькими десятками валидаторов могут распределять и обрабатывать максимум тысячи и десятки тысяч транзакций в секунду даже при достаточно быстрой сети. Все работает еще медленнее для большего числа участников. Скептически относитесь к обещаниям решить проблемы производительности, этот вопрос до сих пор не решен успешно, несмотря на работу большого количества команд. Однако есть много хороших подходов, и мы ждем рабочих решений в этой области исследований программного обеспечения.

Обзор подготовлен командой специалистов из компании Cryptor.

8 комментариев

Здравствуйте есть ли ограничения по транзакции в валюте?

В какой именно ?

Сколько можно за 1 раз перевести? Правда ли, что процесс не обратим?

Про какой блокчейн спрашиваете?