Освоение Lightning Network. Протокол второслойной блочной цепи для мгновенных Bitcoin-платежей
Покупка
Тематика:
Программирование на C и C++
Издательство:
ДМК Пресс
Перевод:
Логунов А. В.
Год издания: 2023
Кол-во страниц: 450
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Профессиональное образование
ISBN: 978-5-93700-144-3
Артикул: 817223.01.99
Lightning — маршрутизируемая сеть платежных каналов, которая предоставляет безопасные, дешевые, быстрые платежи Bitcoin с высокой степенью приватности, даже когда дело касается малых сумм. В этой книге приводится обзорсети Lightning, базовых концепций, которые легли в ее основу, и принципов ее работы. Примеры проиллюстрированы на языках Go, C++, Python и с использованием командной строки Unix-подобной операционной системы.
Книга адресована программистам, имеющим представление об основах системы Bitcoin, однако ряд глав доступен широкому кругу читателей, интересующихся блочными цепями.
- Полная коллекция по информатике и вычислительной технике
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Программирование
- Программирование на C и C++
Тематика:
ББК:
УДК:
ОКСО:
- 00.00.00: ОБЩИЕ ДИСЦИПЛИНЫ ДЛЯ ВСЕХ СПЕЦИАЛЬНОСТЕЙ
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Андреас Н. Антонопулос, Олаулува Осунтокун и Рене Пикхард Освоение Lightning Network Протокол второслойной блочной цепи для мгновенных Bitcoin-платежей
Mastering the Lightning Network A Second Layer Blockchain Protocol for Instant Bitcoin Payments Andreas M. Antonopoulos, Olaoluwa Osuntokun & René Pickhardt
Освоение Lightning Network Протокол второслойной блочной цепи для мгновенных Bitcoin-платежей Андреас Н. Антонопулос, Олаулува Осунтокун и Рене Пикхард Москва, 2023
УДК 004.04, 336.74 ББК 32.372 А72 Андреас Н. Антонопулос, Олаулува Осунтокун и Рене Пикхардт. А72 Освоение Lightning Network: Протокол второслойной блочной цепи для мгновенных Bitcoin-платежей / пер. с англ. А. В. Логунова. – М.: ДМК Пресс, 2023. – 450 с.: ил. ISBN 978-5-93700-144-3 Lightning – маршрутизируемая сеть платежных каналов, которая предоставляет безопасные, дешевые, быстрые платежи Bitcoin с высокой степенью приватности, даже когда дело касается малых сумм. В этой книге приводится обзор сети Lightning, базовых концепций, которые легли в ее основу, и принципов ее работы. Примеры проиллюстрированы на языках Go, C++, Python и с использованием командной строки Unix-подобной операционной системы. Книга адресована программистам, имеющим представление об основах системы Bitcoin, однако ряд глав доступен широкому кругу читателей, интересующихся блочными цепями. УДК 004.04, 336.74 ББК 32.372 Copyright©2022 DMK Press Authorized Russian translation of the English edition of Mastering the Lightning Network ISBN 978-1-492-05486-3 Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. © 2022 Andreas M. Antonopoulos, Olaoluwa Osuntokun, and René Pickhardt. © Оформление, издание, перевод, ДМК Пресс, 2022 ISBN (анг.) 978-1-49205-486-3 ISBN (рус.) 978-5-93700-144-3
Оглавление Предисловие ...................................................................................... 18 Целевая аудитория ...........................................................................................18 Условные обозначения в книге ........................................................................18 Примеры исходного кода .................................................................................19 Использование примеров исходного кода .....................................................20 Ссылки на компании и продукты ....................................................................20 Адреса и транзакции в этой книге ..................................................................20 Как с нами связаться ........................................................................................20 Связь с Андреасом ........................................................................................20 Связь с Рене ...................................................................................................21 Связь с Олаолувой Осунтокун ......................................................................21 Признательности от Андреаса .........................................................................21 Признательности от Рене .................................................................................21 Признательности от Олаолувы Осунтокун .....................................................22 Участники проекта ...........................................................................................22 Источники .........................................................................................................23 Об авторах ......................................................................................... 24 Об иллюстрации на обложке (Колофон) ...................................... 25 ЧАСТЬ I. ПОНИМАНИЕ СЕТИ LIGHTNING ........................ 27 Глава 1. Введение .............................................................................. 28 Базовые понятия сети Lightning ......................................................................28 Доверие в децентрализованных сетях ............................................................30 Справедливость без центральной власти .......................................................31 Доверительные протоколы без посредников .............................................32 Протокол справедливости в действии ........................................................33 Примитивы безопасности как строительные блоки ..................................34 Пример протокола справедливости ............................................................35 Мотивация для сети Lightning .........................................................................36 Масштабирование блочных цепей ..............................................................36 Определяющие признаки сети Lightning ........................................................38 Примеры использования сети Lightning, пользователи и их истории ..............................................................................39 Вывод .................................................................................................................40
Глава 2. Приступаем к работе ......................................................... 41 Первый кошелек Lightning Алисы ..................................................................41 Узлы Lightning ...................................................................................................42 Проводники Lightning ......................................................................................42 Кошельки Lightning ..........................................................................................43 Тестовая сеть Bitcoin .....................................................................................46 Уравновешивание сложности и контроля ......................................................47 Скачивание и инсталляция кошелька Lightning ............................................48 Создание нового кошелька ..............................................................................49 Ответственность за хранение ключей ........................................................49 Мнемонические слова ..................................................................................49 Безопасное хранение мнемоники ...............................................................50 Загрузка биткойна в кошелек ..........................................................................51 Приобретение биткойна ..............................................................................51 Получение биткойна ....................................................................................52 Из системы Bitcoin в сеть Lightning .................................................................56 Каналы сети Lightning ..................................................................................56 Открытие канала Lightning ..........................................................................58 Покупка чашки кофе с помощью сети Lightning ............................................61 Кофейня Боба ................................................................................................61 Счет Lightning ...............................................................................................62 Вывод .................................................................................................................64 Глава 3. Как работает сеть Lightning ............................................. 65 Что такое платежный канал? ...........................................................................66 Основы платежного канала .............................................................................66 Маршрутизирование платежей по каналам ...................................................67 Платежные каналы ...........................................................................................68 Мультиподписной адрес ..............................................................................69 Финансовая транзакция ...............................................................................69 Пример плохой процедуры открытия канала ........................................70 Фиксационная транзакция ..........................................................................70 Обман с предыдущим состоянием ..............................................................72 Объявление канала .......................................................................................75 Закрытие канала ...........................................................................................75 Взаимное закрытие (хороший путь) .......................................................76 Принудительное закрытие (плохой путь) ..............................................77 Нарушение протокола (уродливый путь) ...............................................78 Счета ..................................................................................................................79 Платежный хеш и прообраз .........................................................................80 Дополнительные метаданные .....................................................................81 Доставка платежа..............................................................................................82 Эпидемический протокол обмена сообщениями между одноранговыми узлами ....................................................................82 Отыскание пути и маршрутизация .............................................................83 Отыскание пути на основе источника ............................................................84 Луковичная маршрутизация .......................................................................85 Алгоритм пересылки платежей ...................................................................87 6 Оглавление
Шифрование однорангового обмена сообщениями ......................................88 Мысли о доверии ..............................................................................................89 Сравнение с системой Bitcoin ..........................................................................89 Адреса против счетов, транзакции против платежей ................................89 Выбор выходов против отыскания пути .....................................................90 Выходы со сдачей в Bitcoin против отсутствия сдачи в Lightning ............91 Майнинговые комиссионные против маршрутизационных комиссионных ..............................................................................................91 Комиссионные, варьирующиеся в зависимости от трафика, против объявленных комиссионных ..........................................................91 Публичные Bitcoin-транзакции против приватных платежей Lightning ....92 Ожидание подтверждений против денежного расчета Lightning .............93 Отправка произвольных сумм против ограничений по емкости .............93 Стимулы для крупных платежей против малых платежей ........................94 Использование блочной цепи в качестве реестра против судебной системы .........................................................................................94 Офлайн против онлайн, асинхронность против синхронности ...............94 Сатоши против миллисатоши .....................................................................95 Общие черты сетей Bitcoin и Lightning ...........................................................95 Денежная единица........................................................................................95 Необратимость и окончательность платежей ............................................96 Доверие и риск контрагента ........................................................................96 Безразрешительная работа ..........................................................................96 Открытый исходный код и открытая система ...........................................96 Вывод .................................................................................................................96 Глава 4. Программное обеспечение узла Lightning .................... 97 Среда разработки Lightning .............................................................................98 Использование командной строки .............................................................98 Скачивание репозитория книги ..................................................................99 Docker-контейнеры ...................................................................................100 Bitcoin Core и regtest .......................................................................................102 Сборка контейнера Bitcoin Core ................................................................102 Взаимодействие с контейнером bitcoin core ........................................103 Проект c-lightning узла Lightning .................................................................105 Сборка c-lightning в качестве Docker-контейнера ..................................105 Настройка сети Docker ...............................................................................106 Оперирование контейнерами bitcoind и c-lightning ...............................107 Инсталлирование c-lightning из исходного кода .....................................108 Инсталлирование необходимых библиотек и пакетов ............................108 Копирование исходного кода c-lightning ..................................................109 Компилирование исходного кода c-lightning ...........................................109 Проект демона узла сети Lightning ..............................................................111 Docker-контейнер LND ..............................................................................111 Оперирование контейнерами bitcoind и LND ..........................................112 Инсталлирование LND из исходного кода ................................................114 Копирование исходного кода LND ............................................................115 Компилирование исходного кода LND......................................................115 Оглавление 7
Проект узла Lightning Eclair ...........................................................................116 Docker-контейнер Eclair .............................................................................116 Оперирование контейнерами bitcoind и Eclair ........................................117 Инсталлирование Eclair из исходного кода ..............................................118 Копирование исходного кода Eclair ..........................................................119 Компилирование исходного кода Eclair ....................................................119 Сборка полной сети из разнообразных узлов Lightning ..............................120 Использование docker-compose для оркестрирования Dockerконтейнеров ...............................................................................................120 Конфигурация docker-compose ..................................................................121 Запуск образца сети Lightning ...................................................................121 Открытие каналов и маршрутизирование платежа ................................122 Вывод ...............................................................................................................124 Глава 5. Оперирование узлом сети Lightning .............................125 Выбор своей платформы ................................................................................126 Почему для оперирования узлом Lightning важна надежность? ............126 Типы аппаратных узлов Lightning ............................................................127 Оперирование в «облаке» ..........................................................................127 Оперирование узлом дома ........................................................................128 Какое оборудование требуется для работы узла Lightning? ........................................................................129 Переключение серверной конфигурации в облаке ..................................130 Постоянное хранилище данных (накопитель) .....................................131 Использование инсталлятора или помощника ............................................131 RaspiBlitz .....................................................................................................131 myNode ........................................................................................................133 Umbrel ..........................................................................................................133 BTCPay Server ..............................................................................................134 Узел Bitcoin или облегченный узел Lightning ...........................................135 Выбор операционной системы ..................................................................136 Выбор имплементации узла Lightning ..........................................................136 Инсталлирование узла Bitcoin или Lightning ..............................................137 Фоновые службы .........................................................................................138 Изоляция процесса .....................................................................................138 Запуск узла ..................................................................................................139 Конфигурирование узла .............................................................................140 Конфигурирование сети.............................................................................141 Это просто работает! ..............................................................................142 Автоматическая переадресация портов с использованием UPnP ......143 Использование Tor для входящих соединений ....................................144 Ручная переадресация портов ...............................................................145 Безопасность вашего узла ..............................................................................146 Безопасность операционной системы ......................................................146 Доступ к узлу ...............................................................................................147 Резервное копирование узла и каналов ........................................................148 Риск со стороны горячего кошелька .........................................................150 8 Оглавление
Зачистка средств .........................................................................................150 Внутрицепная зачистка .........................................................................151 Внецепная зачистка ...............................................................................151 Зачистка на основе подводного свопа ..................................................151 Подводные свопы с помощью петли.....................................................152 Время безотказной работы и доступность узла Lightning ...........................153 Допускайте неисправности и автоматизируйте ......................................154 Мониторинг доступности узла ..................................................................154 Сторожевые вышки ....................................................................................155 Управление каналами ....................................................................................156 Открытие исходящих каналов ...................................................................157 Автопилот ...............................................................................................157 Получение входящей ликвидности ...........................................................160 Закрытие каналов .......................................................................................161 Перебалансировка каналов ........................................................................161 Комиссионные за маршрутизацию ...............................................................162 Управление узлом ...........................................................................................164 Ride The Lightning ......................................................................................164 lndmon ........................................................................................................164 ThunderHub .................................................................................................165 Вывод ...............................................................................................................165 ЧАСТЬ II. СЕТЬ LIGHTNING В ДЕТАЛЯХ .........................167 Глава 6. Архитектура сети Lightning ............................................168 Комплект протоколов сети Lightning ............................................................168 Lightning в деталях .........................................................................................169 Глава 7. Платежные каналы ...........................................................171 Другой способ использования системы Bitcoin ...........................................172 Владение биткойном и контроль над ним ....................................................173 Разнообразие форм (независимого) владения и мультиподпись ...........174 Совместное владение без независимого контроля ..................................174 Предотвращение «привязанности» и нерасходуемости биткойна .........174 Строительство платежного канала ................................................................175 Приватный и публичный ключи узла .......................................................175 Сетевой адрес узла .....................................................................................175 Идентификаторы узлов ..............................................................................176 Соединение узлов в качестве прямых одноранговых участников сети ..... 176 Строительство канала ....................................................................................177 Одноранговый протокол для управления каналами ...............................177 Поток сообщений об установлении канала ..............................................177 Сообщение open_channel ...........................................................................179 Сообщение accept_channel .........................................................................180 Финансовая транзакция .............................................................................181 Генерирование мультиподписного адреса ...............................................181 Сборка финансовой транзакции ...............................................................181 Оглавление 9
Удерживание подписанных транзакций без широковещательной передачи ...........................................................182 Возврат средств до финансирования ........................................................182 Сборка предварительно подписанной возвратной транзакции .............183 Выстраивание транзакций в цепь без широковещательной передачи ..... 183 Решение проблемы деформируемости (сегрегированный свидетель) ...... 184 Сообщение funding_created ...................................................................185 Сообщение funding_signed .....................................................................186 Широковещательная передача финансовой транзакции ........................186 Сообщение funding_locked .....................................................................187 Отправка платежей по каналу .......................................................................187 Разделение остатка ....................................................................................187 Конкурирующие фиксации ........................................................................188 Обман со старыми фиксационными транзакциями ................................189 Отзыв старых фиксационных транзакций ...............................................189 Асимметричные фиксационные транзакции ..........................................190 Задержанное (привязанное ко времени) расходование выхода to_self ..... 191 Отзывные ключи ........................................................................................192 Фиксационная транзакция ...........................................................................193 Продвижение состояния канала вперед .......................................................195 Сообщение committement_signed ..............................................................196 Сообщение об отзыве и возврате ..............................................................196 Отзыв и рефиксация ..................................................................................197 Обман и наказание на практике ...............................................................197 Резерв канала: обеспечение личной заинтересованности ......................200 Закрытие канала (кооперативное закрытие) ...............................................200 Сообщение shutdown ..................................................................................201 Сообщение closing_signed ..........................................................................202 Транзакция кооперативного закрытия.....................................................202 Вывод ...............................................................................................................203 Глава 8. Маршрутизация в сети платежных каналов ................205 Маршрутизирование платежа .......................................................................205 Маршрутизация против отыскания пути .....................................................207 Создание сети платежных каналов ...............................................................207 Физический пример «маршрутизирования» ................................................208 Протокол справедливости ..............................................................................214 Имплементирование атомарных бездоверительных многопереходных платежей ......................................................................214 Возвращаясь к примеру с донатами ..............................................................215 Внутрицепное и внецепное улаживание HTLC-контрактов ...................216 Контракты с привязкой к хешу и времени ...................................................216 HTLC-контракты на Bitcoin Script..............................................................217 Платежный прообраз и верификация хеша .............................................218 Распространение HTLC-контрактов от Алисы к Дины ............................219 Обратное распространение секрета ..........................................................220 Привязка подписи: предотвращение кражи HTLC-контрактов ..............222 10 Оглавление