Литмир - Электронная Библиотека
Содержание  
A
A
Ethereum: работа с сетью, смарт-контракты и распределенные приложения - i_089.jpg

Рис. 1.8.11

Итак, мы подключили криптокошелек MyEtherWallet к эмулятору Ganache и проверили его работу. Теперь мы можем использовать MyEtherWallet для тестирования смарт-контрактов.

Заключение

На этом мы заканчиваем первую неделю нашего курса. В рамках недели мы создали рабочее окружение – «песочницу» – для создания и тестирования смарт-контрактов в блокчейн-сети Ethereum. В следующем модуле мы рассмотрим технологии создания простейших смарт-контрактов с помощью языка программирования Solidity.

Замечание. Электронная версия данного учебного курса размещена на учебном портале Stepik по адресу https://stepik.org/60331. В конце каждого урока электронной версии добавлен небольшой аттестационный тест, а в конце каждой недели – практические задания для самостоятельного выполнения. Тем, кто сдаст все тесты и выполнит все практические задания, выдается сертификат по разработке смарт-контрактов и распределенных приложений (DApps) для блокчейн-сети Ethereum в операционной системе Windows.

Неделя № 2. Создание и тестирование простейших смарт-контрактов

Введение

В этой неделе мы рассмотрим состав проекта языка программирования смарт-контрактов Solidity [8], [9], создание и управление проектом, ознакомимся с основами синтаксиса языка Solidity и структурой смарт-контракта, а также разберем создание и запуск простейших смарт-контрактов.

Урок 1. Структура проекта Solidity в VS Code

Аннотация. В данном уроке мы рассмотрим файловую структуру проекта языка программирования смарт-контрактов Solidity. Будут рассмотрены все папки и файлы, входящие в проект, и описано их назначение.

Для начала рассмотрим более подробно файловую структуру проекта на языке программирования смарт-контрактов Solidity.

В языке программирования Solidity главная программная единица – это смарт-контракт. Смарт-контракт – это аналог программы в обычных языках программирования, именно смарт-контракт компилируется, публикуется и выполняется в блокчейн-сети Ethereum.

Перед тем как создавать смарт-контракты, нам необходимо создать проект в Truffle. Проект – это набор файлов и папок, необходимый для создания, публикации и выполнения смарт-контрактов. Давайте рассмотрим структуру проекта MetaCoin, который мы создали в предыдущих уроках.

Запустите VS Code и откройте проект MetaCoin. Для этого в окне VS Code на панели Explorer нажмите кнопку Open Folder (рис. 2.1.1).

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

Рис. 2.1.1

Появится окно выбора папки с проектом (рис. 2.1.2).

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

Рис. 2.1.2

Выберите папку «MetaCoin» и нажмите кнопку «Выбор папки».

Замечание. По умолчанию VS Code создает проекты в папке «Документы / VS Code».

После открытия проекта MetaCoin окно VS Code примет вид как на рис. 2.1.3.

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

Рис. 2.1.3

На панели EXPLORER мы видим файловую структуру проекта MetaCoin. Давайте рассмотрим структуру подробнее. Проект содержит четыре папки: build, contracts, migrations и test. Рассмотрим назначение этих папок.

Для начала рассмотрим папку contracts. Это самая главная папка проекта, в ней находятся файлы с кодом наших смарт-контрактов. Это файлы с расширением sol. В нашем случае в проекте MetaCoin в данной папке мы видим три файла: ConvertLib.sol, MetaCoin.sol и Migrations.sol. Хотелось бы отметить файл Migrations.sol (рис. 2.1.4).

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

Рис. 2.1.4

Этот файл предназначен для публикации других смарт-контрактов проекта в сети Ethereum. Изменять файл Migrations.sol не рекомендуется. Остальные два файла реализуют логику проекта.

Теперь перейдем к папке build. В папке build располагаются файлы с расширением json – это откомпилированные в формат json смарт-контракты. Их компиляция была рассмотрена в предыдущих уроках. Они содержат бинарный код смарт-контракта, который понимает сеть Ethereum, а также входные и выходные параметры, необходимые для запуска смарт-контракта (рис. 2.1.5).

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

Рис. 2.1.5

Папка migrations содержит js-файлы (файлы в формате JavaScript). Они предназначены для публикации смарт-контрактов проекта в сеть Ethereum. Все файлы в папке migrations должны начинаться с цифры. Первым файлом должен быть файл 1_initial_migrations.js (рис. 2.1.6).

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

Рис. 2.1.6

Этот файл публикует в сети файл Migration.json, который инициирует публикацию других смарт-контрактов проекта. Второй js-файл предназначен для публикации остальных двух смарт-контрактов (рис. 2.1.7).

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

Рис. 2.1.7.

Замечание. В представленном на рис. 2.1.6 файле осуществляется публикация сразу двух смарт-контрактов. Однако для упрощения понимания проекта рекомендуется создавать отдельный публикационный js-файл для каждого смарт-контракта. Поэтому так мы будем поступать в наших проектах позже.

Наконец, рассмотрим папку test. В папке test располагаются смарт-контракты для отладки нашего проекта. Важным отличием смарт-контрактов от обычных программ является тот факт, что их невозможно изменить после публикации в сети блокчейн. Поэтому столь важное внимание уделяется отладке смарт-контрактов. В рассматриваемой папке мы видим два файла – sol- и js-файлы. Смарт-контракт с расширением sol содержит код на языке Solidity, предназначенный для тестирования проекта (рис. 2.1.8).

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

Рис. 2.1.8

Файл с расширением js – это файл, который содержит код на языке JavaScript. Он предназначен для выполнения тестового смарт-контракта фреймворком Truffle (рис. 2.1.9).

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

Рис. 2.1.9

В заключение урока кроме четырех рассмотренных выше папок в проекте можно заметить еще два файла – truffle-config.js и LICENSE. Файл truffle-config.js мы рассматривали в предыдущих уроках. Он предназначен для подключения проекта к серверу сети Ethereum или к эмулятору сети, например Ganache. Файл LICENSE – это обычный текстовый файл с лицензионным соглашением фреймворка Truffle (рис. 2.1.10).

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

Рис. 2.1.10

Замечание. В проекте также можно заметить файлы с именем .placeholder. Это служебные файлы для системы управления версиями Git. Эти файлы можно удалить.

На этом мы заканчиваем рассмотрение файловой структуры проекта Solidity и переходим к созданию нашего проекта для создания простых смарт-контрактов. Проект MetaCoin можно закрыть, выбрав в оконном меню VS Code пункт File / Close Folder.

7
{"b":"696778","o":1}