Тема № 1 «История появления блокчейн».
Рассматриваются основные этапы возникновения технологии блокчейн, варианты использования и организационно-правовые аспекты применения блокчейн-технологий в современных условиях.
Тема № 2 «Структура связи информации в блокчейн».
Изучаются принципы работы технологии блокчейн, элементы структуры, особенности и отличия от классической базы данных. Рассматриваются перспективы и возможности использования блокчейна.
Тема № 3 «Криптографические основы блокчейн: приватный ключ, адрес, цифровая подпись».
Изучаются вопросы криптографической защиты информации при применении блокчейн-технологий. Рассматриваются необходимые понятия из области криптографии и технологии шифрования (хеш-функция, схемы шифрования с открытым ключом, цифровые подписи) и их применение в блокчейне (майнинг, хеширование и верификация блоков, дерево Меркла).
Тема № 4 «Настройка узла Ethereum (клиент Parity)».
Рассматриваются особенности реализации узлов сети блокчейн в Ethereum – EVM, CLI, типы синхронизации узлов. Изучаются варианты установки Parity для различных ОС, опции базовой настройки клиента через CLI и конфигурационный файл.
Тема № 5 «Сериализация хранения информации в блокчейн на базе Ethereum – RLP кодирование».
Рассматриваются принципы и назначение сериализации данных. Изучается алгоритм кодирования и декодирования данных при помощи RLP.
Тема № 6 «Кошелек на узле: создание аккаунта, баланс, подпись транзакций».
Изучаются практические аспекты использования кошелька на базе Ethereum. Рассматриваются типы аккаунтов, транзакции и их состав, криптографические аспекты создания аккаунта, порядок создания аккаунта и проведения транзакций в Parity.
Тема № 7 «Кошелек в браузере: NiftyWallet/Metamask».
Изучаются возможности взаимодействия с аккаунтом через браузерные расширения для работы с кошельками Ethereum. Изучается настройка и использование плагинов Metamask и NiftyWallet.
Тема № 8 «Базовые операции через JSON-RPC: баланс, блоки, транзакции».
Рассматривается работа с аккаунтом Etherium при помощи протокола JSON-RPC. Изучаются способы вызова методов API и базовые методы API.
Тема № 9 «Консенсус при составлении истории блоков - PoW, PoS, PoA».
Рассматривается функция консенсуса, основные алгоритмы консенсуса в Ethereum и их особенности.
Тема № 10 «Понятие Gas. Вознаграждение».
Рассматривается реализация вознаграждения за майнинг в Etherium. Рассматриваются понятия gas, gas price, gas limit и принципы определения оптимальных параметров gas для различных транзакций.
Тема № 11 «Настройка собственной PoA сети».
Практическое занятие по созданию частной сети c алгоритмом консенсуса PoA в клиенте Parity. Рассматривается создание узлов частной сети, их настройка и соединение, проведение транзакций.
Тема № 12 «Web3 библиотека для доступа к данным узлов Ethereum (Python)».
Рассматриваются вопросы установки и настройки IDE Python, библиотеки web3, написания и запуска приложений с ее использованием. Изучаются базовые методы API web3.
Тема № 13 «Задание QADWallet (Quick and Dirty Wallet) – консольное приложение на Python».
На основе информации из предыдущих тем рассматривается создание консольного приложения Python (QADWallet.py) для выполнения базовых операций в PoA сети.
Тема № 14 «Виртуальная машина Ethereum – развертывание, выполнение контракта, storage».
Изучается развертывание и особенности устройства и работы EVM – виды памяти, типы аккаунтов, выполнение транзакций и смарт-контрактов.
Тема № 15 «Ввведение в язык Solidity – создание простого контракта в среде Remix».
Рассматриваются основы языка Solidity: элементарные типы, операторы, структуры данных, управляющие структуры события, функции, библиотеки, контракты. Изучается установка IDE Remix и работа в нем. Изучается написание контрактов на базовых примерах.
Тема № 16 «Использование среды Remix для отладки контрактов».
Изучается интерфейс и работа отладчика IDE Remix на базовых примерах.
Тема № 17 «Развертывание контрактов в тестовом полигоне c использованием NiftyWallet».
Изучается развертывание и запуск контрактов в тестовой PoA сети при помощи NiftyWallet и Remix.
Тема № 18 «Исследование контракта Ballot с внесением модификаций».
Изучается написание более продвинутых контрактов в среде Remix на примере контракта открытого голосования Ballot.sol и его доработки до контракта слепого аукциона.
Тема № 19 «Application Binary Interface».
Рассматривается назначение ABI, его спецификация и принцип кодирования, взаимодействие с контрактами через ABI.
Тема № 20 «Развертывание и работа с контрактом через библиотеку Web3 (Python)».
Изучается разработка скриптов Python для развертывания контракта и вызова его методов через ABI при помощи библиотеки Web3.
Тема № 21 «Знакомство с типовыми контрактами: ERC20/ERC677, ERC721, CrowdSale, Multisig, Escrow, PaymentChannel, Upgradability, AtomicSwap».
Изучаются основные типы технических стандартов имплементации токенов, их особенности и области использования. Обсуждаются возможности использования токенов, обеспечения надежности и гибкости сделок и безопасности аккаунтов при помощи смарт-контрактов.
Тема № 22 «Фильтры событий».
Изучаются способы поиска в логах событий информации при помощи библиотеки web3.
Тема № 23 «Задание DigitalIdentity – манипуляции с ERC721 из консоли (Python)».
Рассматривается разработка программы на Python для взаимодействия с ERC721.
Тема № 24 «Оптимизация контрактов».
Изучаются затраты gas на базовые операции EVM и хранение данных, методы подбора оптимальных типов и структур хранения данных, методы сжатия переменных и профилирование по gas.
Тема № 25 «Безопасность контрактов».
Рассматриваются практики обеспечения безопасности смарт-контрактов, основные потенциальные уязвимости в коде и методы их устранения.
Тема № 26 «Библиотеки контрактов на примере OpenZeppelin».
Изучается использование библиотек при написании смарт-контрактов на примере установки, настройки и использования библиотеки OpenZeppelin для обеспечения безопасности контрактов.
Тема № 27 «Публичные Ethereum сети (mainnet, testnets, sidechains), faucets».
Изучаются принципы организации и построения публичных сетей Ethereum. Рассматривается функционирование основной сети (mainnet) и сайдчейнов, кранов Ethereum (faucets), характерные особенности и отличия функционирования тестовой копии (testnet) от основной сети.
Тема № 28 «Провайдер доступа к сетям INFURA».
Изучаются принципы использования платформы Infura, ее возможности и поддерживаемые децентрализованные приложения.
Тема № 29 «Etherscan и Blockscout – навигаторы по блокам».
Изучаются возможности обозревателей блоков в сети Ethereum (Etherscan, Blockscout): отслеживание блоков, транзакций, баланса, просмотр статистики сети.
Тема № 30 «Верификация контрактов в Blockscout/Etherscan».
Рассматривается функция верификации (проверки смарт контракта) в обозревателе блоков. Изучаются шаги, необходимые для верификации контракта в Blockscout/Etherscan.
Тема № 31 «Сериализация данных при работе с контрактами».
Рассматривается система вызова смарт-контрактов, структура данных сообщения (поля, принцип сериализация данных при помощи RLP), компиляция и вызов смарт контрактов.
Тема № 32 «Исследование работы контрактов – доступ к данным без ABI».
Рассматриваются возможности доступа к данным контрактов без ABI, базы и списки соответствий функций и подписей.
Тема № 33 «Задание Web приложение (node.js) для доступа к данным контрактов».
Рассматривается реализация интеграции взаимодействия со смарт контрактом в веб-приложение на node.js: доступ к узлу, компиляция и деплой смарт-контракта.