translation
July 24, 2022

Представляем Massa

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

Для Massa мы разработали полностью новую архитектуру, которая называется Blockclique ("БлокКлик"), она позволяет достичь до 10,000 транзакций в секунду, не жертвуя ни децентрализацией, ни безопасностью. Наша архитектура построена на разделении транзакций в многопоточном блок графе. И в этой статье мы представим основные концепты технологии Blockclique. Вы также можете углубиться в технические документы или поучастсвовать в идущем тестнете на massa.net/testnet. Ждем вашей обратной связи!

Кратко:

  • Мы сочетаем разделение транзакций и архитектуру многопоточного блок графа, что дает нам выпуск блоков в параллельных процессах и совместимые транзакции;
  • Мы расширяем правило консенсуса Накамото, превнося в него параллельный выпуск блоков, что позволяет нам достичь безопасного и лецентрализованного консенсуса с использованием Proof-of-Stake ("Доказательства-стейка");
  • Архитектура Blockclique ("БлокКлик") может обрабатывать тысячи транзакций в секунду, наравне с традиционными финансовыми системами.

Проблема масштабируемости

Существующие блокчейны не масштабируемы. Чтобы стать настоящей алтернативой классическим финансовым системам, блокчейн должен поддерживать то же количество транзакций в секунду. На сегодняшний день Bitcoin обрабатывает 5 транзакций в секунду, Ethereum около 15–20 транзакций в секунду. Эти цифры очень далеки от показателей классических финансовых систем. К примеру, система VISA обработала 111 миллиардов транзакций за 2017 год (среднее значение в 3500 транзакций в секунду). Очевидно, блокчейны могут оченб легко быть перегружены как уже было продемонстрировано во время хайпа Cryptokitties.

Почему? Структура данных и правило консенсуса Накамото

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

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

Из-за задержки в трансляции блока, нода A еще не получила блок, выпущенный нодой C (синий блок) и создает свой блок (красный), у которого тот же родительский блок (желтый). В итоге получается форк.

Так как альтернативные цепочки могут содержать разные, несовместимые наборы транзакций, ноды должны прийти к согласованию и выбрать единственную верную цепочку, чтобы достичь консенсуса в исполненных транзакциях. Отточенный способ достижения консенсуса в децентрализованный сети — правило консенсуса Накамото. С точки зрения ноды, идея в том, чтобы оценить каждую цепочку блоков дерева блоков и дать ей скалярную пригодность, а новые блоки производить только продолжением цепочки наибольшей пригодности. Цепочка максимальной пригодности и называется “блокчейн”: только лишь транзакции, которые появляются в блоках блокчейна считаются исполненными.

Чтобы предотвратить Атаку Сивиллы, эта пригодность должна представлять собой что-то, что сложно создать или воспроизвести: ресурс. В системах Proof-of-Work ("Доказательства-выполнения-работы"), таких как Bitcoin, пригодность цепочки определяется как суммарная вычислительная мощность, которая была затрачена на создание всех ее блоков. В системах Proof-of-Stake ("Доказательства-стейка), таких как Tezos, пригодность определяется значением количеством монет отправленных в стейк за все предыдущие блоки в цепочке. Консенсус Накамото является самым широко используемым правилом консенсуса для децентрализованных блокчейнов, но были созданы и многие другие. Чтобы детальнее разобраться в механизмах консенсуса, мы рекомендуем вам начать здесь или здесь.

Правило консенсуса Накамото отлично справляется с поддержанием единственного верного блокчейна, при условии, что скорость образования форков не превышает допустимые значения. Небольшой размер блока, в который помещаются всего пара транзакций, и низкая их частота (1 МБ раз в 10 минут в среднем у Bitcoin) гарантируют, что в большинстве случаев, блок успеет дойти до всех нод в сети до того, как другой будет создан. Этим обеспечивается малое количество форков и консенсус достигается легко, но количество транзакций обработанных в секунду сильно ограничено.

Выжать максимум?

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

Если слишком сильно увеличить частоту выпуска блоков (скажем один блок размером 1 МБ в секунду), у блоков будет недостаточно времени на то, чтобы разойтись по сети и быстрее будет найден другой, "ложный" блок: ноды создают слишком много несовместимых блоков, что приводит к повышению количества форков и провалу консенсуса. Если, наоборот, значительно увеличить размер блока (скажем 1 ГБ), процесс трансляции блока становится слишком медленным, скорость образования форков так же растет и консенсус, логично, дает сбой.

Эта проблема изображена в видео ниже, в котором мы симулируем сценарии того, как ноды получают блоки при механизме Proof-of-Work.

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

Ограничить размер сети?

Одним из путей сокращения времени на трансляцию блока в сети является ограничение её размера. К примеру, как в EOS, только 21 избранный производитель блоков имеет право обрабатывать транзакции, что дает около 3000–4000 транзакций в секунду. В Ripple, одна лишь компания решает, кто может стать валидатором и производить блоки, что позволяет протоколу достигать около 1500 транзакций в секунду.

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

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

Изменить структуру данных и правила консенсуса?

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

Другое направление развития изучает переход от структуры дерева блоков к структуре графа блоков позволяя блокам иметь более одного родительского блока. Первые структуры ориентированного ациклического блочного графа описываются в [Lewenberg, 2015], [Sompolinsky, 2015] и [Sompolinsky, 2016]. Однако в этих решениях транзакции из одного блока могут быть несовместимы с транзакциями из другого параллельного блока, потому что транзакции сами по себе не разделены. Требуется дополнительный процесс голосования, чтобы сгруппировать транзакции и выбрать, какие из них будут исполнены.

Решение blockclique ("БлокКлик") использующееся в Massa

Blockclique — это новая архитектура комбинирующая разделение транзакций и многопоточный ориентированный ациклический блок граф. Он решает проблему масштабирвоания путем распараллеливания структуры данных и адаптацией правил консенсуса.

Структура данных в Blockclique и правило консенсуса

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

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

Комбинация разделения транзакций и DAG открывает уникальное свойство: ноды могут создавать параллельные блоки, транзакции в которых будут иметь совместимые конструкции.

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

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

Результаты симуляций

Мы тестировали наши идеи через симуляции, открытый код которых вы можете найти здесь. Используя параметры сети, подобные тем, что в Ethereum (средний объем отправляемых данных 32 Мб/с и средняя задержка в 100 мс, несколько тысяч нод), мы продемонстрировали, что, используя 32 параллельных потока и Proof-of-Stake устойчивый к Атаке Сивиллы механизм, наша архитектура может обрабатывать до 10,000 транзакций в секунду с средним временем подтверждения транзакции около 40с!

Эта разница объясняется следующим образом:

  • В обычных блокчейнах нодам нужен последний блок, чтобы начать работать над следующим (иначе они создадут форк);
  • В Blockclique необязательно наличие всех последних блоков, для того, чтобы начать работать над следующим. Ноды создают блоки в парарллельных потоках, не уходя в форк;
  • Архитектура Blockclique гарантирует последовательную согласованность прихода монет, при этом позволяя расходам быть немного рассинхронизированными.

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

Примите участие!

У нас проходит тетснет! На https://massa.net/testnet вы можете слежить за созданием блоков в режиме реального времени. В этом эксплорере вы также можете взаимодействовать с тестнетом путем создания кошелька и получением или отправкой монет. Если у вас есть компъютер с устойчивым соединением интернет, предлагаем вам поставить ноду! Также можете следить за развитием проекта на нашем Github.

Выводы

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

Мы верим в то, что Massa может воплотить все идеалы масштабируемого, безопасного и полностью децентрализованного блокчейна. Мы надеемся, что вы так же приятно взволнованны как и мы и мы с нетерпением ждем вашей обратной связи! Будем очень рады, если вы присоединитесь к нашим Telegram, Discord или Reddit и поделитесь своими мыслями!

Полезные ссылки

С более чем 5000 тысячами активных нод в последнем эпизоде нашего тестнет Massa уже является одной из самых децентрализованных сетей.