Наблюдение за управлением Ethereum: Процесс предварительной сборки EIP-2537

Автор: shew

Обзор

EIP-2537 — это предустановленная команда EVM, которая была определена для добавления в последнее обновление Pectra. Эта команда добавляет различные вычислительные функции кривой BLS12-381 для EVM, такие как вычисление пар на поле кривой и т.д.

EIP-2573 был впервые предложен в 2020 году и только в 2025 году был утвержден для включения в обновление Ethereum. В данной статье основное внимание уделяется истории управления EIP-2537 и исследуется, почему прошло 5 лет, прежде чем это предложение было включено в обновление.

Фон предложения

В январе 2017 года Виталик Бутерин впервые представил алгоритм парирования и кривую alt_bn128 на конференции Exploring Elliptic Curve Pairings. Затем, в феврале 2017 года, Виталик Бутерин и Кристиан Рейтвайсснер представили предложения EIP-196 и EIP-197, в которых предлагалось добавить поддержку вычислений с кривой alt_bn128 в EVM.

В обновлении Byzantium в октябре 2017 года была официально внедрена кривая alt_bn128. Проще говоря, alt_bn128 впервые реализовала вычисления пар над полем кривой внутри EVM, что позволяет выполнять проверку доказательств ZK-Snarks внутри EVM.

Но с развитием криптографии, в ноябре 2017 года команда разработчиков zcash впервые представила кривую BLS12-381 в работе BLS12-381: New zk-SNARK Elliptic Curve Construction. По сравнению с alt_bn128, BLS12-381 обладает более высокой безопасностью и лучшими характеристиками. Многие блокчейн-протоколы позже начали использовать кривую BLS12-381, отказываясь от кривой alt_bn128.

В мае 2018 года Джастин Дрейк опубликовал статью «Практическая агрегация подписей с BLS» на ethresear, в которой указал, что в будущих обновлениях PoS и шардирования Ethereum можно использовать алгоритм BLS мультиподписей, основанный на кривой BLS12-381. В то время исследователи Ethereum надеялись решить проблему уровня консенсуса с помощью EIP-1011, но схема EIP-1011 могла вмещать максимум 900 валидаторов, что установило огромный размер ставки в 1500 ETH для каждого валидатора. С появлением схемы BLS мультиподписей EIP-1011 ушла в историю. Как оказалось, поздние обновления ETH2 в конечном итоге тоже использовали кривую BLS12-381.

С развитием ETH2 начинается призыв к ETH-исполнительному слою, использующему BLS12-381. В феврале 2020 года некоторые исследователи предложили EIP-2537 и надеялись, что это предложение сможет быть протестировано на тестовой сети ETH2. Автор EIP-2537 Алекс Стокс в статье "Что eth2 нужно от eth1 в ближайшие шесть месяцев" призвал включить EIP-2537 в хардфорк Берлина.

Интересно, что автором EIP-2537 является также соучредитель Matter Labs, а самым известным продуктом Matter Labs является ZKSync.

Берлин волнения

Прежде чем перейти к последующему содержанию, нам необходимо сначала представить EIP-1962. EIP-1962 — это первое предложение о предварительной компиляции пар с эллиптическими кривыми, предложенное Matter Labs в апреле 2019 года. Это предложение поддерживает три кривые, а именно:

  • БЛС12 *МЛРД
  • MNT4/6 (Ate паринг)

Данный EIP готовит однократное добавление 10 предсобранных инструкций для обработки различных кривых. Однако после появления данного предложения довольно много разработчиков выразили сомнение в том, что предложение слишком сложное, чтобы разработчикам было легко его реализовать. В то же время, из-за высокой универсальности EIP1962, для инженеров смарт-контрактов вызов также является весьма неудобным. Конечно, как инициатор EIP-1962, Matter Labs фактически уже завершила разработку алгоритма эллиптической кривой и предоставила справочные реализации на Rust / Go / C++.

Для решения проблемы EIP-1962 Matter Labs в феврале 2020 года предложила несколько EIP, разделяющих EIP-1962, которые частично унаследовали интерфейс EIP-1962. Эти EIP включают:

  • EIP-2537 предоставляет поддержку BLS12-381
  • EIP-2539 поддерживает BLS12-377
  • PR#2541 предоставляет поддержку кривой BLS12-377 (Zexe ), но обратите внимание, что это предложение в конечном итоге не получило номер EIP и не может быть найдено в официальной документации EIP.

Внутри этих нескольких EIP наиболее важным является EIP-2537, так как уровень консенсуса также использует кривую BLS12-381. Основная цель EIP-1962 и EIP-2537 заключается в реализации проверки BLS-подписей на уровне консенсуса в основной сети. В то время ETH2 разрабатывал дизайн депозитного контракта для уровня консенсуса. В первоначальном дизайне депозитного контракта алгоритм проверки BLS не был включен в уровень исполнения, поэтому депозитный контракт не будет проверять подписи, конкретные BLS-подписи будут проверены уровнем консенсуса после депозита пользователя. Если будет обнаружено, что они неверны (для новых валидаторов), депозит не будет выполнен, и ETH, внесенный пользователем, будет потерян.

В этом контексте основные разработчики надеются внедрить предварительную компиляцию BLS12-381 для реализации проверки подписи внутри контракта на депозит, чтобы избежать возможных потерь средств ETH2 для пользователей. Это также было причиной, по которой тогда многие разработчики обращали внимание на EIP-1962 и EIP-2537.

Когда EIP-2537 только что был предложен, Виталик сразу же обнаружил ряд проблем, связанных с EIP:

Наблюдение за управлением Эфириума: процесс предварительной компиляции EIP-2537

Эти сомнения были сосредоточены на содержании документа EIP, после чего автор EIP ответил на них и обсудил. Затем, 6 марта 2020 года, на встрече Ethereum Core Devs Meeting #82 обсуждалась EIP-2537. На этой встрече Виталик считал, что EIP, такие как EIP-2537, очень эффективны для рекурсивных SNARK-доказательств и в долгосрочной перспективе не причинят ущерба Ethereum. Также на встрече была подтверждена приоритетность EIP-2537, все клиенты согласились как можно скорее реализовать EIP-2537 и планируют завершить все разработки до обновления Berlin.

Затем EIP-2537 стал задачей с высоким приоритетом. 20 марта 2020 года на встрече Ethereum Core Devs Meeting #83 EIP-2537 по-прежнему был первым обсуждаемым предложением. Эта встреча подтвердила, что EIP-2537 заменяет EIP-1962 и становится основным предложением BLS, а также включается в предварительный список EIP для обновления Berlin (, то есть Eligibility for Inclusion (EFI)).

На встрече разработчиков Ethereum Core Devs Meeting #84 в апреле 2020 года было официально включено EIP-2537 в обновление Berlin Hard Fork, и определены временные рамки для реализации в апреле и тестирования в мае - июне. Стоит отметить, что в ходе данного обсуждения EIP-2537 был обозначен как вопрос высшего приоритета.

Наблюдение за управлением Эфириумом: процесс предварительной компиляции EIP-2537

Затем EIP-2537 вступил в этапы широких разработок и тестирования, и на следующих почти 20 заседаниях основных разработчиков обсуждение EIP-2537 было в основном темой каждой встречи. Далее мы можем посмотреть, какие вопросы по EIP-2537 обсуждались на каждой встрече.

На встрече разработчиков Ethereum Core Devs Meeting #85 Danno и Axic обсудили проблемы кодирования ABI для EIP-2537. Затем основные разработчики синхронизировали текущее состояние реализации, в котором, поскольку инициаторы EIP-2537, Matter Labs, в значительной степени завершили реализацию версии на Rust, клиент Besu заявил, что он в основном реализовал функции EIP-2537, однако со стороны Geth заявили, что в настоящее время никто не работает над реализацией EIP-2537.

На встрече разработчиков Ethereum Core Devs Meeting #86 различные реализации узлов Ethereum снова синхронизировали состояние реализации EIP-2537, при этом Geth сообщил, что завершил часть работы, но еще предстоит выполнить много работы.

Наблюдение за управлением Ethereum: Предварительный процесс EIP-2537

На встрече разработчиков Ethereum Core Devs Meeting #87 основным содержанием обсуждения является реализация EIP-2537. Разработчики Geth сообщили, что в настоящее время существует PR на 16000 строк для реализации EIP-2537, однако разработчики Geth не могут подтвердить, является ли PR безопасной и эффективной реализацией EIP-2537, поэтому разработчики могут лишь использовать самый простой и грубый способ тестирования, чтобы оценить состояние кода.

Разработчик Geth сказал: "Поэтому моя интуитивная реакция заключается в том, что шансы на то, что Geth будет готов с операциями BLS-кривой к запуску основной сети в июле, равны нулю." Это означает, что Geth, скорее всего, не сможет завершить разработку, связанную с EIP-2537, в запланированные сроки для Берлина.

Хадсон Джеймсон предложил найти криптографа для помощи в PR-ревью Geth и предложил использовать тестовую сеть для проверки безопасности реализации EIP-2537. Поскольку в это время команда ETH2 также работает над верификацией BLS-подписей, команда ETH2 может участвовать в тестировании.

Здесь нам нужно дополнить некоторыми основами, что реализация PR EIP-2537 в Geth использует много ассемблерного кода для обеспечения эффективности, и эта часть ассемблерного кода очень трудна для чтения и понимания. Поэтому Алекс Власов предложил убрать сложную ассемблерную оптимизацию внутри PR, чтобы снизить трудность проверки.

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

В конце концов, на конференции было решено создать тестовую сеть YOLO, основной целью которой является тестирование EIP-2537. На самом деле, на этой конференции мы можем увидеть, что важность EIP-2537 значительно снизилась с завершением контракта на депозит, в то время как разработчики Geth уже считают, что этот EIP вряд ли сможет быть реализован до обновления Berlin. Похоже, что отказ Berlin от принятия EIP-2537 стал окончательным.

На встрече разработчиков Ethereum Core Devs Meeting #88 разработчики Geth обнаружили ряд проблем с реализацией PR EIP-2537, разработчики сообщили, что необходимо провести дальнейшее тестирование и исправление. В это время в системе Geth существует две реализации EIP-2537, одна из которых содержит оптимизацию на ассемблере, а другая полностью написана на языке go; один из разработчиков предложил напрямую использовать версию, написанную на языке go, чтобы снизить сложность проверки кода.

На встрече разработчиков Ethereum Core Devs Meeting #89 возникла более серьезная проблема, тестирование YOLO столкнулось с некоторыми трудностями, разработчики подозревают, что это связано с подписью BLS, однако разработчики EIP2537 опровергли это, считая, что проблемы с тестовой сетью не вызваны подписью BLS. Хорошая новость для EIP-2537 заключается в том, что контракт на депозит, основанный на EIP-2537, практически завершен, и он ожидает аудита контракта.

На встрече разработчиков Ethereum Core Devs Meeting #90内,这次会议锁定了 7 月份上线 Berlin 升级的 DDL。当然,这次会议另一个有趣的论点是客户端多样性问题,在此次会议中,开发者主要讨论了 Geth 占据主导地位的情况,并且有开发者提议冻结当前 EIP 实现来降低其他客户端的开发成本。更加有趣的是,在 #91 один из разработчиков предложил использовать модульный подход для снижения затрат на разработку и увеличения разнообразия клиентов. Если читателя интересует разнообразие клиентов Ethereum, он может ознакомиться с записями этих двух встреч.

На встрече разработчиков Ethereum Core Devs Meeting #92 EIP 2537 по-прежнему был подтвержден как необходимый для обновления Berlin.

На заседании разработчиков ядра Ethereum #96, на основе Celo были одновременно включены EIP-2537 и EIP-2539 в их сетевое жесткое обновление, поэтому Matter Labs надеется, что EIP-2539, предложенный одновременно с EIP-2537, также будет протестирован в тестовой сети YOLO v2 и войдет в обновление Berlin. Однако разработчики Geth выступают против, считая, что текущий EIP-2537 все еще не прошел полное тестирование внутри Geth. В конечном итоге на заседании было решено не добавлять 2696 в обновление Berlin, оставив это для будущих обсуждений.

На встрече разработчиков Ethereum Core Devs Meeting #99 было решено исключить EIP-2537 из тестовой сети YOLO v3 и обновления Berlin. Основная причина заключается в том, что EIP-2537 отнял слишком много времени у основных разработчиков, что привело к задержкам в разработке других EIP для обновления Berlin. Второстепенным фактором является то, что Фонд Ethereum предложил EVM384 в качестве замены EIP-2537, так как EVM 384 предлагает более универсальное решение для вычислений с эллиптическими кривыми. Однако основные разработчики выразили обеспокоенность по поводу вопросов безопасности во время обсуждения на встрече.

Вышеупомянутое содержание представляет собой раннюю историю EIP-2537. Мы можем видеть, что EIP-2537 в начале был одним из самых важных EIP в обновлении Berlin, но из-за проблем с реализацией в конечном итоге был отклонен. Наконец, в апреле 2021 года Ethereum завершил обновление Berlin. Основные EIP, такие как EIP-2565, включенные в обновление, не так сложны, и кажется, что обновление Berlin немного слабовато, потому что самый сложный EIP-2537 был исключен из обновления Berlin.

Наблюдение за управлением Ethereum: процесс предварительной компиляции EIP-2537

Последующее развитие

Как всем известно, каждое обновление Ethereum сопровождается основным предложением, например, обновление London после обновления Berlin ввело самое важное предложение по комиссиям в истории Ethereum EIP-1559. Для EIP-2537, который когда-то был основным предложением, дальнейшие обновления сложно интегрировать.

В обновлении Лондона после Берлина разработчики в issues#369曾考虑在 London 升级中增加 EIP-2537。在Ethereum Core Devs Meeting #109 синхронизировали текущее состояние разработки EIP-2537. В это время, из-за использования других библиотек для реализации EIP-2537, возникло обсуждение использования газа для EIP-2537. В то же время некоторые разработчики предложили заменить EIP-2537 на EVM384. Однако на встрече Ethereum Core Devs Meeting #111 в апреле 2021 года EIP-2537 был исключен из обновления Лондона из-за своей сложности. Основная сложность заключается в том, что стандартная реализация EIP-2537 заменила зависимые библиотеки, что может привести к изменениям в ценообразовании газа, и различным реализациям клиентов потребуется значительное время для повторной оценки потребления газа.

В июне 2021 года в issues#343 официально было предложено включить EIP-2537 в обновление Shanghai. Однако стоит отметить, что после обновления London фактически обновление Pairs, также известное как The Merge, заняло много времени разработчиков, и разработчикам уровня исполнения необходимо было написать много кода для реализации PoS обновления. В сентябре 2022 года обновление Pairs было завершено, и разработчики уровня исполнения наконец получили возможность продолжить обсуждение некоторых целей обновления Shanghai.

В ноябре 2022 года на встрече разработчиков Ethereum Core Devs Meeting #150 кратко обсуждалось включение EIP-2537 в обновление Shanghai, но разработчики решили отложить EIP-2537, так как основная цель обновления Shanghai – поддержка вывода PoS. В итоге EIP-2537 не был включен в обновление Shanghai, сосредоточенное на функции вывода.

Более печально то, что обновление Cancun до сих пор не обсуждало EIP-2537, поскольку основным моментом обновления Cancun является поддержка узлов исполнительного уровня EIP-4844. EIP-4844 предоставляет Blob для второго уровня Ethereum, чтобы упростить использование Ethereum в качестве уровня доступности данных для второго уровня.

Наконец, на встрече разработчиков Ethereum Core Devs Meeting #181 в феврале 2024 года разработчики обсудили включение EIP-2537 в обновление Pectra, и на тот момент разработчики считали, что реализация EIP-2537 больше не представляет проблемы, остались только некоторые вопросы в отношении ценообразования потребления газа.

На встрече разработчиков Ethereum Core Devs Meeting 19 декабря 2024 года #202内,Nethermind 开发者最终确定了 EIP-2537 的定价模型。是的,作为 EIP-2537 的最初提案者 Matter Labs 此时已经近乎退出了讨论。在随后的,2025 年 1 月的Ethereum Core Devs Meeting #203 разработчики обсуждали, в том числе, пересмотр цены на BLS предпрограммирование. Разработчик Geth Джаред Уазингер предложил увеличить стоимость газа на 20%, что получило поддержку команды Besu при бенчмаркинге.

Резюме

| Дата | Событие | | --- | --- | | Февраль 2020 года | Разделение EIP-1962 официально предложено EIP-2537 | | Апрель 2020 - Октябрь 2020 | На нескольких встречах разработчиков обсуждались проблемы реализации EIP-2537, и в конечном итоге из-за невозможности реализации он был исключен из обновления Berlin | | Март 2021 - Апрель 2021 | На встрече разработчиков обсуждалась проблема затрат на газ для EIP-2537, в конечном итоге из-за сложности было решено отказаться от этого в обновлении London | | Ноябрь 2022 года | На встрече разработчиков обсуждалось, стоит ли включать обновление Shanghai, безрезультатно | | Февраль 2024 года | Разработчики считают, что у EIP-2537 нет проблем с реализацией, однако существуют некоторые проблемы с затратами на газ, которые можно учесть в обновлении Pectra | | Декабрь 2024 - Январь 2025 | Обсуждение конкретной модели расчета затрат на конференции разработчиков, официальное решение проблемы затрат EIP-2537 |

Таким образом, включение EIP в обновление Ethereum "конечно же, зависит от самоотверженности, но также необходимо учитывать исторический процесс". Каждое обновление Ethereum имеет свою тему, как, например, EIP-2537, который однажды стал самым важным EIP обновления Berlin, но был отвергнут из-за сложности и трудности реализации. В последующем Ethereum вошел в исторический процесс PoS, сложные EIP чисто исполнительного уровня не получили внимания, в то время как множество EIP, связанных с PoS, рассматривались как основные цели обновления, что привело к тому, что EIP-2537 долгое время не принимался.

Посмотреть Оригинал
Содержание носит исключительно справочный характер и не является предложением или офертой. Консультации по инвестициям, налогообложению или юридическим вопросам не предоставляются. Более подробную информацию о рисках см. в разделе «Дисклеймер».
  • Награда
  • комментарий
  • Поделиться
комментарий
0/400
Нет комментариев
  • Закрепить