Сегодня развитие больших блокчейн-платформ сосредоточено на решении так называемой трилеммы блокчейна — поиске способов повысить масштабируемость (способность обрабатывать большое количество транзакций за как можно меньшее время) при сохранении высокого уровня децентрализации и безопасности сети.
Одним из главных трендов в этом направлении является шардинг — способность блокчейнов делиться на сегменты, в которых операции бы выполнялись параллельно. Прежде всего это относится к механизму консенсуса и подтверждению транзакций в блоках. Внедрение шардинга является одной из главных целей в дорожной карте Ethereum.
При этом модели шардировании там, где они уже используются, могут быть реализованы по-разному. В блоге Everscale опубликовали новую статью, в которой провели сравнительный анализ моделей шардинга в блокчейнах NEAR и Everscale.
Шардинг в NEAR Protocol
Механизм шардинга в протоколе NEAR называется Nightshade. Сейчас блокчейн разделен на четыре шарда (сегмента). В каждом из них работают свои пулы валидаторов и ноды. Активные валидаторы выбираются на определенный период времени, называемые эпохами, на основе таких критериев как размер стейка.
Смарт-контракты NEAR выполняются в виртуальной машине формата WASM и написаны на языке Rust. Экосистема проекта относительно небольшая, и самым крупным из приложений на Near является сеть Aurora, работающая на отдельной виртуальной машине на базе EVM (Ethereum Virtual Machine).
Как же работает шардинг в сети NEAR? Согласно параметрам Nightshade, все сегменты работают как единый блокчейн. Транзакции в блоке разбиты на части (chunks), по одной на каждый шард, и валидатор отвечает только за состояние сегмента, к которому он «приписан». Блок в сети NEAR содержит все транзакции всех шардов, и один блок меняет состояние во всех сегментах. Это значит, что каждая транзакция проходит подтверждение во всех шардах.
На практике к такой имплементации возникают вопросы. Если одна транзакции влияет на миллион адресов, как она будет подтверждаться? Как изменения, вызванные транзакций, фиксируются в первой части блока до того как достигнут последней? По правилам Nightshade, отдельная часть, привязанная к шарду, получает транзакцию после трех блоков. В то же время, в самом блоке стейт уже меняется. Но на какой отметке нужно считать изменения, на высоте исходного блока или уже измененного?
Таким образом, вопрос о том, что происходит, когда транзакция влияет на несколько частей блока, все еще нужно прояснить. Модель, выбранная в NEAR, работала бы хорошо, если бы все операции происходили параллельно, но как минимум в теории такая архитектура позволяет организовать искусственную «очередь» из неподтвержденных транзакций и замедлить сеть, или даже остановить ее на какое-то время.
Как устроено производство блоков в NEAR
C точки зрения генерации новых блоков в сети NEAR есть два типа участников — производители блоков (block producer) и производители «частей» (chunk producer). Конкретный состав участников меняется каждый блок в соответствии с заданным расписанием.
Группа производителей блоков может потенциально вступить в сговор и и совершить вредоносные действия. Если в результате злонамеренных действий появляется новый блок, в дело вступают специальные наблюдательные ноды — так называемые «рыбаки» (fisherman), который могут оспорить некорректный блок. Но тогда время ожидания между частями будет повышено, а финальность сети будет отложена.
Таким образом, вряд ли можно сказать, что в NEAR удалось решить трилемму блокчейна. Если злонамеренным валидаторам удастся включить в цепочку некорректный блок, до извлечения из сети он может повлиять на множество адресов, а такой «эффект бабочки», в свою очередь, может оказать негативное воздействие на все состояние блокчейна.
Архитектура блокчейна Everscale
Everscale представляет собой коллекцию блокчейнов: мастерчейн, отвечающий за общее состояние сети; воркчейны, то есть отдельные блокчейны; шарды (сегменты воркчейнов).
- Сейчас в блокчейне работает только один мастерчейн, который получает от воркчейнов подтверждения и выявляет некорректные блоки. Блоки мастерчейна содержат основные данные о состоянии. Строение протокола Everscale предполагает возможность ввести в работу дополнительные мастерчейны.
- Воркчейны — это автономные сети, предназначенные для выполнения различных операций в приложениях. Они могут кардинально отличаться между собой параметрами и правилами и даже иметь разные виртуальные машины.
- Шарды (потоки) — базовые элементы, своеобразные «мини-блокчейны». Несколько шардов формируют воркчейн.
Консенсус в Everscale достигается с помощью алгоритма SMFT — Soft Majority Fault Tolerance. Это разновидность механизма BFT («Византийская отказоустойчивость»). SMFT работает следующим образом: консенсус достигается уже при небольшом количестве одобрительных голосов со стороны участвующих валидаторов. Однако, если хотя бы один валидатор голосует отрицательно, порог для принятия решения повышается (в стандартном сценарии — до простого большинства, то есть до 51%).
Как шардинг работает в сети Everscale
Валидаторы в Everscale разделены на группы, которые выполняют разные наборы смарт-контрактов, разделенных адресами. Число валидаторов, как и воркчейнов, можно увеличивать линейно, если возникает необходимость выполнения большего количества действий — в сообществе Everscale эту концепцию называют «бесконечной масштабируемостью».
Каждый воркчейн способен вмещать до 256 шардов (потоков), выполняющих операции параллельно при полной синхронизации. Это число обусловлено производительностью глобальной сети в 1 Гбит. При увеличении этого значения число сегментов воркчейна можно увеличить еще в 10-20 раз.
Важно отметить, что каждый блок имеет индивидуальную группу подтверждающих валидаторов, всего же один воркчейн может вмещать до 4000 валидаторов.
В текущей, базовой конфигурации в сети Everscale работает один мастерчейн и один воркчейн, смарт-контракты выполняются в виртуальной машине TVM, написанной на Rust (ее код был создан с нуля после запуска проекта в 2020 году).
В перспективе разработчики Everscale планируют добавить EVM-совместимый воркчейн, а также воркчейны, предназначенные для хранения данных (драйвчейны).
Выводы
В NEAR используют оригинальный подход к организации шардинга. Впрочем, практическое использование блокчейна отличается от теоретического, и не все реальные сценарии учитываются в выбранной создателями проекта модели шардирования.
Между тем, во всем криптовалюты используют все больше, нагрузка на блокчейны растет. Соответственно, увеличивается спрос на решения с высокой масштабируемостью, где также соблюдаются принципы децентрализации и безопасности. Последнее особенно важно на фоне возросшего числа случаев масштабных хакерских атак, которые становятся все более изощренными.
Мы уверены, что Everscale вполне отвечает всем этим требованиям. Это доказывают и «полевые» тесты, проведенные в реальных условиях публичной сети: при участии 300 валидаторов и 10 одновременно работающих воркчейнах в Everscale удалось достичь пропускной способности в 63 000 транзакций в секунду.