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

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

Написано: shew

Обзор

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

EIP-2573 был впервые предложен в 2020 году и был подтвержден для включения в обновление Ethereum только в 2025 году. В данной статье подробно рассматривается история управления 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 multi-sign на основе кривой BLS12-381. В то время исследователи Ethereum надеялись решить проблемы уровня консенсуса с помощью EIP-1011, однако предложение EIP-1011 могло вместить максимум 900 валидаторов, что установило огромный размер залога в 1500 ETH для каждого валидатора. С появлением схемы BLS multi-sign EIP-1011 ушел на историческую сцену. Как оказалось, поздние обновления ETH2 в конечном итоге также использовали кривую BLS12-381.

С развитием ETH2, используемый в ETH2 BLS12-381 начал призывать к введению уровня выполнения ETH. В феврале 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 предсобранных инструкций для обработки различных кривых. Однако после появления этого предложения довольно много разработчиков усомнились, что предложение слишком сложно для реализации разработчиками. В то же время, из-за высокой универсальности EIP-1962, вызов также является весьма проблематичным для инженеров смарт-контрактов. Конечно, как инициатор 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 curve), но обратите внимание, что это предложение в конечном итоге не получило номер 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, на что автор EIP ответил и обсудил. Затем, 6 марта 2020 года, на встрече Ethereum Core Devs Meeting #82 разработчики Ethereum обсудили EIP-2537. На этой встрече Виталик высказал мнение, что EIP-2537 и подобные EIP очень эффективны для рекурсивных SNARK-доказательств и в долгосрочной перспективе не нанесут ущерба Ethereum. Кроме того, на встрече была подтверждена приоритетность EIP-2537, и все клиенты согласились как можно скорее реализовать EIP-2537, планируя завершить все разработки до обновления Berlin.

Впоследствии EIP-2537 стал более приоритетным. 20 марта 2020 года на Ethereum Core Devs Meeting #83 EIP-2537 все еще был первым предложением, которое обсуждалось. На совещании было подтверждено, что EIP-2537 заменил EIP-1962 в качестве основного предложения BLS и стал предварительно отобранным списком EIP для ( обновления Берлина, т.е. (EFI)) «Право на включение».

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

!

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

На заседании Ethereum Core Devs Meeting #85 Дanno и 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 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. Похоже, что отказ от принятия EIP-2537 в обновлении Berlin стал уже фактом.

На встрече разработчиков 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 Core Devs Meeting #96 было решено, что на основе Celo EIP-2537 и EIP-2539 будут одновременно включены в его сетевой хардфорк. Поэтому Matter Labs希望 также протестировать EIP-2539 на тестовой сети YOLO v2 и включить его в обновление Berlin, которое было предложено одновременно с EIP-2537. Однако разработчики 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 в Берлине в первые дни, но в конечном итоге был отменен из-за проблем с реализацией. Наконец, в апреле 2021 года Ethereum завершил обновление Berlin, и фактические реализации, такие как EIP-2565, включенные в ядро обновления, не сложны, и кажется, что обновление Berlin немного тонкое, потому что самый сложный EIP-2537 был выброшен из обновления Berlin.

!

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

Как известно, каждое обновление Ethereum сопровождается основным предложением, например, обновление London после обновления Berlin ввело самое важное предложение по комиссиям в истории Ethereum - EIP-1559. Что касается EIP-2537, который когда-то был основным предложением, то в последующих обновлениях было сложно включить это предложение.

В обновлении London после Berlin разработчики в 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 был исключен из обновления London из-за своей сложности. Основная сложность заключалась в том, что стандартная реализация 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 уже не является проблемой, только некоторые вопросы касаются ценообразования на Gas.

На встрече 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 в бенчмаркинге.

Резюме

!

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

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