Читать книгу Ethereum: работа с сетью, смарт-контракты и распределенные приложения - Алексей Бурков - Страница 16
Неделя № 2. Создание и тестирование простейших смарт-контрактов
Урок 4. Публикация смарт-контракта HelloWorld в эмуляторе блокчейн-сети Ganache
ОглавлениеАннотация. В данном уроке мы рассмотрим публикацию простейшего смарт-контракта в эмуляторе блокчейн-сети Ganache.
В предыдущей неделе мы рассматривали публикацию смарт-контракта MetaCoin в эмуляторе блокчейн-сети Ganache. Однако смарт-контракт MetaCoin был тестовым контрактом, он был развернут по заданному в truffle шаблону и не требовал создания js-файлов для публикации (они уже были созданы).
В нашем новом проекте SimpleContracts смарт-контракта HelloWorld был сгенерирован по шаблону нового пустого контракта и при этом не создавались js-файлы для его публикации. По умолчанию в новом проекте присутствует js-файл 1_initial_migration.js, который публикует смарт-контракт Migrations.sol, развертывающий все остальные контракты проекта. Рассмотрим файл 1_initial_migration.js более подробно (рис. 2.4.1).
Рис. 2.4.1
Выбрав файл 1_initial_migration.js на панели EXPLORER, мы увидим его содержимое (рис. 2.4.1). В первой строке командой const Migrations = artifacts.require(“Migrations”); создается константа, привязанная к публикуемому смарт-контракту. Такие константы называются артефактами. В нашем случае мы создали артефакт Migrations (код голубого цвета), привязанный к смарт-контракту Migrations, указанный без расширения sol (код коричневого цвета). Далее создается функция, публикующая наш артефакт, команда module.exports = function(deployer) {. Как вы поняли из предыдущих уроков, функция закрывается символом }; в строке 5. Внутри функции расположена команда deployer.deploy(Migrations);. Данная команда публикует наш артефакт Migrations и привязанный к нему смарт-контракт Migrations.sol.
Создадим js-файл для публикации нашего смарт-контракта. Чтобы не набирать код js-файла, просто скопируем файл 1_initial_migration.js. Для этого щелкните по файлу 1_initial_migration.js правой кнопкой мыши и в появившемся меню выберите Copy (рис. 2.4.2).
Рис. 2.4.2
Затем щелкните по папке migrations правой кнопкой мыши и в появившемся меню выберите Paste (рис. 2.4.3).
Рис. 2.4.3
В папке migrations появится файл 1_initial_migration copy.js (рис. 2.4.4).
Рис. 2.4.4
Переименуем новый файл в js-файл с именем 2_HelloWorld_migration.js. Напоминаем, что js-файлы для публикации смарт-контрактов должны начинаться с цифры. Для переименования файла щелкните правой кнопкой мыши и в появившемся меню выберите Rename (рис. 2.4.5).
Рис. 2.4.5
Введите имя файла 2_HelloWorld_migration и нажмите клавишу Enter. Папка migrations примет вид как на рис. 2.4.6.
Рис. 2.4.6
Откройте js-файл, щелкнув по нему. Внутри файл будет аналогом скопированного js-файла 1_initial_migration.js. Замените все Migrations на HelloWorld (код голубого и коричневого цвета). Содержимое файла 2_HelloWorld_migration.js станет как на рис. 2.4.7.
Рис. 2.4.7
Сохраните файл 2_HelloWorld_migration.js и запустите эмулятор блокчейн-сети Ganache. При запуске Ganache выберите вариант QUICKSTART.