675 / 736BK59

Bitcoin: A Work in Progress

Sjors Provoost: что стоит за обычным платежом в биткоинах

Скопировать адрес можно за мгновение. Но за этим простым действием стоят правила, поиск ошибок и работа разработчиков. Книга Provoost объясняет, почему Bitcoin нуждается в постоянном техническом совершенствовании.

Bitcoin: A Work in Progress — книга разработчика Sjors Provoost о техническом развитии Bitcoin. Она объясняет малозаметные для пользователя вопросы: как кошелёк читает адрес, откуда узел узнаёт о событиях в сети и почему даже небольшое изменение требует осторожности.

Пользоваться Bitcoin можно, не зная его программного кода. Но это не означает, что улучшать больше нечего. Sjors Provoost, участник разработки Bitcoin Core, знакомит читателя с работой, благодаря которой сеть развивается. Первое бумажное издание вышло в Purple Dunes в 2022 году. Книга рассматривает технические вопросы своего времени; последующее изменение исходных файлов не меняет дату первой публикации. [1] [2]

Представьте, что знакомый прислал адрес, а вы вставили его в кошелёк. Для вас это начало платежа. Для разработчика — ещё и вопрос, как обнаружить опечатку и однозначно сообщить кошельку, куда подготовить платёж. Этот наш собственный пример позволяет подойти к книге без знания программирования. Её содержание ведёт от адресов через обмен данными между узлами к изменениям правил. Сложные главы легче читать после понимания этих основ. [2]

Адрес — запись, по которой кошелёк формирует условия последующей траты определённой суммы. Условия попадают в выход транзакции, то есть во вновь созданную часть платежа. Чтобы потратить её позже, нужно доказать выполнение условий, обычно действительной цифровой подписью. Поэтому сети не нужен банковский счёт на ваше имя. Глава Provoost помогает различать адрес, которым обмениваются люди, и правила, которые проверяют компьютеры. [3]

В адрес входит контрольная сумма, помогающая кошельку обнаруживать ошибки при переписывании. Она не устанавливает владельца адреса. В нашем примере можно по ошибке вставить правильно записанный адрес другого человека и успешно пройти проверку. Поэтому нужно проверять и предполагаемого получателя. Если кошелёк сообщает об ошибке, безопаснее заново получить правильный адрес, чем угадывать, какой символ исправить. [3] [4]

Теперь техническая подробность: Bech32 и Bech32m — форматы кодирования адресов. BIP 350 определяет Bech32 для нативных адресов witness версии 0, а Bech32m — для версий от 1 до 16. Версия witness — число, различающее правила проверки выходов этого типа. Более новый формат устраняет слабость контрольной суммы при вставке символов. Это не делает все старые адреса недействительными и не требует преобразовывать их вручную. [4]

Узел — программа, подключённая к сети Bitcoin; Full Node самостоятельно проверяет правила транзакций и блоков. Однако новые данные нужно откуда-то получать. При Eclipse Attack злоумышленник контролирует все соединения узла и может скрывать часть происходящего в сети. Узел продолжает отвергать недействительные блоки, но располагает неполной информацией. Книга показывает важную разницу: проверка полученных данных не равна доступу ко всем необходимым данным. [5]

Злоумышленник не может просто навязать изолированному узлу произвольный блок. Для действительного подтверждения своего платежа ему нужен и действительный блок, отвечающий Proof of Work — требованию вычислительного доказательства работы. После восстановления связи узел может обнаружить другую действительную ветвь с большей накопленной работой. Он перейдёт на неё, и если исходного платежа там нет, прежнее подтверждение перестанет действовать. Поэтому безопасность включает проверку правил и устойчивые к атакам сетевые соединения. [5]

Начните с вопроса, знакомого по собственному опыту, например об адресе. Затем проследите, что позволяет решение и где его пределы. Этот обзор основан на выходных данных, официальном оглавлении, выбранных публичных отрывках об адресах и Eclipse Attack, а также BIP 350. Это не рецензия на всю книгу или подкаст, на котором она основана. Исторические параметры сети и тогдашний этап разработки нужно отличать от современного программного обеспечения. [1] [2] [3] [4] [5]

Для полной картины прочитайте эту статью вместе с Bitcoin Core, Taproot, Правила консенсуса, Кошелёк.

01Нужно ли уметь программировать, чтобы чему-то научиться из книги?

Для понимания вопросов об адресах или изоляции узла программировать не нужно. Однако в книге есть и сложные технические главы. Начните со знакомой ситуации и постепенно добавляйте подробности; этот обзор объясняет лишь выбранные темы.

02Гарантируют ли правильный адрес и собственный Full Node безопасный платёж?

Они решают разные задачи. Контрольная сумма не проверяет получателя, а собственный узел не отменяет потребность получать данные из сети. Проверка адреса, соблюдение правил и подтверждение в цепочке связаны, но не заменяют друг друга.

DOC · 001Sjors Provoost — paperback copyrightПервичный источник DOC · 002Bitcoin: A Work in Progress — official contentsПервичный источник DOC · 003Sjors Provoost — What Is a Bitcoin Address?Первичный источник DOC · 004BIP 350 — Bech32mПервичный источник DOC · 005Sjors Provoost — Eclipse AttacksПервичный источник
Обновлено: Сначала источники · Не является инвестиционной рекомендацией