Второе издание бестселлера “Осваиваем биткоин. Программирование блокчейна” (Автор Андреас М. Антонопулос) включает подробное введение в самую известную криптовалюту – биткойн, а также в лежащую в ее основе технологию блокчейна. Приведено описание технических основ биткойна и других валют, описание децентрализованной сети биткойн, пиринговой архитектуры, жизненного цикла транзакций и принципов обеспечения безопасности. Показаны методики разработки блокчейн-приложений с многочисленными примерами кода.
Книга будет интересна разработчикам, инженерам, архитекторам программных и прочих систем, а также всем, кто хочет глубже узнать о криптовалютах и блокчейн-технологиях.
Читать онлайн
Содержание книги “Осваиваем биткоин. Программирование блокчейна” (Автор Андреас М. Антонопулос)
Предисловие.
Благодарности.
Глава 1. Введение.
Что такое биткойн?
История создания биткойна.
Варианты использования биткойнов, пользователи и их истории.
Начинаем обучение.
- Выбор биткойнкошелька.
- Сразу переходим к делу.
- Получаем свой первый биткойн.
- Поиск информации о текущей стоимости биткойна.
- Отправка и получение биткойна.
Глава 2. Как работает биткойн.
Транзакции, блоки, майнинг и блокчейн.
- Общий обзор биткойнсистемы.
- Покупка чашки кофе.
Транзакции биткойна.
- Входные и выходные данные транзакции.
- Цепочки транзакций.
- Получение сдачи.
- Общие формы транзакций.
Создание транзакции.
Майнинг биткойнов.
Майнинг транзакций в блоках.
Расходование транзакции.
Глава 3. Bicoin Core: эталонная реализация.
Среда разработки биткойна.
Компиляция Bitcoin Core из исходных кодов.
- Выбор версии Bitcoin Core.
- Конфигурирование компилируемой версии Bitcoin Core.
- Сборка выполняемых файлов Bitcoin Core.
Запуск узла Bitcoin Core.
- Самый первый запуск Bitcoin Core.
- Конфигурирование узла Bitcoin Core.
Прикладной программный интерфейс (API) Bitcoin Core.
- Получение информации о состоянии клиента Bitcoin Core.
- Обработка и расшифровка транзакций.
- Исследование блоков.
- Использование программного интерфейса Bitcoin Core.
Прочие клиенты, библиотеки и инструментальные пакеты.
- C/C++.
- JavaScript.
- Java.
- Python.
- Ruby.
- Go.
- Rust.
- C#.
- ObjectiveC.
Глава 4. Ключи и адреса
Введение.
- Криптография с открытым ключом и криптовалюта.
- Секретный ключ и открытый ключ.
- Секретные ключи.
- Открытые ключи.
- Криптография с использованием эллиптических кривых.
- Генерация открытого ключа.
Биткойнадреса.
- Форматы кодирования Base58 и Base58Check.
- Форматы ключей.
Реализация ключей и адресов на языке Python.
Усовершенствованные ключи и адреса.
- Зашифрованные секретные ключи (BIP38).
- Адреса скриптов PaytoScript Hash (P2SH) и адреса мультиподписей.
- «Престижные» адреса.
Глава 5. Кошельки.
Общий обзор технологии кошельков.
- Недетерминированные кошельки (со случайным выбором ключей).
- Детерминированные кошельки (с источником).
- HDкошельки (BIP32/BIP44).
- Источники и мнемонические коды (BIP39).
- Оптимальные практические методики технологии кошельков.
- Практическое использование биткойнкошелька.
Подробности технологии кошельков.
- Мнемонические кодовые слова (BIP39).
- Создание HDкошелька из источника.
- Использование расширяемого открытого ключа в вебмагазине.
Глава 6. Транзакции.
Введение.
Транзакции в подробностях.
Входные и выходные данные транзакции.
- Выходные данные транзакции.
- Входные данные транзакции.
- Оплата транзакций.
- Добавление сумм оплаты в транзакции.
Скрипты транзакций и язык Script.
- Неполнота по Тьюрингу.
- Верификация без сохранения состояния.
- Формирование структуры скрипта (Lock + Unlock).
- Скрипт PaytoPublicKeyHash (P2PKH).
Цифровые подписи (ECDSA).
- Как работают цифровые подписи.
- Проверка цифровых подписей.
- Типы хэшзначений подписи (SIGHASH).
- Математическое обоснование алгоритма ECDSA.
- Важность фактора случайности в цифровых подписях.
Биткойнадреса, балансы и прочие абстракции.
Глава 7. Более сложные транзакции и скрипты.
Введение.
Мультиподписи.
Скрипт PaytoScriptHash (P2SH)..
- Адреса P2SH.
- Преимущества механизма P2SH.
- Погашающий скрипт и проверка корректности.
Запись выходных данных (RETURN).
- Блокировки по времени (timelocks).
- Блокирование транзакции по времени (nLocktime).
- Check Lock Time Verify (CLTV).
- Относительные блокировки по времени.
- Относительные блокировки по времени, устанавливаемые полем nSequence.
- Относительные блокировки по времени с применением параметра CSV.
- MedianTimePast.
- Защита блокировок по времени от нелегального получения отчислений.
Скрипты с управлением потоком выполнения (условные выражения).
- Условные выражения с применением оператора VERIFY.
- Использование средств управления потоком выполнения в скриптах.
Пример сложного скрипта.
Глава 8. Сеть биткойна.
Архитектура пиринговой сети.
Типы и роли узлов.
Расширенная биткойнсеть.
Сеть Bitcoin Relay Network.
Обследование биткойнсети.
Полноценные узлы.
Взаимная «инвентаризация».
Узлы с упрощенной проверкой платежей (SPV).
Фильтр Блума.
- Как работает фильтр Блума.
Как SPVузлы применяют фильтры Блума.
SPVузлы и приватность.
Зашифрованные и защищенные соединения.
- Tor Transport.
- Аутентификация и шифрование в пиринговой сети.
Пулы транзакций.
Глава 9. Блокчейн.
Введение.
Структура блока.
Заголовок блока.
Идентификаторы блока: хэшзначение заголовка блока и высота блока.
Первичный блок.
Связывание блоков в структуру данных блокчейна.
Деревья Меркле.
Деревья Меркле и упрощенная верификация платежей (SPV).
Тестовые структуры блокчейна в биткойнсистеме.
- Testnet – «песочница» для тестирования биткойнов.
- Segnet – тестовая сеть для функции Segregated Witness.
- Regtest – локальная структура данных блокчейна.
Использование тестовых структур блокчейна для разработки.
Глава 10. Майнинг и консенсус.
Введение.
- Экономика биткойна и создание валюты.
Децентрализованный консенсус.
Независимая верификация транзакций.
Узлы майнинга.
Объединение транзакций в блоки.
- Coinbase-транзакция.
- Вознаграждение coinbase и отчисления за транзакции.
- Структура coinbaseтранзакции.
- Данные coinbase.
Формирование заголовка блока.
Майнинг блока.
- Алгоритм доказательства выполнения работы (PoW).
- Представление целевого значения.
- Изменение целевого значения для регулирования уровня сложности.
Успешный майнинг блока.
Проверка корректности нового блока.
Формирование и выбор цепочек блоков.
- Разветвления структуры данных блокчейна.
Майнинг и конкуренция в хэшвычислениях.
- Решение с расширением диапазона дополнительных значений nonce.
- Пулы майнинга.
Атаки на механизм консенсуса.
Изменение правил консенсуса.
- Устойчивые разветвления.
- Устойчивые разветвления: ПО, сеть, майнинг и цепочка.
- Разделение майнеров и уровень сложности.
- Спорные устойчивые разветвления.
- Неустойчивые разветвления.
- Критика неустойчивых разветвлений.
Оповещение о неустойчивом разветвлении с помощью поля версии блока.
- Оповещение и активация по стандарту BIP34.
- Оповещение и активация по стандарту BIP9.
Разработка программного обеспечения для механизма консенсуса.
Глава 11. Обеспечение безопасности биткойн-системы.
Основы обеспечения безопасности.
- Разработка защищенных биткойнсистем.
- Основа доверительных отношений.
Наиболее эффективные практические методики защиты пользователей.
- Физические средства хранения биткойнов.
- Аппаратные кошельки.
- Разумный баланс защиты и рисков.
- Диверсификация рисков.
- Мультиподпись и управление.
- Жизнеспособность.
Резюме.
Глава 12. Приложения блокчейна.
Введение.
Базовые элементы.
Приложения, создаваемые из базовых элементов.
Цветные монеты.
- Использование цветных монет.
- Выпуск цветных монет.
- Транзакции цветных монет.
Counterparty.
Каналы платежей и каналы состояний.
- Каналы состояний – основные концепции и терминология.
- Пример простого канала платежей.
- Создание каналов без доверительных отношений.
- Асимметричные отменяемые обязательства.
- Контракты Hash Time Lock Contracts (HTLC).
Каналы платежа с маршрутизацией (Lightning Network).
- Простой пример работы Lightning Network.
- Механизмы передачи и маршрутизации в сети Lightning Network.
- Преимущества сети Lightning Network.
Резюме.
Приложение А. Статья о биткойне Сатоши Накамото.
Биткойн – пиринговая система электронных денег.
- Введение.
- Транзакции.
- Сервер меток времени.
- Доказательство выполнения работы.
- Сеть.
- Стимул.
- Требуемое дисковое пространство.
- Упрощенная верификация платежей.
- Объединение и разделение сумм транзакций.
- Приватность.
- Вычисления.
- Резюме.
- Ссылки.
Лицензия.
Приложение Б. Операторы, константы и символы скриптового языка для транзакций Script
Приложение В. Предложения по улучшению биткойна (Bitcoin Improvement Proposals).
Приложение Г. Функция Segregated Witness (Segwit).
Зачем нужен механизм Segregated Witness.
Как работает механизм Segregated Witness.
Неустойчивое разветвление (обратная совместимость).
Примеры использования выходных данных Segregated Witness в транзакциях.
- Обновление ПО для использования Segregated Witness.
- Новый алгоритм подписи в механизме Segregated Witness.
- Экономические стимулы для использования механизма
- Segregated Witness.
Приложение Д. Bitcore.
Список функциональных возможностей Bitcore.
Примеры использования библиотеки Bitcore.
- Предварительные сведения.
- Примеры кошелька, использующего bitcorelib.
Приложение Е. Библиотека pycoin, утилиты ku и tx.
Утилита для работы с ключами ku (Key Utility).
- Утилита для работы с транзакциями (tx).
Приложение Ж. Команды проводника биткойна bx.
Примеры практического использования команд проводника bx.
Предметный указатель.
Об авторе.