В настоящее время технологии распределенных реестров (блокчейн-технологии) проникают во многие сферы человеческой деятельности. Изначально технология блокчейн использовалась в финансовой сфере для создания криптовалют. Затем была разработана технология защищенного хранения небольших объемов информации. И наконец, после появления блокчейна 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