Развертывание смарт-контракта в Ethereum — это загрузка скомпилированного кода в сеть блокчейна с помощью подписанной транзакции. После подтверждения транзакции сетью контракт получает уникальный адрес, становится доступным всем и выполняется в точности так, как написан.
Поскольку транзакции в Ethereum необратимы, а код нельзя просто переписать после развертывания, крайне важно безопасно освоить этот процесс в тестовой сети. В этом руководстве показано, как написать, скомпилировать, развернуть и проверить смарт-контракт с помощью Remix IDE и тестовой сети Sepolia.
Что понадобится перед началом
Чтобы пройти это руководство, не тратя настоящие деньги, подготовьте три вещи:
Web3-кошелёк: установите расширение для браузера, например MetaMask.
Отдельный тестовый аккаунт: создайте в кошельке новый аккаунт, предназначенный исключительно для разработки и тестирования. Никогда не используйте реальные средства с тестовыми ключами.
Тестовые ETH: в Ethereum используются тестовые сети (тестнеты), которые воспроизводят условия основной сети, но работают с бесплатными тестовыми токенами. Вам понадобится небольшое количество ETH Sepolia, которое можно получить через онлайн-кран.
Шаг 1. Напишите и скомпилируйте смарт-контракт
Самый быстрый способ развернуть первый контракт — воспользоваться Remix IDE, средой разработки с открытым исходным кодом, работающей в браузере и поддерживаемой сообществом Ethereum.
1. Откройте Remix и создайте файл
Перейдите на remix.ethereum.org. На левой боковой панели в разделе File Explorer найдите папку contracts и создайте файл с именем Storage.sol.
2. Добавьте код Solidity
Вставьте в редактор простой автономный контракт:

Идентификатор лицензии SPDX: указывает лицензию с открытым исходным кодом, регулирующую использование кода.
pragma solidity: задаёт требуемую версию компилятора.
Функции get и set: позволяют пользователям изменять сохранённое целое число и читать его.
3. Скомпилируйте код
Нажмите вкладку Solidity Compiler на левой боковой панели (значок в виде ромба Ethereum с фигурными скобками компилятора).
Выберите версию компилятора, соответствующую строке pragma (например, 0.8.20).
Нажмите Compile Storage.sol.
На значке появится зелёная галочка. Компилятор преобразует читаемый человеком код Solidity в два результата:
Байт-код: необработанные шестнадцатеричные инструкции, которые выполняет виртуальная машина Ethereum (EVM).
ABI (Application Binary Interface): файл JSON, определяющий, как внешние приложения (например, веб-интерфейсы) взаимодействуют с вашим контрактом.
Шаг 2. Настройка тестовой среды
Для транзакций в основной сети нужен настоящий Ether ($ETH ), а комиссии за газ могут значительно меняться. Прежде чем рассматривать развертывание в рабочей среде, всегда тестируйте контракты в публичной тестовой сети.
1. Переключите MetaMask на тестовую сеть Sepolia
Откройте MetaMask и нажмите на переключатель сетей в левом верхнем углу.
Включите параметр «Показывать тестовые сети».
Выберите Sepolia.
2. Получите тестовые ETH для Sepolia
Для развертывания смарт-контракта нужен газ даже в тестовой сети. Чтобы получить бесплатные тестовые токены:
Воспользуйтесь публичным краном Sepolia (например, Google Cloud Web3 Faucet или Alchemy Sepolia Faucet).
Укажите публичный адрес своего кошелька и отправьте запрос.
Прежде чем продолжить, убедитесь, что на вашем балансе Sepolia появились полученные тестовые ETH.
Шаг 3. Развертывание контракта с помощью Remix
Теперь, когда контракт скомпилирован, а на кошельке есть средства для тестовой сети, можно отправить транзакцию развертывания.
1. Подключите Remix к MetaMask
В Remix нажмите вкладку Deploy & Run Transactions на левой боковой панели.
В раскрывающемся списке ENVIRONMENT выберите Injected Provider - MetaMask.
MetaMask предложит подключиться. Выберите тестовый аккаунт и подтвердите подключение.
Убедитесь, что идентификатор сети соответствует Sepolia, а рядом с адресом аккаунта отображается текущий баланс тестовой сети.
2. Отправьте транзакцию развертывания
Убедитесь, что в раскрывающемся списке CONTRACT выбран SimpleStorage.
Нажмите оранжевую кнопку Deploy.
В MetaMask откроется окно транзакции с указанием:
Расчётной комиссии за газ (в тестовых ETH).
Общей стоимости транзакции.
Нажмите Confirm.
Через несколько секунд транзакция подтвердится в блокчейне. В консоли Remix внизу появится зелёная галочка, а контракт отобразится в разделе Deployed Contracts в нижней части боковой панели.
Шаг 4. Взаимодействие с развернутым контрактом
Разверните экземпляр контракта в разделе Deployed Contracts в Remix:
Синие кнопки (get): соответствуют функциям только для чтения (view). Нажатие get запрашивает текущее состояние, хранящееся в блокчейне, не расходуя газ и не отправляя транзакцию.
Оранжевые кнопки (set): соответствуют функциям, изменяющим состояние. Введите число (например, 42) в поле рядом с set и нажмите кнопку. MetaMask откроет окно, где нужно будет подписать транзакцию и заплатить небольшую комиссию за газ, чтобы обновить состояние.
Шаг 5. Верификация контракта на Etherscan
После развертывания контракта обозреватель блоков показывает только необработанный скомпилированный байт-код. Пользователи не смогут узнать, что именно делает контракт, пока вы не верифицируете его и не опубликуете исходный код.
Скопируйте адрес только что развернутого контракта из Remix.
Перейдите на sepolia.etherscan.io и вставьте адрес в строку поиска.
Нажмите вкладку Contract, затем выберите Verify and Publish.
Настройте параметры верификации:
Тип компилятора: один файл (или стандартный ввод JSON).
Версия компилятора: точная версия, использованная при компиляции (например, v0.8.20).
Тип лицензии открытого исходного кода: MIT.
Нажмите Continue, вставьте точный код SimpleStorage.sol в текстовое поле и отправьте его.
После верификации рядом с вкладкой Contract появится зелёная галочка. Теперь любой пользователь сможет просмотреть исходный код Solidity, изучить ABI и вызывать функции Read Contract и Write Contract прямо через Etherscan.
За пределами Remix: инструменты для рабочей среды
Remix отлично подходит для быстрого создания прототипов и обучения, но приложения для рабочей среды создаются с помощью локальных инструментов командной строки:

Безопасное хранение приватных ключей
При переходе на инструменты командной строки:
Никогда не прописывайте приватные ключи непосредственно в скриптах.
Храните ключи в файлах .env и добавьте .env в .gitignore, прежде чем отправлять какой-либо код в публичные репозитории.
Для развертывания в основной сети используйте аппаратные кошельки (например, Ledger) или шифрование хранилища ключей паролем, а не храните приватные ключи в открытом виде.
Распространённые ошибки при развертывании
Закончился газ: если развертывание завершается ошибкой Out of Gas, проверьте логику конструктора контракта на наличие бесконечных циклов или слишком больших массивов.
Ошибки в параметрах конструктора: если при создании контракта нужно указать аргументы (например, адрес владельца или название токена), их неправильная передача приведёт к отмене транзакции развертывания.
Потеря адреса развернутого контракта: всегда сохраняйте адрес, полученный из квитанции о транзакции. Если закрыть браузер, не сохранив его, придётся найти контракт через обозреватель блоков по адресу кошелька.
Часто задаваемые вопросы
Сколько стоит развертывание в основной сети Ethereum?
Стоимость в основной сети зависит от двух факторов: размера байт-кода контракта и текущих цен на газ в сети (измеряемых в Gwei). Развертывание простого контракта может стоить от 10 до 40 долларов, а сложных протоколов DeFi — несколько сотен долларов в периоды высокой загрузки сети. Развертывание в тестовых сетях полностью бесплатное.
Можно ли изменить смарт-контракт после его развертывания?
Нет. Смарт-контракты по своей природе неизменяемы. Если после развертывания обнаружится ошибка, нужно развернуть новый контракт и перенести пользователей или данные. В крупных проектах используют обновляемые прокси-шаблоны (например, ERC-1967), которые направляют вызовы к новым контрактам с логикой, сохраняя состояние. Однако изменить сам байт-код нельзя.
Нужно ли запускать полноценный узел Ethereum для развертывания?
Нет. Существуют сервисы удалённого вызова процедур (RPC), которые взаимодействуют с сетью от вашего имени. Когда вы используете Remix с MetaMask, MetaMask автоматически обрабатывает RPC-подключение.
