Введение
В настоящее время технологии распределенных реестров (блокчейн-технологии) проникают во многие сферы человеческой деятельности. Изначально технология блокчейн использовалась в финансовой сфере для создания криптовалют. Затем была разработана технология защищенного хранения небольших объемов информации. И наконец, после появления блокчейна Ethereum стало возможно создавать программы в блокчейн-сетях.
Блокчейн Ethereum обладает своей виртуальной машиной – EVM (Ethereum Virtual Machine). Данное программное обеспечение позволяет децентрализованно хранить и запускать программы внутри блокчейн-сети Ethereum. В такой роли блокчейн-сеть работает как некий суперкомпьютер, где программное обеспечение хранится и выполняется на множестве компьютеров (узлов), подключенных к блокчейн-сети.
Программы, выполняемые в EVM, называются смарт-контрактами. Наиболее популярным языком программирования смарт-контрактов в настоящее время является язык программирования Solidity. В основу языка программирования Solidity был положен язык Java Script. Поэтому если вы знаете такие языки программирования, как Java Script, Java или С++, то изучение Solidity будет для вас достаточно простым.
В представленном учебнике рассматривается создание смарт-контрактов для блокчейн-сети Ethereum на языке программирования Solidity в операционной системе Windows. Мы также рассмотрим развертывание окружения для создания и тестирования смарт-контрактов и децентрализованных приложений (DApps). Более того, в завершение курса мы создадим свою собственную блокчейн-сеть.
Весь учебник разбит на шесть недель. Неделя – это глава учебника, посвященная определенному разделу создания смарт-контрактов. Каждая неделя разбита на уроки. Урок – это определенная тема в изучении программирования смарт-контрактов.
Учебник состоит из следующих глав-недель.
• Неделя № 1. Развертывание рабочего окружения («песочницы») для создания и тестирования смарт-контрактов на языке программирования Solidity.
• Неделя № 2. Создание и тестирование простейших смарт-контрактов.
• Неделя № 3. Хранение и обработка данных в распределенных реестрах.
• Неделя № 4. Реализация игровых смарт-контрактов.
• Неделя № 5. Финансовые смарт-контракты.
• Неделя № 6. Интерфейс, тестирование и публикация смарт-контрактов.
Теперь рассмотрим применяемые в учебнике обозначения.
1. В учебнике применяется сквозная нумерация рисунков. То есть «рис. 3.5.1» обозначает первый рисунок пятого урока третьей недели.
2. На рисунках важные места интерфейса выделены красными стрелками.
3. В тексте учебника встречаются замечания, выделенные серым цветом. Замечания – это важная или справочная информация, непосредственно не связанная с темой урока.
4. Некоторые большие блоки кода вынесены в приложение.
5. В тексте ссылки на источники информации обозначаются в квадратных скобках. Например, [4].
Для разработки смарт-контрактов нам необходимо установить следующее программное обеспечение (ПО).
1. Visual Studio Code и расширение для работы с языком программирования Solidity (https://code.visualstudio.com/).
2. Node.js – компилятор JavaScript в машинный код (https://Node.js.org/ru/).
3. Фреймворк Truffle (https://www.trufflesuite.com/truffle).
4. Эмулятор Ganache (https://www.trufflesuite.com/ganache).
5. Криптокошелек MetaMask (https://MetaMask.io/).
6. Офлайн-криптокошелек MyEtherWallet (https://github.com/kvhnuke/etherwallet/releases).
7. Установочный пакет блокчейн-сети Geth (https://geth.ethereum.org/downloads/).
Все описание установки вышеперечисленного ПО описано в уроках первой недели.
Данный учебник предназначен для читателей, желающих освоить разработку смарт-контрактов на языке программирования Solidity. Учебник также подойдет тем, кто планирует развернуть собственную блокчейн-сеть и создавать свои децентрализованные приложения (Dapp).
Для успешного изучения материала, представленного в учебнике, желательно иметь начальные знания по технологии распределенных реестров (технологии блокчейн), желательно иметь базовый опыт программирования в таких языках программирования, как Java, Java Script или С++.
Замечание. В данном учебнике не приведены основы технологии блокчейн и основы программирования, а рассматривается только технология создания смарт-контрактов для блокчейна Ethereum в операционной системе Windows. Для изучения основ технологии блокчейн можно воспользоваться нашим курсом на учебном портале Stepik по ссылке: https://stepik.org/54926.
Также можно сдать аттестационный тест и получить сертификат по основам технологии блокчейн. Аттестационный тест расположен по адресу https://stepik.org/57910.
Электронная версия данного учебного курса размещена на учебном портале Stepik по адресу https://stepik.org/course/60331/syllabus?auth=registration. В конце каждого урока электронной версии добавлен небольшой аттестационный тест, а в конце каждой недели – практические задания для самостоятельного выполнения. Тем, кто сдаст все тесты и выполнит все практические задания, выдается сертификат по разработке смарт-контрактов и распределенных приложений (DApps) для блокчейн-сети Ethereum в операционной системе Windows.
Итак, давайте начнем изучать создание смарт-контрактов для блокчейна Ethereum на языке программирования Solidity.
Неделя № 1. Развертывание рабочего окружения («песочницы») для создания и тестирования смарт-контрактов на языке программирования Solidity
Введение
Эта неделя будет посвящена установке и настройке окружения для создания и тестирования смарт-контрактов для блокчейна Ethereum. В качестве языка программирования будем использовать язык программирования смарт-контрактов Solidity, а в качестве среды разработки – Visual Studio Code (VS Code). Для создания проектов будем использовать фреймворк Truffle, для запуска и тестирования наших смарт-контрактов – эмулятор блокчейна Ethereum Ganache, а в качестве криптокошелька – расширение для браузера MetaMask и офлайн-криптокошелек MyEtherWallet.
Рассмотрим пошагово установку перечисленного ПО. После установки необходимого ПО мы протестируем его работу на тестовом смарт-контракте из фреймворка Truffle.
Урок 1. Установка Visual Studio Code
Аннотация. В данном уроке мы рассмотрим процесс установки среды разработки (IDE) Visual Studio Code [1].
Среда разработки (IDE) Visual Studio Code – это удобный инструмент для написания кода смарт-контрактов. Он позволяет как создавать сам код, так и производить его отладку.
Для начала нам необходимо скачать установочный пакет VS Code. Это можно сделать с официального сайта Visual Studio Code, расположенного по адресу https://code.visualstudio.com/.
Рис. 1.1.1
Для скачивания версии для операционной системы Windows необходимо нажать кнопку Download for Windows (рис. 1.1.1).
В появившемся окне укажите место, куда будет сохранен установочный пакет VS Code, и нажмите кнопку «Сохранить» (рис. 1.1.2).
Рис. 1.1.2
Запустите скачанный установочный пакет. Появится окно с лицензионным соглашением (рис. 1.1.3).
Рис. 1.1.3
Выберите пункт «Я принимаю условия соглашения» и нажмите кнопку «Далее». Появится окно с выбором места установки (рис. 1.1.4).
Рис. 1.1.4
Здесь можно оставить все по умолчанию либо изменить место установки, нажав кнопку «Обзор…». Затем нажмите кнопку «Далее». Появится окно настройки папки в меню «Пуск» (рис. 1.1.5).
Рис. 1.1.5
В данном окне просто нажмите кнопку «Далее». Появится окно с дополнительными настройками установки (рис. 1.1.6).
Рис. 1.1.6
Установите настройки как показано на рис. 1.1.6 и нажмите кнопку «Далее». Появится окно (рис. 1.1.7).
Рис. 1.1.7
Нажмите кнопку «Установить», начнется процесс установки. Затем появится окно завершения установки (рис. 1.1.8).
Рис. 1.1.8
Отключите опцию «Запустить Visual Studio Code» и нажмите кнопку «Завершить». Перезагрузите компьютер! На этом установка VS Code завершена. Перейдем к установке расширения для работы с Solidity.
Урок 2. Установка расширения Visual Studio Code для работы с Solidity
Аннотация. В данном уроке мы рассмотрим, как установить в VS Code расширение для работы с языком программирования смарт-контрактов Solidity [1].
Изначально VS Code не поддерживает язык программирования смарт-контрактов, поэтому нам необходимо установить специальное расширение.
Запустите Visual Studio Code, дважды щелкнув по значку на «Рабочем столе» или в меню «Пуск» (рис. 1.2.1).
Рис. 1.2.1
Откроется окно VS Code, где на панели слева необходимо открыть раздел EXTENSIONS: MARKETPLACE («Магазин расширений»), щелкнув по нему (рис. 1.2.2).
Рис. 1.2.2
В строке поиска панели EXTENSIONS: MARKETPLACE набираем слово Solidity и нажимаем на клавиатуре клавишу «Enter». В результатах поиска выбираем первый пункт «solidity… Juan Blanco» (может быть не первым). Затем на вкладке Extension: solidity щелкаем по ссылке Install (рис. 1.2.3).
Рис. 1.2.3
Начнется установка расширения. По окончании установки вкладка Extension: solidity будет выглядеть как на рис. 1.2.4.
Рис. 1.2.4
На этом мы завершаем установку расширения VS Code для работы с Solidity и переходим к установке компилятора Node.js. Закройте VS Code!
Урок 3. Установка компилятора Node.js
Аннотация. В данном уроке рассматривается установка компилятора смарт-контрактов Node.js [2].
Мы будем создавать наши смарт-контракты на языке программирования Solidity, похожем на JavaScript. Но блокчейн Ethereum не понимает JavaScript. Нам необходимо конвертировать наш смарт-контракт на Solidity в машинный (бинарный) код. Для этого мы будем использовать компилятор Node.js.
Для установки компилятора в браузере откройте сайт https://Node.js.org/ru/ (рис. 1.3.1).
Рис. 1.3.1
На странице Node.js нажмите ссылку «10.16.3 LTS» для загрузки стабильной версии компилятора или ссылку «12.11.1 Текущая» для загрузки последней версии компилятора. После окончания загрузки установочного пакета его необходимо запустить. Появится окно начала установки (рис. 1.3.2).
Рис. 1.3.2
После нажатия кнопки Next появится окно с лицензионным соглашением (рис. 1.3.3).
Рис. 1.3.3
Включите переключатель «I agree the terms…» и нажмите кнопку Next. Появится окно выбора папки для установки компилятора (рис. 1.3.4).
Рис. 1.3.4
Здесь можно задать папку, нажав кнопку «Change…». Затем нажмите кнопку Next. Появится окно выбора устанавливаемых компонентов компилятора (рис. 1.3.5).
Рис. 1.3.5
Оставьте эти настройки без изменений и нажмите кнопку Next. Появится окно начала установки (рис. 1.3.6).
Рис. 1.3.6
В данном окне нажмите кнопку Install. Начнется процесс установки компилятора. По окончании установки появится финальное окно (рис. 1.3.7).
Рис. 1.3.7
Для завершения установки компилятора Node.js нажмите кнопку Finish.
Урок 4. Тестирование Node.js и подключение фреймворка Truffle
Аннотация. В данном уроке мы протестируем работу компилятора Node.js, а также установим и протестируем фреймворк Truffle [3].
Теперь протестируем работу компилятора. Запустите VS Code от имени администратора. Для этого на «Рабочем столе» или в меню «Пуск» щёлкните правой кнопкой мыши по значку Visual Studio Code и в появившемся меню выберите пункт «Запуск от имени администратора» (рис. 4.1).
Рис. 1.4.1
В появившемся окне VS Code откроем терминал. Терминал нам будет необходим для ввода различных команд. Например, для управления компилятором и другими инструментами.
Замечание. В качестве альтернативы терминалу в VC Code можно использовать утилиту Windows PowerShell (впрочем, она и запускается внутри VC Code в виде терминала).
Для того чтобы запустить терминал в оконном меню VS Code, выберите пункт Terminal / New Terminal (рис. 1.4.2).