Примеры модульного исполнения (Часть 1)

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

Оригинальная публикация: The Case for Modular Execution (Part 1).

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

Примеры модульного исполнения

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

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

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

Модульные уровни исполнения имеют два основных преимущества перед монолитными аналогами:

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

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

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

Базовые принципы монолитного блокчейна: Вычисления и верификация

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

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

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

  • Производство блока (т.е. вычисление) - выполнение транзакций и применение отдельных переходов состояний для создания блока.

  • Валидация блока (т.е. верификация) - подтверждение того, что переходы состояний действительны.

Процесс вычисления и верификации в монолитных сетях

ПРИМЕЧАНИЕ*: Для упрощения понимания в этом разделе дается примерное объяснение того, как происходит производство и верификация блоков в монолитных блокчейнах. В действительности процесс более сложный и может отличаться в зависимости от конструкции конкретной сети. Однако многие из основных принципов остаются неизменными.*

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

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

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

Предположение о честном большинстве - ограничения для  масштабируемости

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

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

Модульное исполнение: Разделение вычислений и верификации

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

Что такое модульный уровень исполнения?

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

В Fuel, модульный уровень исполнения определяется как: верифицируемая вычислительная система, разработанная для модульного стека блокчейна. Если говорить более конкретно, технология блокчейна (или другая вычислительная система), способная проверять мошенничество или достоверность, которая использует модульный блокчейн для обеспечения доступности данных.

Уточним более подробно, вычислительные системы не являются модульными уровнями исполнения, если они: 1) не поддаются проверке на мошенничество или валидность, или 2) не переносят доступность данных на другой уровень.

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

Верификация - соблюдение честности между производителями блоков

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

Но как это работает? Как мы можем гарантировать безопасность, если мы позволяем производству блоков оставаться централизованным? Именно здесь в игру вступает модульность.

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

Особенность того, как эти полные ноды информируют о валидности или невалидности транзакций, зависит от того, использует ли модульный уровень исполнения optimistic-модель или модель zero-knowledge. В случае оптимистической модели MEL, полные ноды предпринимают действия (через доказательства мошенничества) только тогда, когда они обнаруживают невалидную транзакцию. И наоборот, в случае MEL с нулевым знанием полные ноды активно подтверждают действительность транзакций (с помощью доказательств действительности). В любом случае, достоверность или недостоверность всех транзакций, предоставленных производителем блока, подтверждается в родительской сети, а не на уровне модульного исполнения.

Пример: Доказательства мошенничества на оптимистических модульных уровнях исполнения

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

В зависимости от структуры конкретного модульного стека, это может быть решено несколькими способами, например:

В модульных стеках с уровнем регулирования:

  • Полная нода передает доказательства мошенничества специальному контракту разрешения споров на уровне урегулирования, который повторно проводит транзакцию напрямую (обратите внимание, что для этого транзакции MEL должны быть структурированы таким образом, чтобы их можно было детерминированно проверить на мошенничество на VM уровня урегулирования - например, FuelVM разработан таким образом, чтобы его можно было проверить на мошенничество в рамках EVM для обеспечения возможности урегулирования на Ethereum).

  • Если транзакция недействительна, производитель блока-нарушителя наказывается с помощью слэшинга (то есть теряет средства), "whistleblower" получает вознаграждение в виде части этих средств, а состояние сети возвращается к состоянию до недействительной транзакции. Поскольку нет гарантии, что транзакция, следующая за недействительной, соответствует действительному состоянию, эти последующие транзакции выполняются повторно.

В модульных стеках без уровня регулирования:

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

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

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

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

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

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

Как это позволяет обеспечить масштабируемость

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

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

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

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

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

Модульное исполнение: Потенциальные проблемы

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

Доступность данных

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

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

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

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

Легкие клиенты запрашивают части ("samples") блока у полных нод (источник: Vitalik Buterin)
Легкие клиенты запрашивают части ("samples") блока у полных нод (источник: Vitalik Buterin)

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

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

Дилемма верификатора

Еще одной потенциальной проблемой является феномен, называемый "дилеммой верификатора". Упрощенная версия выглядит следующим образом:

  • Если производители блоков знают, что полные ноды будут выявлять нечестную деятельность, они будут вести себя честно, чтобы не попасть под слэшинг.

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

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

В итоге получается круговая головоломка: чем более безопасным становится модульный уровень исполнения (т.е. чем меньше стимулов для производителя блоков вести себя нечестно), тем больше он стремится к более низкой безопасности (т.е. полные ноды больше не заинтересованы в проверке блоков). С другой стороны, чем меньше безопасность, тем больше она стремится к повышению.

Эта дилемма может быть решена несколькими способами (теоретико-игровой анализ этих факторов см. в этой обширной публикации):

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

  • Экономический интерес - существует множество субъектов, имеющих финансовые стимулы для запуска полных нод, которые выходят за рамки потенциального вознаграждения информаторов. Например, такие продукты и услуги, как block explorers, поставщики ликвидности или dApps, нуждаются в доступе к полному состоянию MEL для эффективного ведения своего бизнеса. Однако эти организации (теоретически) могут быть подкуплены злонамеренным производителем блоков.

  • Киты - субъекты с большим количеством активов на MEL могут выбрать запуск полной ноды, чтобы обеспечить защиту своих интересов и безопасность сети.

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

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

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

Новое пространство разработки: Выход за пределы EVM

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

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

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

В действительности модульный стек открывает гораздо более широкое пространство для разработки, устраняя необходимость для модульных уровней исполнения полагаться на неэффективный EVM. Fuel использует преимущества этого нового расширенного пространства проектирования для создания модульного уровня исполнения, который выходит за рамки EVM, оптимизируя для эффективных и масштабируемых вычислений, превосходного опыта разработчиков и максимальной безопасности.

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

Следите за нами

О нас

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

Станьте контрибьютором

Subscribe to Fuel Network | Russian
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.