Книга предназначена для изучения фундаментальных основ блокчейна и решения прикладных задач. С нуля изложены основы криптографии, устройство блокчейна и его основные компоненты: математика, криптография, теория игр. Изложены технические основы самых известных блокчейнов в мире - Bitcoin и Ethereum. Продемонстрировано, как можно запрограммировать блокчейн для разных вариантов использования, не ограничиваясь только криптовалютой. Рассмотрен процесс разработки кода для управления транзакциями на языках JavaScript и Solidity, показано, как самостоятельно создавать и размещать умные контракты. Продемонстрирован полный цикл разработки децентрализованного приложения (DApps).
Author(s): Бикрамадитья Сингхал, Гаутам Дамеджа, Приянсу Сехар Панда
Publisher: BHV-CПб
Year: 2020
Language: Russian
Pages: 290
City: Санкт-Петербург
Об авторах
О техническом рецензенте
Благодарности
Предисловие
ГЛАВА 1. Знакомство с блокчейном
1.1. Происхождение блокчейна
1.2. Что такое блокчейн?
Шаг 1
Шаг 2
Шаг 3
1.3. Централизованные и децентрализованные системы
1.3.1. Централизованные системы
1.3.2. Децентрализованные системы
1.4. Уровни блокчейна
1.4.1. Прикладной уровень (application layer)
1.4.2. Уровень выполнения (execution layer)
1.4.3. Семантический уровень (semantic layer)
1.4.4. Уровень распространения (propagation layer)
1.4.5. Уровень консенсуса (consensus layer)
1.5. Почему блокчейн так важен?
1.5.1. Ограничения централизованных систем
1.5.2. Долго ли ждать блокчейн?
1.6. Практическое применение блокчейна
1.7. Заключение
1.8. Рекомендуемые источники
ГЛАВА 2. Как работает блокчейн?
2.1. Фундаментальные основы блокчейна
2.2. Криптография
2.2.1. Криптография с симметричным ключом
Принцип Керкгоффса и функция XOR
Потоковое и блочное шифрование
Одноразовый блокнот
Стандарт шифрования данных DES
Расширенный стандарт шифрования AES
Расширение ключа AES
Проблемы криптографии с симметричным ключом
2.2.2. Криптографические хэш-функции
Обзор различных хэш-функций
SHA-2
SHA-256 и SHA-512
RIPEMD
SHA-3
Применение хэш-функций
Примеры кода хэш-функций
2.2.3. MAC и НМ АС
2.2.4. Криптография с асимметричным ключом
RSA
Алгоритм цифровой подписи DSA
Криптография на эллиптических кривых
Алгоритм ECDSA
Примеры кода для криптографии с открытым ключом
2.2.5. Обмен ключами по Диффи — Хеллману
2.2.6. Открытый или закрытый ключ?
2.3. Теория игр
2.3.1. Равновесие по Нэшу
2.3.2. Дилемма заключенного
2.3.3. Проблема византийских генералов
2.3.4. Игры с нулевой суммой
2.3.5. Зачем изучать теорию игр?
2.4. Информатика
2.4.1. Хэш-указатель
2.4.2. Дерево Меркла
2.4.3. Сниппеты кода для дерева Меркла
2.5. Обобщаем знания
2.5.1. Свойства блокчейн-решений
Неизменность
Стойкость к подделке
Демократичность
Устойчивость к двойным расходам
Согласованное состояние реестра
Жизнестойкость
Проверяемость
2.5.2. Транзакции и блокчейн
2.5.3. Механизмы распределенного консенсуса
Доказательство работы (PoW)
Доказательство владения долей (PoS)
Алгоритм PBFT
2.6. Применение блокчейна
2.7. Масштабирование блокчейна
2.7.1. Вычисления вне блокчейна
2.7.2. Шардинг
2.8. Заключение
2.9. Рекомендуемые источники
ГЛАВА 3. Как работает Bitcoin?
3.1. История денег
3.2. Появление биткойна
3.2.1. Что такое биткойн?
3.2.2. Работа с биткойнами
3.3. Блокчейн Bitcoin
3.3.1. Структура блока
Дерево Меркла
Уровень сложности
3.3.2. Блок генезиса
3.4. Сеть Bitcoin
3.4.1. Регистрация нового узла в сети
3.4.2. Bitcoin-транзакции
3.4.3. Консенсус и майнинг блоков
3.4.4. Распространение блока
3.5. Промежуточные итоги главы
3.6. Скрипты Bitcoin
3.6.1. Еще раз про транзакции в сети Bitcoin
3.6.2. Скрипты
3.7. Полные узлы или SPV?
3.7.1. Полные узлы
3.7.2. Упрощенная проверка транзакций
3.8. Биткойн-кошельки
3.9. Заключение
3.10. Рекомендуемые источники
ГЛАВА 4. Как работает Ethereum?
4.1. От Bitcoin до Ethereum
4.1.1. Ethereum как блокчейн нового поколения
4.1.2. Философия блокчейна Ethereum
4.2. Введение в блокчейн Ethereum
4.2.1. Структура данных блокчейна Ethereum
4.2.2. Счета Ethereum
Преимущества концепции UTXO
Преимущества концепции счетов
Состояние счета
4.2.3. Применение префиксного trie-дерева
4.2.4. Дерево Меркла — Патриции
4.2.5. RLP-кодирование
4.2.6. Транзакция Ethereum и структура сообщения
4.2.7. Функция перехода состояния Ethereum
4.2.8. Газ и стоимость транзакции
4.3. Умные контракты Ethereum
4.3.1. Создание контракта
4.4. Виртуальная машина Ethereum и выполнение кода
4.5. Экосистема Ethereum
4.5.1. Swarm
4.5.2. Whisper
4.5.3. Децентрализованное приложение (DApp)
4.5.4. Компоненты разработки
4.6. Заключение
4.7. Рекомендуемые источники
ГЛАВА 5. Разработка блокчейн-приложений
5.1. Децентрализованные приложения
5.2. Создание блокчейн-приложений
5.2.1. Программирование приложений Bitcoin и Ethereum
5.2.2. Библиотеки и инструменты
5.3. Взаимодействие с блокчейном Bitcoin
5.3.1. Установка и инициализация библиотеки BitcoinJS в приложении node.js
5.3.2. Создание пары ключей для отправителя и получателя
5.3.3. Получение тестовых биткойнов
5.3.4. Получение неизрасходованных остатков
5.3.5. Подготовка биткойн-транзакции
5.3.6. Подписание входных данных транзакции
5.3.7. Создание НЕХ-кода транзакции
5.3.8. Трансляция транзакции в сеть
5.4. Программное взаимодействие с Ethereum — отправка транзакций
5.4.1. Настройка библиотеки и подключения
5.4.2. Настройка счетов Ethereum
5.4.3. Получение тестового эфира на счет отправителя
5.4.4. Подготовка транзакции Ethereum
5.4.5. Подписание транзакции
5.4.6. Отправка транзакции в сеть Ethereum
5.5. Создание умного контракта Ethereum
5.5.1. Подготовка
5.5.2. Программируем умный контракт
5.5.3. Получение сведений о контракте
5.5.4. Развертывание контракта в сети Ethereum
5.6. Вызов функций умного контракта
5.6.1. Получение ссылки на смарт-контракт
5.6.2. Вызываем функцию умного контракта
5.7. Блокчейн с новой точки зрения
5.8. Публичные и частные блокчейны
5.9. Архитектура децентрализованных приложений
5.9.1. Публичные и локальные узлы
5.9.2. Децентрализованные приложения и серверы
5.10. Заключение
5.11. Рекомендуемые источники
ГЛАВА 6. Разработка приложений Ethereum
6.1. Децентрализованное приложение
6.2. Настройка частной сети Ethereum
6.2.1. Установка клиента GoEthereum
6.2.2. Создание каталога данных geth
6.2.3. Создание учетной записи geth
6.2.4. Создание файла конфигурации genesis.json
6.2.5. Запуск первого узла частной сети
6.2.6. Запуск второго узла частной сети
6.3. Создание умного контракта
6.4. Развертывание умного контракта
6.4.1. Настройка библиотеки web3 и подключения
6.4.2. Развертывание контракта в частной сети
6.5. Клиентское веб-приложение
6.6. Заключение
6.7. Рекомендуемые источники
Приложение. Описание электронного архива
Предметный указатель