# Проверка контрактов предварительного развертывания Ethereum

By [MaxVell337](https://paragraph.com/@mvellcrypto) · 2025-08-16

---

![](https://storage.googleapis.com/papyrus_images/90034928f7132ef26717abfb2afed86495e061a39626ba365cbc00a523416fa7.png)

Верификация контрактов — важнейшая услуга, предоставляемая обозревателями блоков блокчейнам. Благодаря процессу верификации базовый код становится доступным для чтения человеком, что позволяет любому пользователю проверять код контракта и взаимодействовать с методами чтения и записи внутри контракта.

Обычно смарт-контракты развёртываются в блокчейне внешним пользователем в любое время и во время развёртывания им присваивается адрес 0x. Часто инструменты разработчика, такие как Hardhat или Remix, позволяют мгновенно верифицировать контракт через API обозревателя, или же адрес, с которого был развёрнут контракт, может выполнить все этапы верификации через пользовательский интерфейс обозревателя.

Однако контракты прекрасно работают в блокчейне без верификации, и многие развёртыватели никогда не верифицируют свои контракты или верифицируют их только в одних обозревателях. Это приводит к отсутствию прозрачности, потенциальным проблемам безопасности (если пользователи не могут легко прочитать код, они не смогут выявить проблемы безопасности) и недоступности.

В то время как внешние смарт-контракты развёртываются по адресам в любое время для создания новой функциональности в блокчейне, часть контрактов развёртывается с заданными адресами во время самих обновлений Ethereum. Контракты предварительного развертывания (или системные контракты) добавляются во время хардфорков для включения различных предложений по улучшению Ethereum (EIP) и реализации основных функций в виртуальной машине Ethereum.

Предварительные развертывания Pectra
------------------------------------

В ходе недавнего этапа Pectra HF было добавлено несколько важных предварительных развертываний. Хотя разработчики обычно могли проверять контракты в обозревателе, эти системные контракты были написаны на языке GEAS, который в настоящее время не поддерживается для целей верификации.

[GEAS (Good Ethereum Assembler)](https://github.com/fjl/geas?ref=blog.blockscout.com) — это язык ассемблера, поддерживающий все инструкции EVM и разработанный и оптимизированный для низкоуровневого взаимодействия с EVM. Blockscout поддерживает верификацию для языков разработки контрактов Solidity, Vyper и Yul, но GEAS не является общепринятым языком для разработчиков вечных контрактов.

Поскольку контракты было сложно проверить, они были нечитаемыми для человека, и пользователи не могли проверять функции чтения и записи. Среди рассматриваемых контрактов один был развернут во время модернизации Dencun (BeaconRoots), а три — в рамках Pectra.

![](https://storage.googleapis.com/papyrus_images/f975016fa9223513a118536ae461a1f108c23354bc93b3a5354a394ed22fa001.png)

### Назначение контракта

*   **BeaconRoots**: Предоставляет уровню исполнения доступ к состоянию и данным уровня консенсуса (Beacon Chain).
    
*   **HistoryStorage**: Хранит исторические хэши блоков (8192 блока) для быстрого запроса последних блоков без сохранения состояния.
    
*   **WithdrawalRequest**: Валидаторы Beacon Chain могут инициировать вывод средств и выходы через уровень исполнения.
    
*   **ConsolidationRequest**: Валидаторы, работающие с большим количеством узлов, могут консолидироваться в меньшее количество узлов с большим балансом (до 2048 ETH на валидатор).
    

Верификация Blockscout
----------------------

Мы посчитали важным показать код для этих предварительных развертываний и раскрыть базовые методы, но поддержка GEAS в пользовательском интерфейсе Blockscout или верификаторе не является обязательной, учитывая его ограниченное использование.

Чтобы обеспечить прозрачность контрактов и выполнить верификацию, мы использовали нашу [базу данных байт-кодов Ethereum](https://docs.blockscout.com/about/features/ethereum-bytecode-database-microservice?ref=blog.blockscout.com). Эта база данных компилирует и хранит развёрнутый байт-код из различных контекстов и цепочек, а затем использует сохранённый байт-код для проверки вновь развёрнутых контрактов в цепочках (контракты можно проверить, если байт-код уже существует в базе данных).

В данном случае мы жёстко запрограммировали соответствующие байт-коды для контрактов, подготовленных до развёртывания, включая их источники и соответствующие метаданные, непосредственно в базу данных. Мы также обновили пользовательский интерфейс Blockscout, чтобы показать, что эти контракты написаны в GEAS, и обеспечить фильтрацию по конкретным контрактам GEAS.

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

После проверки информация о контракте и методы становятся прозрачными и доступными. Теперь можно считывать данные контракта и даже инициировать запрос на вывод или консолидацию непосредственно из Blockscout при желании.

![](https://storage.googleapis.com/papyrus_images/baea44531fa542486882aa255b5801c0e0f1190cc1f1379f859ab731ca3d6166.png)

Заключение
----------

Pectra HF представил множество новых функций и расширенный функционал для Ethereum. Blockscout помогает расширить контекст и сделать эти функции более удобными в использовании, предоставляя верификацию контрактов GEAS перед развертыванием.

Blockscout стремится предоставлять открытый доступ к контрактам в Ethereum и связанной с ним экосистеме L2 и L3. Благодаря нашей базе данных байт-кодов Ethereum и участию в [Verifier Alliance](https://verifieralliance.org/?ref=blog.blockscout.com), который теперь включает более 8 миллионов контрактов, мы продолжим обеспечивать доступность и прозрачность контрактов для всех пользователей блокчейна.

Связанные запросы на выдачу контрактов

---

*Originally published on [MaxVell337](https://paragraph.com/@mvellcrypto/ethereum)*
