Осваиваем Биткойн. Программирование открытого блокчейна
Покупка
Новинка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Год издания: 2024
Кол-во страниц: 388
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Дополнительное профессиональное образование
ISBN: 978-6-01810-344-5
Артикул: 856520.01.99
Третье издание бестселлера включает подробное введение в самую известную криптовалюту — биткойн, а также в лежащую в ее основе технологию блокчейн. Приведено описание технических основ биткойна и других валют, описание децентрализованной сети Биткойн, пиринговой архитектуры, жизненного цикла транзакций и принципов обеспечения безопасности. Показаны методики разработки блокчейн-приложений с многочисленными примерами кода.
Книга будет интересна разработчикам, инженерам, архитекторам программных и прочих систем, а также всем, кто хочет глубже узнать о криптовалютах и блокчейн-технологиях.
- Полная коллекция по информатике и вычислительной технике
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Программирование и алгоритмизация
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Андреас М. Антонопулос и Дэвид А. Хардинг Осваиваем Биткойн
Andreas M. Antonopoulos and David A. Harding Mastering Bitcoin Programming the Open Blockchain THIRD EDITION Beijing • Boston • Farnham • Sebastopol • Tokyo
Андреас М. Антонопулос и Дэвид А. Хардинг Осваиваем Биткойн Программирование открытого блокчейна ТРЕТЬЕ ИЗДАНИЕ 2024
УДК 004.738.5:336.74Bitcoin ББК 32.971.35+65.262.6с А72 Антонопулос А. М., Хардинг Д. А. А72 Осваиваем Биткойн. 3-е изд. / пер. с анг. В. И. Бахура. – М.: Book.kz, 2024. – 386 с.: ил. ISBN 978-6-01810-344-5 Третье издание бестселлера включает подробное введение в самую известную криптовалюту – биткойн, а также в лежащую в ее основе технологию блокчейн. Приведено описание технических основ биткойна и других валют, описание децентрализованной сети Биткойн, пиринговой архитектуры, жизненного цикла транз-акций и принципов обеспечения безопасности. Показаны методики разработки блокчейн-приложений с многочисленными примерами кода. Книга будет интересна разработчикам, инженерам, архитекторам программных и прочих систем, а также всем, кто хочет глубже узнать о криптовалютах и блокчейн-технологиях. УДК 004.738.5:336.74Bitcoin ББК 32.971.35+65.262.6с Authorized Russian translation of the English edition of Mastering Bitcoin, 3E ISBN 9781098150099 © 2024 David Harding. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978-1-098-15009-9 (анг.) Copyright © 2024 David Harding. ISBN 978-6-01810-344-5 (казах.) © Оформление, перевод на русский язык, издание, Books.kz, 2024
Посвящается моей маме Терезе (1946–2017). Она научила меня любить книги и не принимать на веру мнение авторитетов. Спасибо, мама. – Андреас Для Аманды. Только после встречи с тобой я стал жить в раю. – Дейв
Содержание От издательства..................................................................................................13 Предисловие.......................................................................................................15 Об авторах...........................................................................................................25 Колофон................................................................................................................27 Глава 1. Введение...............................................................................................28 История Биткойна.................................................................................................31 Приступая к работе................................................................................................32 Выбор биткойн-кошелька.................................................................................32 Быстрый старт....................................................................................................35 Коды восстановления........................................................................................35 Биткойн-адреса.................................................................................................36 Получение биткойнов.......................................................................................37 Получение вашего первого биткойна..............................................................37 Определение актуальной цены биткойна.......................................................38 Отправка и получение биткойнов....................................................................39 Глава 2. Как устроен Биткойн..........................................................................42 Общие сведения о Биткойне.................................................................................42 Покупка в интернет-магазине..............................................................................43 Транзакции биткойна...........................................................................................44 Входные и выходные данные транзакций.......................................................45 Цепочки транзакций.........................................................................................45 Выдача сдачи.....................................................................................................46 Выбор номинала монет.....................................................................................47 Типичные формы транзакций..........................................................................47 Построение транзакции........................................................................................48 Получение правильных входных данных........................................................49 Создание выходов.............................................................................................49 Добавление транзакции в блокчейн................................................................50 Майнинг биткойнов..............................................................................................51 Расходование транзакции.....................................................................................54 Глава 3. Bitcoin Core: эталонная реализация..............................................56 От Биткойна к Bitcoin Core....................................................................................56 Среда разработки Биткойна.................................................................................58 Компиляция Bitcoin Core из исходного кода.......................................................58
Содержание 7 Выбор версии Bitcoin Core................................................................................59 Настройка сборки Bitcoin Core..........................................................................60 Сборка исполняемых файлов Bitcoin Core.......................................................62 Запуск узла Bitcoin Core........................................................................................63 Настройка узла Bitcoin Core..................................................................................64 API Bitcoin Core......................................................................................................68 Сбор информации о состоянии Bitcoin Core....................................................69 Исследование и декодирование транзакций...................................................70 Изучение блоков................................................................................................72 Использование программного интерфейса Bitcoin Core................................73 Альтернативные клиенты, библиотеки и инструментарии...............................76 C/C++...................................................................................................................77 JavaScript............................................................................................................77 Java......................................................................................................................77 Python.....................................................................................................................77 Go........................................................................................................................77 Rust.....................................................................................................................77 Scala....................................................................................................................77 C#........................................................................................................................78 Глава 4. Ключи и адреса...................................................................................79 Криптография с открытым ключом.....................................................................80 Секретные ключи..............................................................................................81 Объяснение криптографии на эллиптических кривых..................................82 Открытые ключи...............................................................................................85 Скрипты выхода и входа.......................................................................................86 IP-адреса: исходный адрес для Биткойна (P2PK)................................................87 Устаревшие адреса для P2PKH..............................................................................88 Кодирование Base58check.....................................................................................91 Сжатые открытые ключи......................................................................................93 Устаревший скрипт Pay to Script Hash (P2SH)......................................................96 Адреса Bech32........................................................................................................98 Проблемы с адресами Bech32.........................................................................101 Bech32m............................................................................................................101 Форматы секретных ключей...........................................................................105 Сжатые секретные ключи...............................................................................106 Расширенные ключи и адреса............................................................................107 Престижные адреса.........................................................................................107 Генерация престижных адресов.....................................................................108 Бумажные кошельки.......................................................................................110 Глава 5. Восстановление кошелька.............................................................112 Независимая генерация ключей........................................................................112 Детерминированная генерация ключей........................................................113
8 Содержание Деривация открытого дочернего ключа........................................................114 Иерархическая детерминированная (HD) генерация ключей (BIP32).........116 Seed-числа и коды восстановления................................................................117 Сохранение данных, не связанных с ключами..............................................121 Резервное копирование путей извлечения ключей......................................122 Подробнее о технологическом стеке кошелька.................................................124 Коды восстановления BIP39............................................................................125 Создание HD-кошелька из seed-числа...........................................................130 Использование расширенного открытого ключа в интернет-магазине.....136 Глава 6. Транзакции.........................................................................................142 Сериализованная транзакция Биткойна...........................................................142 Версия...................................................................................................................144 Расширенные маркер и флаг..........................................................................145 Входы....................................................................................................................145 Длина списка входных данных транзакции..................................................145 Поле Outpoint...................................................................................................147 Поле Input Script..............................................................................................149 Поле Sequence..................................................................................................149 Выходы.................................................................................................................153 Количество выходов........................................................................................153 Сумма...............................................................................................................153 Скрипты выхода..............................................................................................155 Структура свидетеля.......................................................................................156 Циклические зависимости..............................................................................157 Изменение транзакций третьей стороной....................................................157 Изменение транзакций второй стороной......................................................158 Сегрегированный свидетель (Segregated Witness)........................................159 Сериализация структуры свидетеля..............................................................161 Время блокировки...............................................................................................161 Транзакции coinbase............................................................................................162 Объем данных транзакции: weight и vbyte........................................................163 Унаследованная сериализация...........................................................................164 Глава 7. Авторизация и аутентификация....................................................166 Скрипты транзакций и язык скриптов..............................................................166 Неполнота по Тьюрингу..................................................................................167 Верификация без сохранения состояния.......................................................167 Структура скриптов.........................................................................................167 Скрипт Pay to Public Key Hash (P2PKH)..........................................................171 Скриптовые мультиподписи..............................................................................172 Нестандартное выполнение CHECKMULTISIG...............................................174 Скрипт Pay to Script Hash (P2SH)........................................................................176 Адреса P2SH.....................................................................................................178
Содержание 9 Преимущества P2SH........................................................................................178 Скрипт погашения и проверка корректности...............................................178 Выход записи данных (OP_RETURN)..................................................................179 Ограничения времени блокировки транзакций...........................................180 Проверка времени блокировки (OP_CLTV)....................................................181 Относительные блокировки по времени.......................................................183 Относительные блокировки по времени с OP_CSV......................................183 Скрипты с контролем потока (условные предложения)...................................184 Условные предложения с оператором VERIFY..............................................185 Использование управления потоком в скриптах..........................................186 Пример сложного скрипта..................................................................................187 Примеры выхода сегрегированного свидетеля и транзакций.....................189 Обновление до Segregated Witness.................................................................192 Деревья альтернативных скриптов (Merklized Alternative Script Trees, MAST)....................................................................................................................194 Платеж Pay to Contract (P2C)...............................................................................198 Мультиподписи без скриптов и подписи с порогом.........................................199 Главный корень (Taproot) ...................................................................................200 Tapscript................................................................................................................203 Глава 8. Цифровые подписи..........................................................................204 Принцип работы цифровых подписей...............................................................204 Создание цифровой подписи.........................................................................205 Верификация подписи....................................................................................205 Типы хеширования подписи (SIGHASH)........................................................205 Подписи Шнорра.................................................................................................208 Сериализация подписей Шнорра...................................................................214 Мультиподписи без скриптов на основе алгоритма Шнорра.......................214 Пороговые подписи без скриптов на основе алгоритма Шнорра................216 Подписи ECDSA....................................................................................................219 Алгоритм ECDSA..................................................................................................220 Сериализация подписей ECDSA (DER)...........................................................220 Важность случайности в подписях.....................................................................221 Новый алгоритм подписи Segregated Witness...................................................222 Глава 9. Комиссия за транзакцию................................................................223 Кто платит комиссию за транзакцию?...............................................................224 Комиссии и ставки комиссий.............................................................................225 Оценка приемлемых ставок комиссии..............................................................225 Повышение комиссии Replace By Fee (RBF).......................................................226 Повышение комиссии Child Pays for Parent (CPFP)...........................................229 Пакетная пересылка............................................................................................230 Закрепление транзакций....................................................................................231 Исключение для CPFP и якорные выходы.........................................................233
10 Содержание Добавление комиссии в транзакции..................................................................234 Блокировка по времени для защиты от перехвата комиссии..........................235 Глава 10. Сеть Биткойн....................................................................................236 Типы и роли узлов...............................................................................................237 Сеть ......................................................................................................................237 Компактная передача блоков.............................................................................237 Частные сети для передачи блоков....................................................................240 Обнаружение сети...............................................................................................241 Полные узлы........................................................................................................245 Обмен «запасами»...............................................................................................246 Облегченные клиенты.........................................................................................247 Фильтры Блума....................................................................................................249 Принцип работы фильтров Блума..................................................................250 Использование фильтров Блума облегченными клиентами.......................253 Компактные фильтры блоков.............................................................................255 Кодированные множества Голомба–Райса (GCS)..........................................256 Какие данные включать в фильтр блоков......................................................257 Загрузка фильтров блоков от нескольких пиров...........................................258 Экономия трафика за счет кодирования с потерями...................................259 Использование компактных фильтров блоков.............................................260 Облегченные клиенты и конфиденциальность................................................260 Соединения с шифрованием и аутентификацией............................................261 Мемпулы и орфанные пулы................................................................................261 Глава 11. Блокчейн...........................................................................................263 Структура блока...................................................................................................264 Заголовок блока...................................................................................................265 Идентификаторы блока: хеш заголовка блока и высота блока........................265 Блок генезиса.......................................................................................................266 Взаимосвязь блоков в блокчейне.......................................................................267 Деревья Меркла...................................................................................................268 Деревья Меркла и облегченные клиенты..........................................................273 Тестовые блокчейны Биткойна...........................................................................273 Testnet: площадка для тестирования Биткойна............................................274 Signet: доказательство полномочий сети testnet..........................................275 Regtest: локальный блокчейн.........................................................................277 Использование тестовых блокчейнов для разработки.....................................278 Глава 12. Майнинг и консенсус.....................................................................280 Экономика Биткойна и создание денежных средств........................................282 Децентрализованный консенсус........................................................................284 Независимая верификация транзакций............................................................285 Узлы майнинга.....................................................................................................286