avatar
Power Zone

Как создать смарт-контракт

kak-sozdat-svoy-pervyy-smart-kontrakt-gayd-dlya-novichkov

В этом гайде мы пошагово покажем, как написать и развернуть ваш первый простой смарт-контракт, используя доступные онлайн-инструменты.

Смарт-контракты обещают автоматизировать процессы, исключить посредников и внести беспрецедентную прозрачность в самые разные сферы – от финансов до логистики. Если вы когда-либо задумывались о том, чтобы погрузиться в мир Web3 и децентрализованных приложений (dApps), создание вашего первого смарт-контракта – это отличная отправная точка.

Что вам понадобится

Прежде чем мы начнем, давайте убедимся, что у вас есть необходимые инструменты:

  • Браузер: Любой современный браузер (Chrome, Firefox, Brave).
  • MetaMask: Расширение для браузера, которое служит криптовалютным кошельком и шлюзом для взаимодействия с блокчейном Ethereum (или совместимыми сетями). Если у вас его нет, установите и создайте кошелек.
  • Remix IDE: Онлайн-среда разработки для Solidity. Это идеальный инструмент для новичков, так как не требует локальной установки. Просто откройте remix.ethereum.org.
  • Тестовая сеть (Testnet): Мы будем работать в тестовой сети (например, Sepolia, Goerli), чтобы не тратить реальные деньги (эфир) на развертывание контракта.
  • Тестовый эфир (Testnet Faucet): Вам понадобится немного тестового эфира для оплаты "газа" (комиссии за транзакцию) в тестовой сети. Найти "фауцет" (кран) для Sepolia можно, например, через поиск "Sepolia faucet" в Google.

Пошаговое руководство: Создаем хранилище чисел

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

Шаг 1: Откройте Remix IDE

Зайдите на Remix вы увидите интерфейс, состоящий из нескольких панелей. Основные, которые нам понадобятся:

  • Левая панель (File Explorers): Для управления файлами.
  • Центральная панель (Редактор кода): Где мы будем писать код.
  • Правая панель: Для компиляции и развертывания контракта.

Шаг 2: Создайте новый файл

На левой панели в разделе "File Explorers" нажмите на значок "Create new file" (листик с плюсиком). Назовите файл, например, SimpleStorage.sol (расширение .sol обязательно, так как это файл Solidity).

Шаг 3: Напишите ваш первый смарт-контракт

В открывшемся редакторе кода SimpleStorage.sol вставьте следующий код:

// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.0; // Указываем версию компилятора Solidity

contract SimpleStorage { // Объявляем наш смарт-контракт с именем SimpleStorage

    uint256 public myNumber; // Объявляем переменную для хранения числа.
                            // uint256 - это целое беззнаковое число до 256 бит.
                            // public - означает, что к этой переменной можно обратиться извне контракта.

    // Функция для установки нового числа
    function setNumber(uint256 _newNumber) public {
        myNumber = _newNumber; // Присваиваем переданное число нашей переменной
    }

    // Функция для получения текущего числа
    function getNumber() public view returns (uint256) {
        return myNumber; // Возвращаем текущее значение myNumber
    }
}

Шаг 4: Компилируем контракт

  • На левой панели Remix нажмите на иконку "Solidity Compiler" (четвертая сверху, похожа на лист бумаги).
  • Убедитесь, что выбранная версия компилятора (Compiler) соответствует pragma solidity в вашем коде (например, 0.8.x). Если нет, выберите подходящую.
  • Нажмите кнопку "Compile SimpleStorage.sol".
  • Если нет ошибок, вы увидите зеленую галочку. Если есть ошибки, Remix подсветит их в коде и покажет сообщения в нижней консоли. Исправьте ошибки и попробуйте снова.

Шаг 5: Разворачиваем контракт в тестовой сети

  • На левой панели Remix нажмите на иконку "Deploy & Run Transactions" (пятая сверху, похожа на блокчейн).
  • В выпадающем списке "ENVIRONMENT" выберите "Injected Provider - MetaMask".
  • Remix попросит подключиться к вашему MetaMask. Разрешите подключение.
  • Убедитесь, что в MetaMask выбрана тестовая сеть (например, Sepolia Test Network). Если нет, измените её в MetaMask. Если у вас нет тестового эфира, самое время получить его из "фауцета".
  • Убедитесь, что в выпадающем списке "CONTRACT" выбрано "SimpleStorage".
  • Нажмите кнопку "Deploy".
  • MetaMask откроет окно с запросом на подтверждение транзакции. Здесь будет указана стоимость "газа". Подтвердите транзакцию.
  • Дождитесь подтверждения транзакции в сети. Это может занять несколько секунд. Вы увидите уведомление в Remix (в нижней консоли) и в MetaMask.

Шаг 6: Взаимодействуем с вашим контрактом

После успешного развертывания, на панели "Deploy & Run Transactions" под разделом "Deployed Contracts" вы увидите свой контракт SimpleStorage и его адрес.

Читаем число:

  • Нажмите на синюю кнопку getNumber.
  • Справа от кнопки вы увидите текущее значение myNumber (изначально это будет 0, так как мы ничего не устанавливали).
  • Нажмите на синюю кнопку myNumber (она появилась, потому что переменная public). Результат будет таким же.

Устанавливаем новое число:

  • Рядом с красной кнопкой setNumber вы увидите поле ввода. Введите любое число (например, 42).
  • Нажмите красную кнопку setNumber.
  • MetaMask снова запросит подтверждение транзакции (так как мы изменяем состояние блокчейна, требуется "газ"). Подтвердите.
  • Дождитесь подтверждения транзакции.
  • Теперь снова нажмите синюю кнопку getNumber или myNumber. Вы должны увидеть новое значение (42).

Вы только что сделали свой первый шаг в мире смарт-контрактов! Это лишь вершина айсберга. Далее вы можете:

  • Углубиться в Solidity: Изучите более сложные концепции: mapping, struct, event, модификаторы доступа, наследование.
  • Изучить безопасность: Понимание распространенных уязвимостей смарт-контрактов и методов их предотвращения.
  • Поработать с тестовыми фреймворками: Использовать Hardhat или Truffle для локальной разработки и тестирования контрактов.
  • Создавать более сложные dApps: Соединять смарт-контракты с пользовательским интерфейсом (Frontend) с помощью Web3.js или Ethers.js.

Создание смарт-контрактов – это увлекательный путь, открывающий двери к инновациям и новым возможностям. Проявите любопытство и упорство, и кто знает, возможно, именно ваш контракт станет основой следующего прорывного децентрализованного приложения!