Вс. Сен 15th, 2024

Специализация и параллелизация вычислений способствуют повышению эффективности и безопасности. Об этом в новом эссе написал сооснователь Ethereum Виталик Бутерин.

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

Согласно Бутерину, любые ресурсоемкие вычисления можно разделить на две части:

  1. Относительно небольшое количество сложной, но не требующей больших затрат бизнес-логики.
  2. Большое количество интенсивной, но высокоструктурированной «дорогой работы».

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

В EVM эти две формы выполнения обрабатываются по-разному. Сложная бизнес-логика пишется на языке более высокого уровня вроде Solidity, который компилируется в виртуальной машине.

«Дорогая работа» запускается опкодами EVM (SLOAD и т. д.), но свыше 99 % фактических вычислений производится в специализированных модулях непосредственно внутри клиентского кода (или даже библиотек).

По мнению Бутерина, все чаще встречается архитектура, которую он называет «клей и сопроцессор». В ней есть некий центральный компонент — «клей» — с высокой общностью, но низкой эффективностью, который отвечает за передачу данных между одним или несколькими компонентами сопроцессора. Последний обладает низкой общностью, но высокой эффективностью.

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

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

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

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

Продолжая повествование, Бутерин делает вывод, что «клей» следует оптимизировать для улучшения его свойств, равно как и сопроцессоры.

Соучредитель Ethereum убежден, что EVM не обязательно должны быть эффективными, они просто должны быть знакомыми. Вычисления в неэффективной VM можно улучшить за счет добавления нужных сопроцессоров («прекомпиляторов»). 

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

Бутерин считает лучшими способами улучшения виртуальной машины:

  • добавление оптимальных прекомпиляций или специализированных опкодов;
  • совершенствование компоновки хранилища.

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

  1. Увеличить эффективность специализации на стороне клиента, это улучшает способность выполнять чувствительные и требовательные к производительности вычисления локально на аппаратном обеспечении пользователя.
  1. Создают широкие возможности для того, чтобы стремление к эффективности не нарушало другие ценности, в первую очередь безопасность, открытость и простоту. Это несет пользу для криптографии, поскольку она олицетворяет «дорогие структурированные вычисления», которые ускоряются благодаря подобной тенденции. Последнее создает предпосылки для повышения безопасности и большего фокуса на оптимизации прекомпиляций и других функций, которые «живут» вместе с VM.
  1. Открывает возможность для участия небольших и новых игроков. Если вычисления становятся менее монолитными и более модульными, это значительно снижает барьер для входа. Даже имея ASIC для одного типа вычислений, можно добиться успеха. То же самое будет происходить и в областях ZKP и оптимизации EVM. Написание кода с эффективностью, близкой к «пограничной», становится намного проще и доступнее. Это облегчает его аудит и формальную верификацию.

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

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