Освоение Lightning Network: Протокол второслойной блочной цепи для мгновенных Bitcoin-платежей
معرفی کتاب «Освоение Lightning Network: Протокол второслойной блочной цепи для мгновенных Bitcoin-платежей» نوشتهٔ Андреас Н. Антонопулос, Олаулува Осунтокун, Рене Пикхардт، منتشرشده توسط نشر ДМК Пресс در سال 2022. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است.
Cеть Lightning (Lightning Network, LN) – это быстро развивающийся второслойный платежный протокол, который работает поверх системы Bitcoin, обеспечивая почти мгновенные транзакции между двумя сторонами. Авторы объясняют, как это усовершенствование позволит перейти на следующий уровень масштабируемости системы Bitcoin, повысив скорость и конфиденциальность при одновременном снижении комиссии. Вы узнаете, как LN может поддерживать гораздо больше транзакций, чем современные финансовые сети. Оглавление Предисловие Целевая аудитория Условные обозначения в книге Примеры исходного кода Использование примеров исходного кода Ссылки на компании и продукты Адреса и транзакции в этой книге Как с нами связаться Связь с Андреасом Связь с Рене Связь с Олаолувой Осунтокун Признательности от Андреаса Признательности от Рене Признательности от Олаолувы Осунтокун Участники проекта Источники Об авторах Об иллюстрации на обложке (Колофон) Часть I. Понимание сети Lightning Глава 1. Введение Базовые понятия сети Lightning Доверие в децентрализованных сетях Справедливость без центральной власти Доверительные протоколы без посредников Протокол справедливости в действии Примитивы безопасности как строительные блоки Пример протокола справедливости Мотивация для сети Lightning Масштабирование блочных цепей Определяющие признаки сети Lightning Примеры использования сети Lightning, пользователи и их истории Вывод Глава 2. Приступаем к работе Первый кошелек Lightning Алисы Узлы Lightning Проводники Lightning Кошельки Lightning Тестовая сеть Bitcoin Уравновешивание сложности и контроля Скачивание и инсталляция кошелька Lightning Создание нового кошелька Ответственность за хранение ключей Мнемонические слова Безопасное хранение мнемоники Загрузка биткойна в кошелек Приобретение биткойна Получение биткойна Из системы Bitcoin в сеть Lightning Каналы сети Lightning Открытие канала Lightning Покупка чашки кофе с помощью сети Lightning Кофейня Боба Счет Lightning Вывод Глава 3. Как работает сеть Lightning Что такое платежный канал? Основы платежного канала Маршрутизирование платежей по каналам Платежные каналы Мультиподписной адрес Финансовая транзакция Пример плохой процедуры открытия канала Фиксационная транзакция Обман с предыдущим состоянием Объявление канала Закрытие канала Взаимное закрытие (хороший путь) Принудительное закрытие (плохой путь) Нарушение протокола (уродливый путь) Счета Платежный хеш и прообраз Дополнительные метаданные Доставка платежа Эпидемический протокол обмена сообщениями между одноранговыми узлами Отыскание пути и маршрутизация Отыскание пути на основе источника Луковичная маршрутизация Алгоритм пересылки платежей Шифрование однорангового обмена сообщениями Мысли о доверии Сравнение с системой Bitcoin Адреса против счетов, транзакции против платежей Выбор выходов против отыскания пути Выходы со сдачей в Bitcoin против отсутствия сдачи в Lightning Майнинговые комиссионные против маршрутизационных комиссионных Комиссионные, варьирующиеся в зависимости от трафика, против объявленных комиссионных Публичные Bitcoin-транзакции против приватных платежей Lightning Ожидание подтверждений против денежного расчета Lightning Отправка произвольных сумм против ограничений по емкости Стимулы для крупных платежей против малых платежей Использование блочной цепи в качестве реестра против судебной системы Офлайн против онлайна, асинхронность против синхронности Сатоши против миллисатоши Общие черты сетей Bitcoin и Lightning Денежная единица Необратимость и окончательность платежей Доверие и риск контрагента Безразрешительная работа Открытый исходный код и открытая система Вывод Глава 4. Программное обеспечение узла Lightning Среда разработки Lightning Использование командной строки Скачивание репозитория книги Docker-контейнеры Bitcoin Core и regtest Сборка контейнера Bitcoin Core Взаимодействие с контейнером bitcoin core Проект c-lightning узла Lightning Сборка c-lightning в качестве Docker-контейнера Настройка сети Docker Оперирование контейнерами bitcoind и c-lightning Инсталлирование c-lightning из исходного кода Инсталлирование необходимых библиотек и пакетов Копирование исходного кода c-lightning Компилирование исходного кода c-lightning Проект демона узла сети Lightning Docker-контейнер LND Оперирование контейнерами bitcoind и LND Инсталлирование LND из исходного кода Копирование исходного кода LND Компилирование исходного кода LND Проект узла Lightning Eclair Docker-контейнер Eclair Оперирование контейнерами bitcoind и Eclair Инсталлирование Eclair из исходного кода Копирование исходного кода Eclair Компилирование исходного кода Eclair Сборка полной сети из разнообразных узлов Lightning Использование docker-compose для оркестрирования Docker-контейнеров Конфигурация docker-compose Запуск образца сети Lightning Открытие каналов и маршрутизирование платежа Вывод Глава 5. Оперирование узлом сети Lightning Выбор своей платформы Почему для оперирования узлом Lightning важна надежность? Типы аппаратных узлов Lightning Оперирование в «облаке» Оперирование узлом дома Какое оборудование требуется для работы узла Lightning? Переключение серверной конфигурации в облаке Постоянное хранилище данных (накопитель) Использование инсталлятора или помощника RaspiBlitz myNode Umbrel BTCPay Server Узел Bitcoin или облегченный узел Lightning Выбор операционной системы Выбор имплементации узла Lightning Инсталлирование узла Bitcoin или Lightning Фоновые службы Изоляция процесса Запуск узла Конфигурирование узла Конфигурирование сети Это просто работает! Автоматическая переадресация портов с использованием UPnP Использование Tor для входящих соединений Ручная переадресация портов Безопасность вашего узла Безопасность операционной системы Доступ к узлу Резервное копирование узла и каналов Риск со стороны горячего кошелька Зачистка средств Внутрицепная зачистка Внецепная зачистка Зачистка на основе подводного свопа Подводные свопы с помощью петли Время безотказной работы и доступность узла Lightning Допускайте неисправности и автоматизируйте Мониторинг доступности узла Сторожевые вышки Управление каналами Открытие исходящих каналов Автопилот Получение входящей ликвидности Закрытие каналов Перебалансировка каналов Комиссионные за маршрутизацию Управление узлом Ride The Lightning lndmon ThunderHub Вывод Часть II. Сеть Lightning в деталях Глава 6. Архитектура сети Lightning Комплект протоколов сети Lightning Lightning в деталях Глава 7. Платежные каналы Другой способ использования системы Bitcoin Владение биткойном и контроль над ним Разнообразие форм (независимого) владения и мультиподпись Совместное владение без независимого контроля Предотвращение «привязанности» и нерасходуемости биткойна Соединение узлов в качестве прямых одноранговых участников сети Строительство платежного канала Приватный и публичный ключи узла Сетевой адрес узла Идентификаторы узлов Соединение узлов в качестве прямых одноранговых участников сети Строительство канала Одноранговый протокол для управления каналами Поток сообщений об установлении канала Сообщение open_channel Сообщение accept_channel Финансовая транзакция Генерирование мультиподписного адреса Сборка финансовой транзакции Удерживание подписанных транзакций без широковещательной передачи Возврат средств до финансирования Сборка предварительно подписанной возвратной транзакции Выстраивание транзакций в цепь без широковещательной передачи Решение проблемы деформируемости (сегрегированный свидетель) Сообщение funding_created Сообщение funding_signed Широковещательная передача финансовой транзакции Сообщение funding_locked Отправка платежей по каналу Разделение остатка Конкурирующие фиксации Обман со старыми фиксационными транзакциями Отзыв старых фиксационных транзакций Асимметричные фиксационные транзакции Задержанное (привязанное ко времени) расходование выхода to_self Отзывные ключи Фиксационная транзакция Продвижение состояния канала вперед Сообщение committement_signed Сообщение об отзыве и возврате Отзыв и рефиксация Обман и наказание на практике Резерв канала: обеспечение личной заинтересованности Закрытие канала (кооперативное закрытие) Сообщение shutdown Сообщение closing_signed Транзакция кооперативного закрытия Вывод Глава 8. Маршрутизация в сети платежных каналов Маршрутизирование платежа Маршрутизация против отыскания пути Создание сети платежных каналов Физический пример «маршрутизирования» Протокол справедливости Имплементирование атомарных бездоверительных многопереходных платежей Возвращаясь к примеру с донатами Внутрицепное и внецепное улаживание HTLC-контрактов Контракты с привязкой к хешу и времени HTLC-контракты на Bitcoin Script Платежный прообраз и верификация хеша Распространение HTLC-контрактов от Алисы к Дины Обратное распространение секрета Привязка подписи: предотвращение кражи HTLC-контрактов Оптимизация хеша Кооперативный отказ и отказ тайм-аута по HTLC-контракту Декрементирование привязок ко времени Вывод Глава 9. Работа канала и пересылка платежей Локальный (один) канал против маршрутизируемых (многочисленных) каналов Пересылка платежей и обновление фиксаций с помощью HTLC-контрактов HTLC-контракт и поток фиксационных сообщений Пересылка платежей с помощью HTLC-контрактов Добавление HTLC-контракта Сообщение update_add_HTLC HTLC-контракт в фиксационных транзакциях Новая фиксация с выходом из HTLC-контракта Алиса фиксирует Боб признает новую фиксацию и отзывает старую Боб фиксирует Несколько HTLC-контрактов Исполнение HTLC-контракта Распространение HTLC-контракта Дина исполняет HTLC-контракт с Чаном Боб улаживает HTLC-контракт с Алисой Удаление HTLC-контракта из-за ошибки или истечения срока Осуществление локального платежа Вывод Глава 10. Луковичная маршрутизация Физический пример, иллюстрирующий луковичную маршрутизацию Выбор пути Сборка слоев Отслаивание слоев Введение в луковичную маршрутизацию на основе HTLC-контрактов Алиса выбирает путь Алиса конструирует полезные грузы Полезный груз для Дины в заключительном узле Переходный полезный груз для Чана Переходный полезный груз для Боба Окончательные полезные грузы переходов Генерация ключей Сеансовый ключ Алисы Детали генерации ключей Генерация совместных секретов Обертывание луковичных слоев Луковицы фиксированной длины Обертывание луковицы (в общих чертах) Обертывание переходного полезного груза Дины Луковично-маршрутизационная защита от повторного воспроизведения и его обнаружение Обертывание переходного полезного груза Чана Обертывание переходного полезного груза Боба Заключительный луковичный пакет Отправка луковицы Сообщение update_add_htlc Алиса отправляет луковицу Бобу Боб проверяет луковицу Боб генерирует заполнитель Боб распутывает свой переходный полезный груз Боб извлекает внешний HMAC для следующего перехода Боб удаляет свой полезный груз и сдвигает луковицу влево Боб конструирует новый луковичный пакет Боб верифицирует детали HTLC-контракта Боб отправляет update_add_htlc Чану Чан пересылает луковицу Дина получает заключительный полезный груз Возвращение ошибок Сообщения о сбоях Застрявшие платежи Спонтанные платежи keysend Конкретно-прикладные луковичные TLV-записи Отправка и получение платежей keysend Платеж keysend и конкретно-прикладные записи в приложениях Lightning Вывод Глава 11. Сплетни и канальный граф Обнаружение одноранговых узлов Самозагрузка P2P-узлов Самозагрузка адресов DNS-серверов Рабочий поток самозагрузки нового однорангового узла Опции SRV-запроса Канальный граф Ориентированный граф Сообщения эпидемического протокола Сообщение node_announcement Структура сообщения node_announcement Валидация объявлений узла Сообщение channel_announcement Необъявленные (приватные) каналы Локализация канала в блочной цепи Bitcoin Короткий ИД канала Структура сообщения channel_announcement Валидация объявления канала Сообщение channel_update Текущее сопровождение канального графа Вывод Глава 12. Отыскание пути и доставка платежа Отыскание пути в рамках комплекта протоколов Lightning Где же BOLT? Отыскание пути: какую задачу мы решаем? Выбор наилучшего пути Отыскание путей в математике и информатике Емкость, остаток, ликвидность Неопределенность остатков Сложность отыскания пути Без лишних сложностей Отыскание пути и процесс доставки платежа Построение канального графа Неопределенность в канальном графе Неопределенность ликвидности и вероятность Комиссионные и другие метрики канала Отыскание кандидатных путей Доставка платежа (цикл проб и ошибок) Первая попытка (путь No1) Учеба на ошибках Вторая попытка (путь No 4) Учеба на успехах Застоявшиеся знания? Многокомпонентные платежи Использование MPP Разбивка платежей Метод проб и ошибок в течение нескольких «раундов» Вывод Глава 13. Проводной протокол: фреймирование и расширяемость Слой обмена сообщениями в рамках комплекта протоколов Lightning Проводное фреймирование Высокоуровневое фреймирование Кодировка типа Расширения «Тип–длина–значение для сообщений» Протокол буферизует формат сообщения Прямая и обратная совместимости Формат «Тип–длина–значение» Целочисленная кодировка BigSize Ограничения TLV-кодирования Каноническое TLV-кодирование Биты функциональностей и расширяемость протокола Биты функциональностей как механизм обеспечения обнаруживаемости модернизаций TLV для прямой и обратной совместимостей Таксономия механизмов модернизации Модернизации внутренней сети Сквозные модернизации Модернизации уровня строительства канала Вывод Глава 14. Шифрованный транспорт сообщений Lightning Шифрованный транспорт в рамках комплекта протоколов Lightning Введение Канальный граф как децентрализованная инфраструктура публичных ключей Почему не TLS? Каркас криптосвязи на основе протокола Noise Шифрованный транспорт Lightning в деталях Noise_XK: рукопожатие Noise в сети Lightning Нотация рукопожатия и поток протокола Высокоуровневый обзор Рукопожатие в трех действиях Инициализация состояния сеанса рукопожатия Акты рукопожатия Акт первый Акт второй Акт третий Шифрование транспортных сообщений Ротация ключей сообщений Lightning Вывод Глава 15. Платежные запросы Lightning Счета в комплекте протоколов Lightning Введение Платежные запросы Lightning против Bitcoin-адресов BOLT #11: сериализация и интерпретация платежных запросов Lightning Кодирование платежного запроса на практике Человекочитаемый префикс bech32 и сегмент данных Тегированные поля счета Вывод Глава 16. Безопасность и конфиденциальность сети Lightning Почему важна конфиденциальность? Определения конфиденциальности Процесс оценивания конфиденциальности Анонимностное множество Различия между сетями Lightning и Bitcoin с точки зрения конфиденциальности Атаки на Lightning Наблюдение за суммами платежей Связывание отправителей и получателей Раскрытие остатков каналов (прощупывание) Отказ в обслуживании DoS в Bitcoin DoS в Lightning Известные DoS-атаки Заклинивание фиксаций Запирание ликвидности канала Межслоевая деанонимизация Внутрицепная кластеризация Bitcoin-сущностей Контрмеры Внецепная кластеризация узлов Lightning Контрмеры Межслоевое связывание: узлы Lightning и Bitcoin-сущности Граф Lightning Как выглядит граф Lightning в реальности? Граф Lightning сегодня Атаки на основе топологии Темпоральность сети Lightning Централизация в сети Lightning Экономические стимулы и графовая структура Практические советы пользователям по защите их конфиденциальности Необъявленные каналы Соображения по маршрутизации Принятие каналов Вывод Справочные материалы и дальнейшее чтение Конфиденциальность и атаки прощупыванием Атаки переполнением Соображения по маршрутизации Глава 17. Заключение Децентрализованные и асинхронные инновации Инновации в Bitcoin-протоколе и в Bitcoin Script Инновация в протоколе Lightning Расширяемость TLV Строительство платежного канала Сквозные функциональности в порядке выбора Lightning-приложения (LApps) На старт, внимание, марш! Приложение A. Обзор основных принципов системы Bitcoin Ключи и цифровые подписи Приватные и публичные ключи Хеши Цифровые подписи Типы подписей Транзакции Bitcoin Входы и выходы Транзакционные цепочки TxID: идентификаторы транзакций Выходные точки: выходные идентификаторы Bitcoin Script Работа языка Bitcoin Script Привязывающие и отвязывающие скрипты Привязывание к публичному ключу (подписи) Привязывание к хешу (секрету) Мультиподписные скрипты Скрипты привязки ко времени Скрипты с несколькими условиями Использование управления потоком в скриптах Приложение B. Базовая инсталляция и использование Docker Инсталляция Docker Базовые команды Docker Сборка контейнера Оперирование контейнером Исполнение команды в контейнере Остановка и запуск контейнера Удаление контейнера по имени Выведение списка оперируемых контейнеров Выведение списка Docker-образов Вывод Приложение C. Сообщения проводного протокола Типы сообщений Структура сообщения Сообщения об установлении соединения Сообщение init Сообщения об ошибке Сообщение error Оживленность соединения Сообщение ping Сообщение pong Финансирование канала Сообщение open_channel Сообщение accept_channel Сообщение funding_created Сообщение funding_signed Сообщение funding_locked Закрытие канала Сообщение shutdown Сообщение closing_signed Операция канала Сообщение update_add_htlc Сообщение update_fulfill_hltc Сообщение update_fail_htlc Сообщение committement_signed Сообщение revoke_and_ack Сообщение update_fee Сообщение update_fail_malformed_htlc Объявление канала Сообщение channel_announcement Сообщение node_announcement Сообщение channel_update Сообщение announce_signatures Синхронизация канального графа Сообщение query_short_chan_ids Сообщение reply_short_chan_ids_end Сообщение query_channel_range Сообщение reply_channel_range Сообщение gossip_timestamp_range Приложение D. Источники и уведомления о лицензиях Источники Сервер BTCPay Server Lamassu Industries AG Глоссарий Предметный указатель Launched in early 2018, the Lightning Network (LN) is rapidly growing in users and capacity. This second-layer payment protocol works on top of Bitcoin and other cryptocurrencies to provide near-instantaneous transactions between two parties. With this practical guide, authors Andreas M. Antonopoulos, Olaoluwa Osuntokun, and Rene Pickhardt explain how this advancement will enable the next level of scale for Bitcoin, increasing speed and privacy while reducing fees. Ideal for developers, systems architects, investors, and entrepreneurs looking to gain a better understanding of LN, this book demonstrates why experts consider LN a critical solution to Bitcoin's scalability problem. You'll learn how LN has the potential to support far more transactions than today's financial networks, ushering in an era of global micro-transactions at sub-second resolution. In several parts, this book examines: The challenges of scaling blockchain technology and why the Lightning Network was invented LN basics including wallets, nodes, and lightning payments Lightning payment channels and how they work Routing payments by constructing paths of payment channels from sender to recipient, including onion routing, and atomic multi-path payments Lightning developments such as eltoo, Schnorr signatures, HODL invoices, JIT routing, channel splicing, and channel factories Building applications on Lightning (Lapps) The Lightning Network (LN) is a rapidly growing second-layer payment protocol that works on top of Bitcoin to provide near-instantaneous transactions between two parties. With this practical guide, the authors explain how this advancement will enable the next level of scale for Bitcoin, increasing speed and privacy while reducing fees.
دانلود کتاب Освоение Lightning Network: Протокол второслойной блочной цепи для мгновенных Bitcoin-платежей