October 23, 2022

Понимание L1 блокчейна Massa для новичков за 10 минут

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

Сегодня существует множество блокчейнов первого уровня. Основанных на разных алгоритмах консенсуса. Преследующих разные цели, будь то приватность или децентрализация. Зачем нам очередной L1 блокчейн Massa? А за тем, что он приносит нам революционную технологию Blockclique, позволяющую уже на старте достигать масштабируемости в 10000 TPS (транзакций в секунду), не жертвуя при этом децентрализацией.

Все дело в консенсусе

Забавно, но все современные топовые блокчейны крайне медленны. Bitcoin обрабатывает в среднем до 5 транзакций в секунду. И хоть для Ethereum этот показатель сейчас составляет 15–20 TPS, это все равно ничтожно мало для реального применения технологии. Ведь одна только VISA по разным оценкам выполняет в среднем порядка 2000 транзакций в секунду (с технологическим потолком значительно выше реального использования).

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

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

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

Чтобы вся сеть была синхронизирована и каждый узел хранил актуальную версию всех блоков, необходимо договориться о максимальном размере блока и частотой создания блоков. Для Bitcoin эти параметры составляют 1 Мб и 10 минут соответственно.

Очевидным путем повышения TPS является увеличение размера блока и/или увеличение частоты генерации блоков. По сути это просто цифры в конфигурации, ни кто не мешает указать там любые параметры. Например, просто выставив 10 Мб и 1 минуту мы получим уже х100 прироста TPS. Но почему так не делают?

Дилемма масштабируемости блокчейнов

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

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

Стоит заметить, что одним из выходов является жесткое ограничение количества участников сети. Понятно, что сеть из 10000 нод в целом сложнее синхронизируется, чем сеть из 20–30 очень быстрых нод. Но подобные искусственные ограничения подрывают основной принцип блокчейнов — децентрализацию и открытость. Смысл в блокчейне, если он закрыт и централизован? Блокчейн — это децентрализованная среда, создающая условия доверия, куда свободно может прийти каждый чтобы стать его равноправным участником. Все остальное — частные компании.

Изменения консенсуса для лучшего масштабирывания

Вдумчивый читатель мог заметить еще один очевидный путь увеличения TPS (помимо увеличения размера блоков и/или частоты их создания). Классический блокчейн это одна прямая, где каждый предыдущий блок ссылается на своего родителя: #1 <= #2 <= #3 <= …

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

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

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

Blockclique — решение Massa для масштабируемости

Massa решила использовать собственную архитектуру под названием Blockclique. Она основана на шардинге с блоками на многопоточном ориентированном ациклическом графе (Directed Acyclic Graph, DAG).

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

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

Благодаря архитектуре Blockclique производительность Massa достигает 10000 TPS уже при 32 потоках (данные при нагрузке на сеть схожую с текущей инфраструктурной нагрузкой Ethereum).

Хотите узнать подробней о Massa?

Присоединяйтесь к открытому тестнету Massa и проверьте новую технологию лично!