Дисклеймер: Данная публикация является переводом, выполненным участником сообщества Fuel. Была проведена вычитка, но возможны некоторые ошибки. Fuel Labs не несет ответственности за точность, актуальность или последовательность переведенной информации.
Оригинальная публикация: The Case for Modular Execution (Part 2).
Как модульные уровни исполнения могут достичь масштабируемости за счет эффективной оптимизации вычислений.
Модульная архитектура обеспечит масштабирование блокчейнов в разы. Являясь основной частью модульного стека, уровни исполнения находятся на стадии стремительных инноваций.
Fuel создает самый быстрый уровень исполнения для модульного стека блокчейна. В первой части мы рассмотрели, как модульные уровни исполнения обеспечивают масштабируемость за счет разделения вычислений и проверки.
Мы также упомянули второе основное преимущество, которое позволяет модульным уровням исполнения масштабироваться на порядки больше, чем их монолитным аналогам:
Монолитные сети привязаны к неэффективным технологиям, когда речь идет о скорости и разнообразии вычислений, которые они могут поддерживать. С другой стороны, модульные уровни исполнения могут быть специально разработаны для эффективной оптимизации вычислений.
В этой статье мы рассмотрим второе основное преимущество, уделив особое внимание тому, как Fuel революционно меняет способ обработки вычислений в блокчейне.
Монолитные сети ограничены неэффективными технологиями, когда речь идет о скорости и многообразии вычислений, которые они могут обеспечить.
Когда блокчейн только зарождался, предполагалось одно единственное применение: цифровые деньги. Блокчейн Bitcoin был разработан с целью оптимизации для этого единого случая применения.
Вскоре после запуска Bitcoin люди начали осознавать потенциал технологии блокчейн для использования не только в сфере финансов. Нарратив быстро сменился с "распределенной бухгалтерской книги" на "распределенный компьютер". Сообщество Bitcoin попыталось поддержать этот вариант использования с помощью colored coins, но стало ясно, что он недостаточно универсален, чтобы действительно поддерживать распределенные вычисления без доверия; он был замкнут на своем первоначальном варианте использования. Требовалась новая архитектура.
Осознав эту проблему, создатели Ethereum решили построить блокчейн, который мог бы поддерживать распределенную виртуальную машину, полную по Тьюрингу: Ethereum Virtual Machine (EVM). С запуском Ethereum в 2015 году блокчейн стал поддерживать произвольные вычисления в среде, не требующей доверия. Теперь любой мог создать и запустить компьютерную программу (смарт-контракт) и обеспечить ее выполнение на распределенном компьютере.
Ethereum был задуман спустя менее чем полдесятка лет после появления концепции блокчейн. За 7 лет с момента запуска Ethereum были изобретены новые концепции, которые представляют собой еще больший скачок вперед, чем тот прогресс, которого добился Ethereum по сравнению с Bitcoin. Но, как и Bitcoin, блокчейн Ethereum в основном ограничен основной архитектурой, с которой он был запущен.
На каждое усовершенствование, внесенное в блокчейн Ethereum и EVM за прошедшие годы, приходится множество потенциальных нововведений, которые не могут быть реализованы из-за необходимости поддерживать обратную совместимость.
В результате блокчейн-сообщество продолжает инвестирование, разработку и запуск новых блокчейнов каждый раз, когда появляется новая инновация. Бесчисленное количество новых блокчейнов первого уровня было запущено, чтобы итеративно развивать концепцию распределенных вычислений без доверия, но все они сталкиваются с одной и той же проблемой: трудно (а зачастую и невозможно) модернизировать блокчейн для поддержки новых функций и улучшений.
И так продолжается цикл, в котором мы продолжаем видеть, как новые блокчейны запускаются с частичными улучшениями по сравнению с их предшественниками. В результате мы получаем экосистему, состоящую в основном из несовместимых блокчейнов, с постоянно увеличивающейся фрагментацией ликвидности, финансирования, пользовательского опыта и разделения разработчиков. Тем временем энергия, которая могла бы быть потрачена на настоящие инновации, вместо этого направляется на привлечение внимания инвесторов, разработчиков и пользователей.
Конкуренция является полезной и необходимой для развития экосистемы. Но эта конкуренция происходит не на том уровне.
Модульная парадигма блокчейна обещает решить эту проблему. Поскольку каждый слой модульного стека независим от других, инновации могут происходить на одном уровне без полной переработки всего стека. Уровни исполнения могут быть конкурентоспособными по выполнению. Уровни доступности данных могут быть конкурентоспособными по обеспечению доступности данных. Каждый слой может оптимизироваться по своему назначению без нарушения обратной совместимости.
Совместные уровни регулирования обеспечивают объединение ликвидности в одном месте, что позволяет создавать новые уровни исполнения без фрагментации ликвидности и дополнительных сложностей для пользователей. Встроенная функция минимизации доверия означает, что сообщество может сократить ресурсы, затрачиваемые на обеспечение совместимости, и вместо этого сосредоточиться на изучении значимых инноваций.
С появлением модульного стека мы сможем уйти от разобщенной экосистемы L1, конкурирующих по тщеславным показателям, и перейти к более целостному, совместимому и модернизируемому стеку.
Несмотря на появление большого количества блокчейнов первого уровня, обещающих улучшения по сравнению с первоначальным дизайном EVM, его первенство позволило EVM закрепиться в качестве основной среды выполнения в экосистеме блокчейна. Разработка смарт-контрактов стала синонимом Solidity (языка программирования EVM), который захватил большинство потенциальных разработчиков блокчейна. Вследствие этого большинство разрабатываемых в настоящее время уровней исполнения представляют собой роллапы на базе EVM.
Для этого есть веская причина: использование EVM позволяет разработчикам получить доступ к рынку существующих приложений, написанных на Solidity, а также к большой группе пользователей, которые уже знакомы с этими приложениями. EVM - отличный инструмент для зарождения новой экосистемы, поскольку он уже имеет значительную долю рынка разработчиков.
Однако, как мы уже отмечали, необходимость поддерживать обратную совместимость означает, что EVM не может внедрять многие инновации. Кроме того, основной дизайн EVM оптимизирован для монолитной сети, а не для модульного стека.
Некоторые ограничения EVM включают в себя:
Последовательное выполнение - EVM не поддерживает параллельное выполнение транзакций, что делает его гораздо менее эффективным с вычислительной точки зрения, чем другие конструкции виртуальных машин.
Доказательства мошенничества - модель Ethereum, основанная на счетах, означает, что генерирование и выполнение доказательств мошенничества в сетях EVM является чрезвычайно дорогостоящим и неэффективным, что делает его неоптимальным для модульных уровней исполнения.
Solidity - самый популярный язык программирования для EVM, Solidity, печально известен тем, что обеспечивает плохой опыт разработчиков и разработан таким образом, что на нем трудно писать безопасные смарт-контракты.
Появление концепции модульности означает, что уровни исполнения могут использовать ликвидность и безопасность Ethereum, не ограничиваясь при этом пределами EVM.
Благодаря использованию новых и улучшенных принципов разработки виртуальных машин, модульные уровни исполнения могут специально оптимизироваться для эффективных и масштабируемых вычислений, превосходного опыта разработчиков и максимальной безопасности.
Fuel использует преимущества новой области разработки для создания самого быстрого модульного уровня исполнения.
Одним из основных нововведений Fuel является совершенно новая виртуальная машина FuelVM. Появление уровней исполнения, построенных на Ethereum, дает новую возможность усовершенствовать прежние конструкции виртуальных машин, не ограничиваясь необходимостью обратной совместимости.
Медленное выполнение транзакций EVM могло быть достаточным в до модульном мире, где пропускная способность была основным узким местом, но улучшения, внесенные в новый модульный стек (включая L1 Ethereum), означают, что пропускная способность вычислений становится основным ограничением, когда дело доходит до масштабирования.
В преддверии этой новой парадигмы FuelVM разработана для оптимизации быстрого выполнения транзакций. Используя опыт EVM, Solana, WASM, Bitcoin и Cosmos, FuelVM призван уменьшить бесполезную обработку традиционных архитектур виртуальных машин блокчейна, одновременно значительно увеличивая пространство для разработчиков.
В FuelVM реализовано множество инноваций, которые были предложены и поддержаны сообществом EVM, но не могли быть реализованы из-за необходимости поддерживать обратную совместимость. Ниже приведены лишь несколько примеров (полный список см. здесь).
Протокол Fuel был разработан с ориентацией на опыт разработчиков. FuelVM был создан вместе с сопутствующим языком Sway: доменно-специфическим языком на основе Rust, разработанным специально для использования в виртуальной машине блокчейна. В отличие от Solidity, который был разработан после создания EVM, Sway был создан с нуля, чтобы иметь встроенные удобные и эффективные операционные функции. Основывая Sway на Rust, Fuel делает разработку смарт-контрактов более безопасной и производительной благодаря использованию сильного статического анализа и обратной связи с компилятором.
С точки зрения инструментария, Fuel улучшает экосистему EVM с помощью набора инструментов Forc. С помощью Forc разработчики могут получить все необходимое для начала создания приложений Sway для виртуальной машины Fuel с единой системой инструментов. Fuel использует курируемый, "batteries-included", но модульный подход к предоставлению инструментария, с полным, стандартизированным, каноническим набором инструментов, который охватывает не только нижние уровни стека (такие как реализация протоколов и VM), но и верхние уровни (такие как управление пакетами, поддержка редакторов, плагины общего пользования и многое другое).
Среда для разработчиков Fuel сохраняет преимущества языков смарт-контрактов, таких как Solidity, в то же время принимая парадигмы, представленные в экосистеме инструментов Rust, что делает кривую обучения для Sway легко управляемой для всех ступеней квалификации разработчиков.
Возможность параллельного выполнения транзакций является весьма важным преимуществом, особенно по мере того, как современные процессоры становятся все более многопоточными. Поэтому при разработке протокола Fuel это было одним из основных соображений.
Параллельное выполнение транзакций требует возможности определения и обработки взаимосвязей между транзакциями. Чтобы избежать дублирования при обработке транзакций на отдельных ядрах, общее состояние, которое может быть затронуто каждой транзакцией, должно быть определено заранее (с помощью "списков доступа"), поэтому транзакции могут быть разбиты на наборы, которые не имеют возможных взаимодействий друг с другом.
Из-за ограничений, связанных с дизайном, основанным на учетной записи, Ethereum не может поддерживать эти списки доступа, поэтому вынужден обрабатывать транзакции последовательно (т.е. одну за другой). В EIP-648 было предложено добавить списки доступа в Ethereum, но это так и не было реализовано из-за других неэффективностей, которые это принесло бы.
Учитывая это ограничение, Fuel внедрила строгие списки доступа к состоянию в виде модели UTXO, что дает ей возможность использовать несколько потоков и ядер процессора, которые обычно не задействованы в однопоточных блокчейнах. В результате Fuel может выполнять транзакции параллельно, обеспечивая гораздо больше вычислений, доступа к состоянию и пропускной способности транзакций, чем его однопоточные аналоги.
Помимо оптимизации эффективности, возможность параллельной обработки нескольких транзакций позволяет повысить безопасность, так как позволяет увеличить пропускную способность транзакций без сопоставимого увеличения потребности в ресурсах для проверки этих транзакций. Это снижает барьер для запуска полной ноды, что ведет к созданию более децентрализованной сети верификаторов.
Доказательства мошенничества являются основной технологией в модульном блокчейн-стеке. В первой части мы рассмотрели, как модульные уровни исполнения могут использовать доказательства мошенничества для обеспечения минимального доверия легким клиентам, что позволяет обеспечить безопасность в предположении, что доступен только одна честная полная нода.
С минимизированными по доверию легкими клиентами и общими уровнями регулирования и доступности данных можно построить минимизированные по доверию мосты между модульными уровнями исполнения, чего невозможно достичь между L1. Это позволяет экспериментировать и внедрять новые конструкции блокчейна без фрагментации безопасности и ликвидности.
Благодаря преимуществам, которые дает доказательство мошенничества, Fuel был разработан и создан специально для того, чтобы обеспечить доказательство мошенничества недорогим и эффективным способом.
В то время как модель Ethereum, основанная на счетах, означает, что затраты на создание доказательств мошенничества для нее не ограничены, Fuel оптимизирует доказательства мошенничества за счет использования модели UTXO. Доказательства мошенничества UTXO достигают эффективности за счет простого требования, чтобы каждая трата UTXO "указывала" на создание UTXO, без необходимости обращаться к глобальному дереву состояний. Доказательство того, что либо а) указатель недействителен, либо б) то, на что указывается, не соответствует тому, что тратится, достаточно для полного доказательства мошенничества.
Дополнительным преимуществом является то, что набор инструкций FuelVM разработан таким образом, чтобы обеспечить защиту от мошенничества в EVM. Это означает, что Fuel может использовать Ethereum в качестве уровня регулирования, используя его высокую ликвидность и широкую пользовательскую базу, не будучи ограниченным рамками EVM.
Помимо вышеперечисленных пунктов, Fuel реализовал ряд других улучшений, включая:
Поддержка множества нативных активов
Абстракция и предикаты нативных счетов
Многоаспектное ценообразование ресурсов
Децентрализация секвенсоров
Объяснение этих улучшений не входит в рамки данной статьи, но Blockchain Capital предлагает отличное глубокое погружение в эти дополнительные преимущества.
Монолитная парадигма приводит к созданию экосистемы несовместимых L1, конкурирующих по поверхностным показателям, фрагментации ликвидности, финансирования и разделения разработчиков. Fuel придерживается принципа, что инновации не требуют запуска нового L1, а могут происходить на уровне исполнения.
Модульная архитектура позволяет MEL, таким как Fuel, сосредоточиться на эффективных вычислениях, не беспокоясь об обратной совместимости. Более быстрые вычисления не только ведут к повышению пропускной способности, но и повышают эффективность работы валидаторов, улучшая децентрализацию. Это позволяет Fuel внести свой вклад в масштабируемость Ethereum, не будучи ограниченным неэффективностью EVM.
Уровни исполнения, использующие EVM, могут воспользоваться существующей экосистемой приложений Solidity и разработчиков, но не могут максимально использовать пространство разработки, предлагаемое модульным стеком. Fuel реализует это новое пространство для разработки с помощью FuelVM, разработанной с нуля для защиты от мошенничества и обеспечения наилучших возможностей для разработчиков.
Fuel внедряет инновации, оптимизированные для стремительно приближающегося модульного будущего, что позволяет создать новое поколение блокчейнов, которые выходят за рамки монолитности.
Fuel – это самый быстрый уровень исполнения для модульного стека блокчейна. Технология, отличающаяся мощностью и изяществом, обеспечивает параллельное выполнение транзакций, предоставляя разработчикам высочайшую гибкую пропускную способность и максимальную безопасность, необходимую для масштабируемости. Разработчики предпочитают FuelVM за превосходный опыт разработки и возможность выйти за пределы ограничений EVM.