Ethereum: работа с сетью, смарт-контракты и распределенные приложения - страница 19

Шрифт
Интервал


Команда function определяет функцию и имеет следующее строение:

• sayHello() – имя функции, наша функция не имеет входных параметров, поэтому область определения параметров пуста (). Позже мы рассмотрим функции с параметрами;

• public – это область видимости функции, означает, что мы можем использовать эту функцию в любом месте кода смарт-контракта;

• pure – определяет, что для выполнения нашего смарт-контракта не требуется эфир;

• returns (string memory) – показывает, что наша функция возвращает строку (HelloWorld – это string). Запись результата происходит в память, а не в блок, поэтому указываем параметр «memory».

Ну и наконец, рассмотрим содержимое нашей функции sayHello. Она состоит только из одной команды «return “Hello World!!!”;». Команда return выводит результат работы функции. В нашем случае это строка “Hello World!!!”. Строка заключается в кавычки. В языке Solidity любая команда заканчивается знаком «;» (рис. 2.3.3).

Замечание. Как мы можем видеть, язык программирования смарт-контрактов Solidity по синтаксису очень похож на языки программирования JavaScript и Java.

Теперь давайте откомпилируем наш смарт-контракт. Мы видим, что в коде нашего контракта отсутствуют подчеркнутые команды (рис. 2.3.3). Это говорит о том, что в коде отсутствуют ошибки и его можно компилировать. Для компиляции всего проекта в терминале выполните команду «truffle compile» (рис. 2.3.4).


Рис. 2.3.4


После компиляции проекта мы видим, что на панели EXPLORER в папке build появился откомпилированный смарт-контракт HelloWorld.json (рис. 2.3.5).


Рис. 2.3.5


На этом мы заканчиваем урок по содержимому нашего первого смарт-контракта и переходим к описанию его публикации в эмуляторе.

Урок 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).