Гид по технологиям

Как написать и развернуть первый смарт‑контракт на Solidity

5 min read Solidity Обновлено 08 Jan 2026
Первый смарт‑контракт на Solidity — руководство
Первый смарт‑контракт на Solidity — руководство

Ноутбук с редактором кода, показывающий фрагмент Solidity

Solidity — это язык программирования для смарт‑контрактов в сети Ethereum. Он статически типизирован и ориентирован на объекты. В языке используется семантическая схема версионирования X.Y.Z; небольшие исправления приходят в патч‑версиях (Z), а обратимо несовместимые изменения — в минорных релизах (Y).

В этом руководстве вы:

  • создадите файл helloWorld.sol и вставите базовый контракт;
  • скомпилируете его в Remix и развернёте на локальной среде тестирования;
  • получите практические советы по отладке и безопасности;
  • увидите альтернативы Remix и чек‑листы для ролей.

Что нужно знать перед началом

  • Solidity: язык для определения логики смарт‑контрактов в Ethereum.
  • Remix: веб‑IDE, удобна для быстрого прототипирования и обучения.
  • Смарт‑контракт: программа, выполняющаяся на блокчейне; операции записываются в транзакции и могут стоить газ.

Коротко: установите Remix (он доступен в браузере), создайте файл с расширением .sol и следуйте шагам ниже.

Быстрые шаги

  1. Откройте Remix в браузере.
  2. Нажмите Create New File и создайте helloWorld.sol.
  3. Вставьте пример кода (ниже).
  4. Нажмите Solidity compiler → Compile helloWorld.sol.
  5. Перейдите в Deploy & run transactions и нажмите Deploy.

Стартовая страница онлайн-IDE Remix с панелями

Пример: первый контракт

Создайте файл helloWorld.sol и вставьте этот код точно как есть:

// SPDX-License-Identifier: GPL-3.0  
pragma solidity ^0.8.1;  
  
contract FirstContract {  
   uint var1;  
  
   function set(uint x) public {  
       var1 = x;  
   }  
  
   function get() public view returns (uint) {  
       return var1;  
   }  
}

Разбор по строкам:

  • Первая строка — SPDX‑лицензия. В примере указана GPL‑3.0; можно заменить на MIT или другую открыто‑лицензию в зависимости от ваших требований.
  • pragma solidity ^0.8.1; — ограничение версий компилятора: любое значение >=0.8.1 и <0.9.0. Это предотвращает неожиданное поведение при использовании несовместимых компиляторов.
  • contract FirstContract { … } — контракт похож на класс в других ООП‑языках.
  • uint var1; — состояние контракта: беззнаковое целое, хранящееся в состоянии блокчейна.
  • function set(uint x) public { var1 = x; } — публичный сеттер: сохраняет значение в состояние контракта (генерирует транзакцию при вызове).
  • function get() public view returns (uint) { return var1; } — публичный геттер: чтение состояния без модификации (не требует газа при локальном вызове).

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

Компиляция в Remix

  1. Нажмите кнопку Solidity compiler в левом меню.
  2. Выберите версию компилятора, совместимую с pragma (например 0.8.x).
  3. Нажмите Compile helloWorld.sol и исправьте ошибки, если они появятся.

Кнопка «Solidity compiler» в интерфейсе Remix

Советы при ошибках компиляции:

  • Проверьте pragma и версию компилятора.
  • Убедитесь, что файл сохранён и имеет расширение .sol.
  • Читайте текст ошибок: часто указываются строка и причина (тип, отсутствие точки с запятой и т. п.).

Компиляция файла helloWorld.sol в Remix

Развёртывание и тестирование

  1. Перейдите в секцию Deploy & run transactions.
  2. Выберите окружение (по умолчанию JavaScript VM — локальная симуляция, без gas‑платежей).
  3. Убедитесь, что имя контракта отображается правильно, нажмите Deploy.

Развёртывание и запуск смарт‑контракта в Remix

После развёртывания вы увидите интерфейс контракта с кнопками set и get. Вызов set создаст транзакцию (если вы используете сеть с реальным газом, она будет стоить ETH), а get вернёт текущее значение var1.

Типичные ошибки и как их исправить

  • Несовместимость версии компилятора: проверьте pragma и поставьте нужный компилятор.
  • Ошибка типов (type error): убедитесь, что используемые типы совпадают (например, uint vs int).
  • Неопределённая функция при вызове: проверьте область видимости (public/internal) и правильность имени.
  • Ошибки доступа к состоянию: чтение через view не будет менять состояние — используйте транзакции для модификации.

Контрольный приём: при первой отладке работайте в JavaScript VM, затем переносите тесты в локальную сеть или тестнет.

Альтернативы Remix и когда их использовать

  • Hardhat — рекомендуемый инструмент для сложных проектов, поддерживает тестирование (Mocha/Chai), скрипты миграции и плагины.
  • Truffle — классический фреймворк для разработки и развёртывания с набором инструментов миграции и тестирования.
  • Foundry — быстрый инструмент на Rust для тестирования и сборки, подходит для производительных CI‑процессов.
  • VS Code + расширение Solidity — удобно для редактирования локально, интеграции с Git и линтерами.

Remix отлично подходит для обучения и прототипирования. Для CI/CD и сложной архитектуры смарт‑контрактов лучше использовать Hardhat/Foundry.

Чек‑листы по ролям

Чек‑лист для разработчика:

  • pragma указан и совместим с версии компилятора
  • объявлены лицензии (SPDX)
  • минимальные права доступа для функций
  • добавлены события для важных действий
  • покрытие тестами основных сценариев

Чек‑лист для аудитора:

  • отсутствие переполнений/underflow (в новых версиях Solidity защита встроена)
  • проверены точки доступа и управление правами
  • обработаны все возможные входные данные и граничные случаи
  • логика без зависимости от внешнего состояния без проверки
  • наличие тестов интеграции и симуляция атак

Факто‑бокс

  • Язык: Solidity — статически типизированный язык для EVM (Ethereum Virtual Machine).
  • Версионирование: семантическое X.Y.Z (например 0.8.1).
  • Инструменты: Remix (онлайн), Hardhat, Truffle, Foundry, VS Code + плагины.

Критерии приёмки

  • Контракт компилируется без ошибок под указанную версию компилятора.
  • Контракт разворачивается в JavaScript VM и выполняет set/get корректно.
  • Для реального развёртывания присутствуют автоматические тесты и проверка безопасности.

Краткий глоссарий

  • Смарт‑контракт: код, выполняющийся на блокчейне и реагирующий на транзакции.
  • Gas: плата за выполнение операций в Ethereum.
  • Тестнет: сеть для тестирования без использования реальных средств.

Резюме

Вы написали и развернули базовый контракт на Solidity в Remix. Дальше: добавьте тесты, изучите управление правами и обработку ошибок, попробуйте переносить проект в Hardhat или Foundry для более серьёзной разработки и CI.

Важно: всегда проводите аудит критичных контрактов и тщательно тестируйте взаимодействие с внешними контрактами и пользовательским вводом.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство