В последние несколько недель я не делился многими обновлениями о @ethrex_client, нашем @class_lambda @ethereum L1 клиенте выполнения и ZK L2 стеке. Пожалуйста, следите за @ethrex_client, чтобы узнать больше обо всем, что мы делаем. В L1 мы уже успешно запускаем тестовые сети Ethereum, а в L2 мы запускаем тестовые сети для приложений идентификации и DeFi, которые мы создаем для и с партнерами. Я искренне верю, что мы близки к тому, чтобы иметь самый простой код и стек для поддержки, обновления и модификации в Ethereum. Мы не смогли бы достичь этой точки без проверки кода @NethermindEth и @go_ethereum. С моими партнерами @rj_aligned, @fran_aligned из @alignedlayer и @SantiDiPaolo, @AguuMg из @PolFinance_ мы собираемся выпустить один из первых белых книг о RWA L2, который будет поддерживаться Ethrex и @alignedlayer. У нас есть много других, но я особенно взволнован этим, так как он свяжет очень интересный случай использования из TradFi и DeFi. У нас в качестве советников и партнеров некоторые из самых сильных команд в отрасли. Я с нетерпением жду возможности поделиться больше информацией об этом проекте. Обновления L1 Мы работали на многих фронтах. Мы улучшили наблюдаемость с помощью Grafana, удалили неиспользуемые функции, чтобы упростить код и добавили поддержку для `engine_getBlobsV1` конечной точки. Changelog: feat(l1): `engine_getBlobsV1` конечная точка запроса (#3636) chore(l1): удалить поддержку redb (#4103) refactor(l1): удалить ненужные usizes из blockchain crate (#4110) fix(l1): удалить ненужное клонирование состояния (#4117) fix(l1): использовать правильный образ docker для запуска локальных сетей. (#4131) chore(l1): добавить время блока на график Grafana. (#4112) fix(l1): вычесть время чтения БД из выполнения блока. (#4051) chore(l1): улучшения метрик. (#4118) chore(levm): улучшить организацию нового тестового запуска levm (#3958) L2 В соответствии с нашим минималистским подходом мы удалили значительное количество кода из неиспользуемых L2 баз данных. Мы продолжаем упрощать код и устранять мертвый код. Кроме того, CI был стабилизирован после исправления ошибки, связанной с ценами на газ. Мы проводим бенчмаркинг L2 по двум направлениям: - Стоимость обслуживания сети L2: Мы настраиваем параметры L2, моделируя различные сценарии с различными рабочими нагрузками транзакций и конфигурациями сети. Цель состоит в том, чтобы определить приблизительную стоимость комиссии за обслуживание на транзакцию, которую пользователи должны нести, чтобы сеть достигла самодостаточности. - Бенчмарки генерации изолированных доказательств выполнения блока: Используя инструмент ethrex-replay, мы доказываем блоки из Hoodi, Sepolia и Mainnet, чтобы выявить потенциальные ошибки в коде и измерить производительность нашего провайдера. Сторона ethrex-replay, инструмент достаточно стабилен, и у нас есть инфраструктура, настроенная для периодического воспроизведения выполнения блоков и доказательств публичных сетей. Мы сейчас занимаемся исправлением ошибок, которые возникли во время этих запусков. Некоторые ошибки возникли из-за логических ошибок в ethrex, в то время как другие связаны с использованием памяти. Первые в основном решены, и мы добиваемся значительного прогресса по последним. Мы также начали рассматривать @ziskvm и @0xLita ZKVM для потенциальной краткосрочной интеграции. Мы уже поддерживаем @RiscZero и @SuccinctLabs. На этой неделе мы объединили PR, который стабилизирует ethrex-replay, что позволяет нам выявить и устранить две ошибки в ethrex. Эти исправления также были объединены. Первая ошибка касалась крайнего случая в нашем ecrecover precompile, где конкретный ввод вызывал сбой выполнения из-за несоответствия газа. После тщательного расследования мы проследили проблему до официальной библиотеки secp256k1 с патчем SP1. Мы решили ее, перейдя на библиотеку k256 с патчем SP1. Вторая ошибка возникла из-за неправильного предположения о длине бита типа usize в части кодовой базы. Чтобы предотвратить подобные проблемы, мы провели всесторонний обзор кодовой базы и представили несколько PR, чтобы ограничить использование usize двумя конкретными случаями: индексированием и сценариями, ограниченными API или библиотекой. Кроме того, мы добавляем поддержку для запуска тестовых наборов EF, включая тесты блокчейна и состояния, с SP1, чтобы улучшить наше покрытие тестами и обеспечить надежность в различных сценариях выполнения. С этими исправлениями ошибки больше не возникают. Мы успешно воспроизводим новые блоки Hoodi и Sepolia, а выполнение блоков Mainnet значительно улучшилось, с уровнем успеха выполнения SP1, увеличившимся с 1/10 до 6/10. Этот прогресс открывает путь для решения наших оставшихся проблем с недавними воспроизведениями блоков: ошибки недостатка памяти во время выполнения блока в SP1 zkVM и проблемы с производительностью в выполнении и доказательстве. Чтобы решить эти проблемы, мы настроили crate инструмента для профилирования памяти с использованием crate Jemalloc. Мы также работаем над поддержкой воспроизведения исторических блоков. MVP для этой функции находится в черновом PR и хорошо работает с клиентами ethrex, reth и geth, но сталкивается с проблемами с клиентами nethermind. Прежде чем выпустить первую версию, мы стремимся оптимизировать RPC-запросы, чтобы обеспечить точные загрузки данных блоков, даже при использовании бесплатных RPC-поставщиков, для большинства блоков. Улучшения DevEx: - Мы исправили наши бинарные сборки, чтобы больше не требовать CUDA в качестве зависимости по умолчанию на определенных операционных системах и архитектурах. Это исправление включено в последний релиз. - PR был представлен для обновления версии ethrex в rex, чтобы обеспечить совместимость с последними изменениями в ethrex L2. - Мы начали разрабатывать новую вкладку для монитора ethrex L2 в средах разработки. Эта вкладка будет отображать информацию, относящуюся к разработчикам, такую как список богатых аккаунтов и адреса контрактов L1 и L2. Changelog: - refactor(l2): заменены константы разницы состояния usize. - feature(l1,l2): настроен ethrex-replay для профилирования памяти. - refactor(l1): удалено ненужное использование usize в blockchain crate (связано с исправлением ошибки). - feature(l1,l2): добавлены новые команды к свидетельству выполнения. - fix(levm): решены проблемы, связанные с 32-битной архитектурой (связано с исправлением ошибки). - refactor(levm): обновлена реализация ecrecover для использования k256 вместо secp256k1 (связано с исправлением ошибки). - ci(l1,l2): разделены сборки GPU и принят целевой x86-64-v2. Производительность На этой неделе мы продолжили сосредоточение на потреблении CPU и бенчмарках. Что касается потребления CPU, мы выявили 2 различных случая, один из которых связан со строительством блока, а другой - нет. Мы приоритизируем те, где нет строительства блока, поскольку они присутствуют всегда и влияют на другие усилия (например, snap sync). Насколько мы исследовали, это полностью связано с p2p. Мы продолжим наши усилия в этом направлении. Что касается бенчмарков, после нашего последнего улучшения производительности modexp мы сосредоточились на некоторых выявленных улучшениях, таких как codecopy и связанные операции, а также signextend, mulmod и addmod. Мы продолжим сосредоточение как на потреблении CPU, так и на производительности тестов, которые мы определили как следующие шаги для возможных улучшений, таких как переводы eth и другие операции levm.
10,98K