Осваиваем биткоин. Программирование блокчейнаВторое издание бестселлера включает подробное введение в самую известную криптовалюту – биткойн, а также в лежащую в ее основе технологию блокчейна. Приведено описание технических основ биткойна и других валют, описание децентрализованной сети биткойн, пиринговой архитектуры, жизненного цикла транзакций и принципов обеспечения безопасности. Показаны методики разработки блокчейн-приложений с многочисленными примерами кода.Книга будет интересна разработчикам, инженерам, архитекторам программных и прочих систем, а также всем, кто хочет глубже узнать о криптовалютах и блокчейн-технологиях. |
Отзывы - Написать отзыв
Не удалось найти ни одного отзыва.
Содержание
14 | |
19 | |
24 | |
История создания биткойна | 27 |
Варианты использования биткойнов пользователи и их истории | 29 |
Начинаем обучение | 30 |
Выбор биткойнкошелька | 31 |
Сразу переходим к делу | 33 |
Узлы с упрощенной проверкой платежей SPV | 218 |
Фильтр Блума | 221 |
Как SPVузлы применяют фильтры Блума | 225 |
SPVузлы и приватность | 227 |
Аутентификация и шифрование в пиринговой сети | 228 |
Пулы транзакций | 229 |
Блокчейн | 231 |
Структура блока | 233 |
Получаем свой первый биткойн | 35 |
Поиск информации о текущей стоимости биткойна | 36 |
Отправка и получение биткойна | 37 |
Как работает биткойн | 40 |
Покупка чашки кофе | 41 |
Транзакции биткойна | 43 |
Цепочки транзакций | 44 |
Получение сдачи | 45 |
Общие формы транзакций | 46 |
Создание транзакции | 47 |
Формирование правильных входных данных | 48 |
Формирование выходных данных | 49 |
Добавление транзакции в реестр | 51 |
Майнинг биткойнов | 52 |
Майнинг транзакций в блоках | 54 |
Расходование транзакции | 56 |
Bicoin Core эталонная реализация | 58 |
Среда разработки биткойна | 59 |
Компиляция Bitcoin Core из исходных кодов | 60 |
Конфигурирование компилируемой версии Bitcoin Core | 61 |
Сборка выполняемых файлов Bitcoin Core | 64 |
Запуск узла Bitcoin Core | 65 |
Самый первый запуск Bitcoin Core | 67 |
Прикладной программный интерфейс API Bitcoin Core | 72 |
Получение информации о состоянии клиента Bitcoin Core | 73 |
Обработка и расшифровка транзакций | 74 |
Исследование блоков | 76 |
Использование программного интерфейса Bitcoin Core | 77 |
Прочие клиенты библиотеки и инструментальные пакеты | 80 |
Java | 81 |
ObjectiveC | 82 |
Ключи и адреса | 83 |
Криптография с открытым ключом и криптовалюта | 84 |
Секретный ключ и открытый ключ | 85 |
Секретные ключи | 86 |
Открытые ключи | 88 |
Криптография с использованием эллиптических кривых | 89 |
Генерация открытого ключа | 91 |
Биткойнадреса | 93 |
Форматы кодирования Base58 и Base58Check | 94 |
Форматы ключей | 99 |
Реализация ключей и адресов на языке Python | 105 |
Усовершенствованные ключи и адреса | 108 |
Зашифрованные секретные ключи BIP38 | 109 |
Адреса скриптов PaytoScript Hash P2SH и адреса мультиподписей | 110 |
Престижные адреса | 112 |
Кошельки | 121 |
Недетерминированные кошельки со случайным выбором ключей | 122 |
Детерминированные кошельки с источником | 123 |
Источники и мнемонические коды BIP39 | 125 |
Практическое использование биткойнкошелька | 126 |
Подробности технологии кошельков | 128 |
Создание HDкошелька из источника | 134 |
Использование расширяемого открытого ключа в вебмагазине | 139 |
Транзакции | 146 |
Транзакции что внутри | 147 |
Входные и выходные данные транзакции | 148 |
Выходные данные транзакции | 150 |
Входные данные транзакции | 153 |
Оплата транзакций | 156 |
Добавление сумм оплаты в транзакции | 160 |
Скрипты транзакций и язык Script | 161 |
Неполнота по Тьюрингу | 162 |
Скрипт PaytoPublicKeyHash P2PKH | 167 |
Цифровые подписи ECDSA | 169 |
Как работают цифровые подписи | 170 |
Проверка цифровых подписей | 172 |
Математическое обоснование алгоритма ECDSA | 175 |
Важность фактора случайности в цифровых подписях | 176 |
Биткойнадреса балансы и прочие абстракции | 177 |
Более сложные транзакции и скрипты | 181 |
Скрипт PaytoScriptHash P2SH | 183 |
Адреса P2SH | 186 |
Погашающий скрипт и проверка корректности | 187 |
Запись выходных данных RETURN | 188 |
Блокировки по времени timelocks | 190 |
Check Lock Time Verify CLTV | 191 |
Относительные блокировки по времени | 193 |
Относительные блокировки по времени устанавливаемые полем nSequence | 194 |
Относительные блокировки по времени с применением параметра CSV | 196 |
Защита блокировок по времени от нелегального получения отчислений | 197 |
Скрипты с управлением потоком выполнения условные выражения | 198 |
Условные выражения с применением оператора VERIFY | 200 |
Использование средств управления потоком выполнения в скриптах | 201 |
Пример сложного скрипта | 202 |
Сеть биткойна | 205 |
Типы и роли узлов | 206 |
Расширенная биткойнсеть | 207 |
Сеть Bitcoin Relay Network | 209 |
Обследование биткойнсети | 211 |
Полноценные узлы | 215 |
Взаимная инвентаризация | 216 |
Идентификаторы блока хэшзначение заголовка блока и высота блока | 234 |
Первичный блок | 235 |
Связывание блоков в структуру данных блокчейна | 236 |
Деревья Меркле | 237 |
Деревья Меркле и упрощенная верификация платежей SPV | 244 |
Testnet песочница для тестирования биткойнов | 245 |
Segnet тестовая сеть для функции Segregated Witness | 247 |
Использование тестовых структур блокчейна для разработки | 248 |
Майнинг и консенсус | 249 |
Экономика биткойна и создание валюты | 251 |
Децентрализованный консенсус | 253 |
Независимая верификация транзакций | 254 |
Узлы майнинга | 256 |
Объединение транзакций в блоки | 257 |
Coinbaseтранзакция | 258 |
Вознаграждение coinbase и отчисления за транзакции | 260 |
Структура coinbaseтранзакции | 261 |
Данные coinbase | 262 |
Формирование заголовка блока | 264 |
Майнинг блока | 265 |
Алгоритм доказательства выполнения работы PoW | 266 |
Представление целевого значения | 272 |
Изменение целевого значения для регулирования уровня сложности | 273 |
Успешный майнинг блока | 276 |
Формирование и выбор цепочек блоков | 278 |
Разветвления структуры данных блокчейна | 279 |
Майнинг и конкуренция в хэшвычислениях | 287 |
Решение с расширением диапазона дополнительных значений nonce | 289 |
Пулы майнинга | 290 |
Атаки на механизм консенсуса | 295 |
Изменение правил консенсуса | 299 |
Устойчивые разветвления ПО сеть майнинг и цепочка | 301 |
Разделение майнеров и уровень сложности | 303 |
Неустойчивые разветвления | 304 |
Критика неустойчивых разветвлений | 306 |
Оповещение о неустойчивом разветвлении с помощью поля версии блока | 307 |
Оповещение и активация по стандарту BIP9 | 308 |
Разработка программного обеспечения для механизма консенсуса | 311 |
Обеспечение безопасности биткойнсистемы | 313 |
Разработка защищенных биткойнсистем | 315 |
Основа доверительных отношений | 316 |
Наиболее эффективные практические методики защиты пользователей | 317 |
Физические средства хранения биткойнов | 318 |
Аппаратные кошельки | 319 |
Мультиподпись и управление | 320 |
Резюме | 321 |
Приложения блокчейна | 322 |
Базовые элементы | 323 |
Приложения создаваемые из базовых элементов | 325 |
Цветные монеты | 326 |
Использование цветных монет | 327 |
Транзакции цветных монет | 328 |
Counterparty | 331 |
Каналы платежей и каналы состояний | 332 |
Каналы состояний основные концепции и терминология | 333 |
Пример простого канала платежей | 335 |
Создание каналов без доверительных отношений | 338 |
Асимметричные отменяемые обязательства | 341 |
Контракты Hash Time Lock Contracts HTLC | 346 |
Каналы платежа с маршрутизацией Lightning Network | 347 |
Простой пример работы Lightning Network | 348 |
Механизмы передачи и маршрутизации в сети Lightning Network | 351 |
Преимущества сети Lightning Network | 354 |
Резюме | 355 |
Статья о биткойне Сатоши Накамото | 356 |
Введение | 357 |
Сервер меток времени | 359 |
Сеть | 360 |
Стимул | 361 |
Требуемое дисковое пространство | 362 |
Упрощенная верификация платежей | 363 |
Объединение и разделение сумм транзакций | 364 |
Вычисления | 365 |
Резюме | 368 |
Ссылки | 369 |
Операторы константы и символы скриптового языка для транзакций Script | 371 |
Предложения по улучшению биткойна Bitcoin Improvement Proposals | 377 |
Функция Segregated Witness Segwit | 383 |
Зачем нужен механизм Segregated Witness | 384 |
Как работает механизм Segregated Witness | 385 |
Неустойчивое разветвление обратная совместимость | 386 |
Обновление ПО для использования Segregated Witness | 390 |
Новый алгоритм подписи в механизме Segregated Witness | 394 |
Bitcore | 398 |
Примеры кошелька использующего bitcorelib | 399 |
Библиотека pycoin утилиты ku и tx | 401 |
Утилита для работы с транзакциями tx | 407 |
Команды проводника биткойна bx | 410 |
Примеры практического использования команд проводника bx | 412 |
415 | |
Об авторе | 427 |
Часто встречающиеся слова и выражения
адрес алгоритма Алисы атак байтов биткойна биткойнсети биткойнсистемы битов блока блокировки блокирующий Боба больше будет версии виде возможность времени всех вы выполнения выполняется выходных данных вычисления генерации главе года денежных дерева длина доказательства должны другой есть защиты значение изменения использованием используется источника каждый канала клиента кодов количество команды консенсуса корректности которые кошелька майнеры майнинга механизм могут может можно например некоторые необходимо несколько новых обеспечения образом общего обычно один одного оператора операции описаны оплаты определенного основной открытого ключа передает платежей подписи подпись позволяет показан поле полную получения получить пользователей помощью после правил предыдущего приложение примере проверки программного просто процесс пула работы разветвления разделе различных расходования реализации результат решения рис самым свой секретный ключ сети системы скрипт следует случайных содержать создает соответствующих средств Стандарт стека стороны структуру данных блокчейна сумму типа точки транзакции узел узлы формате форме фрагмент выходных хэшзначение цели цепочки цифровой часто число элемент этот является Bitcoin Core UTXO