Рис. 1.4.2
Панель терминала откроется в нижней части окна VS Code. Для работы с новым проектом откройте раздел EXPLORER, нажав самую верхнюю кнопку на панели слева (рис. 1.4.2). В итоге окно VS Code будет выглядеть как на рис. 1.4.3.
Рис. 1.4.3
Разверните терминал на всю панель, нажав кнопку «^» в верхнем правом углу панели терминала (рис. 1.4.3). Окно VS Code примет вид как на рис. 1.4.4.
Рис. 1.4.4
Проверим подключение компилятора к терминалу VS Code. Для этого в терминале наберите команду «npm» и нажмите клавишу Enter (рис. 1.4.5).
Если компилятор работает, то мы увидим справку о команде «npm», как на рис. 1.4.5.
Рис. 1.4.5
Теперь установим фреймворк Truffle. Truffle – это набор инструментов и библиотек для создания смарт-контрактов на языке программирования Solidity.
Замечание. Конечно, можно обойтись и без Truffle и все делать вручную. Это сложно и занимает много времени. Поэтому давайте автоматизируем создание смарт-контрактов с использованием инструментов фреймворка Truffle.
Для установки фреймворка в терминале наберите команду «npm install –g truffle» и нажмите клавишу Enter (рис. 1.4.6).
Если все работает, терминал будет выглядеть как на рис. 1.4.6.
Рис. 1.4.6
Теперь для проверки работы компилятора Node.js при помощи фреймворка Truffle мы развернем тестовый проект Solidity и откомпилируем его.
Для начала создадим папку проекта. Для этого в разделе EXPLORER в левой части окна VS Code нажмите синюю кнопку Open Folder (рис. 1.4.6). В окне Open Folder нажмите кнопку «Новая папка». Создайте папку MetaCoin, выделите ее и нажмите кнопку «Выбор папки» (рис. 1.4.7).
Рис. 1.4.7
Для проверки работы нашего окружения – «песочницы» – создадим тестовый проект при помощи Truffle. Для этого в окне терминала наберите команду «truffle unbox metacoin», как на рис. 1.4.8, и нажмите кнопку Enter. После развертывания тестового контракта MetaCoin окно VS Code будет выглядеть как на рис. 1.4.8.
Рис. 4.8
Обратите внимание на изменения в разделе EXPLORER слева (рис. 1.4.8). Здесь появился проект MetaCoin, содержащий папки contracts, migrations и test. В папке contracts расположены наши смарт-контракты. Это файлы с расширением sol. В папке migrations располагаются настройки компиляции смарт-контрактов. Это файлы с расширением js. В папке test расположены файлы для отладки смарт-контрактов. Это файлы с расширением js и sol. Также обратите внимание на файл truffle-config.js, в нем мы прописываем настройки блокчейн-сети, где будем публиковать и запускать наши смарт-контракты, и при помощи данного файла мы будем подключать наш проект к эмулятору.
В заключение для проверки работы компилятора Node.js произведем компиляцию проекта MetaCoin. Для начала компиляции проекта в окне терминала наберите команду «truffle compile» и нажмите кнопку Enter. Окно VS Code примет вид как на рис. 1.4.9.
Рис. 1.4.9
Обратите внимание на то, что в проекте MetaCoin в разделе EXPLORER появилась папка build. В данной папке мы можем увидеть файлы из папки contracts, откомпилированные в формат json. Позднее мы рассмотрим, как опубликовать эти файлы в эмуляторе сети блокчейн. Успешная компиляция тестовых смарт-контрактов в формат json подтверждает функционирование компилятора Node.js.
Теперь перейдем к установке эмулятора сети блокчейн Ganache.
Урок 5. Установка эмулятора Ganache
Аннотация. В уроке рассматривается установка эмулятора блокчейн сети Ganache [4].
Рассмотрим установку эмулятора блокчейн-сети Ethereum – Ganache. Мы будем использовать его для тестирования наших смарт-контрактов. Для начала скачаем установочный пакет эмулятора. Это можно сделать с официального сайта, расположенного по адресу http://trufflesuite.com/ganache (рис. 1.5.1).
Рис. 1.5.1
Для начала скачивания версии Ganache для Windows необходимо нажать на ссылку DOWNLOAD (WINDOWS) (рис. 1.5.1). Появится окно загрузки установочного пакета (рис. 1.5.2).
Рис. 1.5.2
Нажмите кнопку «Сохранить» (рис. 1.5.2). По окончании скачивания запустите установленный файл. Появится окно начала установки, где необходимо нажать кнопку «Установить» (рис. 1.5.3).
Рис. 1.5.3
После окончании установки эмулятора появится окно с вопросом о сборе статистики. В данном окне нажмите кнопку CONTINUE (рис. 1.5.4).
Рис. 1.5.4
Теперь произведем настройку рабочего окружения. Для начала активируем опцию QUICKSTART. Это автоматическая настройка окружения. Если выбрать опцию NEW WORKSPACE, то появятся расширенные настройки окружения. Если вы продвинутый пользователь, то можно их настроить. Всем остальным я советую предпочесть опцию QUICKSTART (рис. 1.5.5).
Замечание. Мы для простоты остановили свой выбор на опции QUICKSTART. Однако в данном случае все настройки эмулятора будут сброшены при последующем запуске эмулятора. Для текущих задач этого достаточно. Позже мы посмотрим, как создать постоянное окружение.
Рис. 1.5.5
Появится рабочее окно Ganache. Рассмотрим его более подробно. Первое, что мы здесь видим, – это вкладка ACCOUNTS. В центре окна расположено десять криптокошельков с виртуальными 100 ETH на счету (рис. 1.5.7). Их можно добавлять и удалять. Обратите внимание, что в столбце ADDRESS отображается адрес кошелька, а знак ключа предоставляет доступ к адресу и закрытым ключам кошелька – эта информация понадобится нам позже (рис. 1.5.6).
Рис. 1.5.6
В верхней части окна расположены кнопки для открытия других вкладок и текущая информация по состоянию нашей «виртуальной» сети, «Цена газа», «Остаток газа», «Состояние майнинга» и т. д. (рис. 1.5.7).
Рис. 1.5.7
Рассмотрим другие вкладки. Вкладка BLOCKS отображает состояние майнинга (рис. 1.5.8), т. е. сколько блоков было создано вашим компьютером, пока был запущен эмулятор. Блоки будут создаваться в результате каких-либо действий в эмуляторе.
Рис. 1.5.8
Перейдем на вкладку TRANSACTIONS. Здесь отображаются все транзакции в нашей виртуальной сети. Поскольку мы только установили эмулятор и не производили никаких транзакций, эта вкладка будет пуста (рис. 1.5.9).
Рис. 1.5.9
Вкладка CONTRACTS отображает опубликованные в нашей виртуальной сети смарт-контракты, их состояние и действия (рис. 1.5.10). Далее мы будем часто работать с этой вкладкой.
Рис. 1.5.10
На вкладке EVENTS отображаются различные события, происходящие в нашей виртуальной блокчейн-сети (рис. 1.5.11).
Рис. 1.5.11
Ну и наконец, последняя вкладка LOGS. На данной вкладке отображаются все действия и события в нашей блокчейн-сети. Данный «журнал» можно очистить, нажав кнопку CLEAR LOGS, расположенную в верхнем левом углу окна (рис. 1.5.12).
Рис. 1.5.12
Если нажать кнопку с шестеренкой, расположенную в верхнем правом углу (рис. 1.5.12), появится окно с настройками эмулятора (рис. 1.5.13).
Рис. 1.5.13
В данном окне для нас наиболее интересна вкладка «Server». На данной вкладке находятся параметры подключения нашего проекта на Solidity в VS Code к нашей виртуальной блокчейн-сети в Ganache. Для подключения проекта нам понадобятся параметры HOSTNAME, PORT NUMBER и NETWORK ID (рис. 1.5.13).
Урок 6. Подключение тестового проекта в VS Code к эмулятору Ganache и проверка работы эмулятора
Аннотация. В данном уроке мы подключим наш тестовый проект в VS Code к эмулятору блокчейн-сети, опубликуем его в нашей виртуальной сети и протестируем его работу.
Теперь перейдем к подключению нашего тестового проекта, созданного нами ранее в VS Code. Сверните окно Ganache, но не закрывайте его! Запустите VS Code и на панели EXPLORER в нашем тестовом проекте METACOIN откройте файл truffle-config.js, в центре окна отобразится его содержимое (рис. 1.6.1).
Рис. 1.6.1
Файл truffle-config.js содержит настройки подключения проекта к блокчейн-сети. Обратите внимание на то, что почти все строки в этом файле сейчас отключены. Они помечены символами «//», как комментарии. Давайте включим некоторые строки. Удалите символы «//» у строк с номерами 8–12, 18, 19 и 21, как на рис. 1.6.2.
Рис. 1.6.2
Мы можем видеть, что параметры подключения к сети «host» и «port» совпадают с параметрами HOSTNAME и PORT NUMBER из окна настроек Ganache (урок 5, см. рис. 1.5.13). Параметр network_id мы оставили как «*» (любой), хотя его можно было задать как параметр NETWORK ID из окна настроек Ganache, т. е. «5777». Сохраните изменения в файле с настройками, выбрав в оконном меню VS Code пункт File/Save (рис. 1.6.3).
Рис. 1.6.3
После подключения нашего проекта к эмулятору необходимо подключить эмулятор к нашему проекту, т. к. пока проект «видит» эмулятор, а эмулятор «не видит» наш проект. Для подключения эмулятора к проекту в окне Ganache откройте вкладку CONTRACTS. Мы видим, что эмулятор «не видит» наши тестовые смарт-контракты. Для подключения проекта нажмите кнопку LINK TRUFFLE PROJECTS в центре вкладки CONTRACTS (рис. 1.6.4).
Рис. 1.6.4
Появится окно с настройками эмулятора и открытой вкладкой WORKSPACE (рис. 1.6.5).
Рис. 1.6.5
Теперь нажмите кнопку ADD PROJECT (рис. 1.6.5), в появившемся окне выбора файла выберите файл «truffle-config.js» нашего проекта METACOIN и нажмите кнопку «Открыть» (рис. 1.6.6).
Замечание. По умолчанию все проекты VS Code сохраняются в папке «Мои документы / VS Code».
Рис. 1.6.6
Окно настроек Ganache примет вид как на рис. 1.6.7. В поле «TRUFFLE PROJECTS» появится путь к нашему тестовому проекту MetaCoin (рис. 1.6.7).
Рис. 1.6.7
Для сохранения результатов нажмите кнопку SAVE AND RESTART (рис. 1.6.7), расположенную в верхнем правом углу окна настроек. Затем в окне Ganache перейдите на вкладку CONTRACTS. Она примет вид как на рис. 1.6.8.
Рис. 1.6.8
Видно, что наш эмулятор «увидел» наш проект. На вкладке CONTRACTS появились смарт-контракты нашего тестового проекта: ConvertLib, MetaCoin и Migrations. Мы видели файлы этих смарт-контрактов в окне VS Code на панели EXPLORER (рис. 1.6.2). Однако наш проект не опубликован, около наших смарт-контрактов стоит надпись Not Deployed (рис. 1.6.8).
Наш следующий шаг – это публикация нашего тестового проекта в виртуальной блокчейн-сети. Для этого откройте панель терминала и в ней выполните команду публикации проекта в блокчейн-сети «truffle migrate». Окно VS Code примет вид как на рис. 1.6.9.
Рис. 1.6.9
Здесь можно видеть, что наши тестовые смарт-контракты были опубликованы и в окне терминала отобразились параметры публикации. Боле того, если посмотреть на вкладку CONTRACTS эмулятора, то можно видеть, что контракты опубликованы, т. е. перешли в статус DEPLOYED и получили свои адреса (рис. 1.6.10).
Рис. 1.6.10
Замечание. Если на вкладке CONTRACTS нажать на кнопку DEPLOYED, расположенную справа от смарт-контракта, то можно посмотреть статистику его работы.
Если открыть вкладку TRANSACTIONS, то мы увидим список транзакций, которые опубликовали наши тестовые смарт-контракты (рис. 1.6.11).
Рис. 1.6.11
На вкладке BLOCKS можно увидеть, что произошел процесс майнинга шести блоков и было потрачено определенное количество газа (рис. 1.6.12).
Рис. 1.6.12
И наконец, на вкладке ACCOUNTS мы видим, что с нашего первого кошелька было списано 0,02 ETH в качестве оплаты пяти транзакций, т. е. публикации наших трех тестовых смарт-контрактов (рис. 1.6.13).