Введение
Это руководство проведет вас через процесс создания простого смарт-контракта Ethereum с использованием Solidity, языка программирования для написания смарт-контрактов Ethereum.
Предпосылки
Чтобы следовать этому руководству, вам понадобятся:
- Node.js и npm установлены в вашей системе
- Truffle Suite, среда разработки, среда тестирования и конвейер активов для Ethereum.
- Ganache, персональный симулятор блокчейна для Ethereum
Вы можете установить Truffle и Ganache с помощью команды npm:
npm install -g truffle
npm install -g ganache-cli
Создание проекта
Начнем с создания нового каталога для нашего проекта и инициализации нового проекта Truffle.
mkdir ethereum-contract
cd ethereum-contract
truffle init
Напишите смарт-контракт
Давайте создадим новый файл с именем SimpleStorage.sol
в каталоге contracts/
и добавим следующий код:
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SimpleStorage {
uint public data;
function set(uint x) public {
data = x;
}
function get() public view returns (uint) {
return data;
}
}
Это очень простой контракт, который хранит целое число и предоставляет две функции, set
и get
, для изменения и получения значения.
Создание файла миграции
Чтобы развернуть контракт на блокчейне, вам нужно будет создать файл миграции. Создайте новый файл с именем 2_deploy_contracts.js
в каталоге migrations/
и добавьте следующий код:
const SimpleStorage = artifacts.require("SimpleStorage");
module.exports = function (deployer) {
deployer.deploy(SimpleStorage);
};
Протестируйте контракт
Перед развертыванием контракта мы должны написать несколько его тестов. Создайте новый файл с именем simpleStorage.js
в каталоге test/
и добавьте следующий код:
const SimpleStorage = artifacts.require('SimpleStorage');
contract('SimpleStorage', () => {
it('should set the value of data variable', async () => {
const simpleStorage = await SimpleStorage.deployed();
await simpleStorage.set(10);
const result = await simpleStorage.get();
assert(result.toNumber() === 10);
});
});
Запустите тесты командой:
truffle test
Распространить контракт
Наконец, мы распространяем контракт на нашем локальном блокчейне с помощью Ganache. Запустите команду:
ganache-cli
В другом терминале запустите команду миграции:
truffle migrate
Заключение
Поздравляем! Вы только что написали и развернули свой первый смарт-контракт на Ethereum с помощью Solidity.