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

В этом гайде мы пошагово покажем, как написать и развернуть ваш первый простой смарт-контракт, используя доступные онлайн-инструменты.
Смарт-контракты обещают автоматизировать процессы, исключить посредников и внести беспрецедентную прозрачность в самые разные сферы – от финансов до логистики. Если вы когда-либо задумывались о том, чтобы погрузиться в мир 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.
Создание смарт-контрактов – это увлекательный путь, открывающий двери к инновациям и новым возможностям. Проявите любопытство и упорство, и кто знает, возможно, именно ваш контракт станет основой следующего прорывного децентрализованного приложения!