Глоссарий / Протокол и обновления
Предложение по улучшению Bitcoin
Другие названия: BIP.
- Что такое предложение по улучшению Bitcoin?
- Предложение по улучшению Bitcoin представляет собой нумерованный проектный документ, в котором описано изменение биткоина или стандарт, которому должны следовать кошельки; при этом сам документ не обладает полномочиями навязывать его.
Определено в BIP-2.
BIP устроены так: биткоин записывает в них свои изменения. Подать BIP может любой, редактор присваивает номер, и в репозитории сейчас несколько сотен таких документов со статусами от Draft до Final и Withdrawn. Эти номера проникают в продукты, которыми вы пользуетесь: 12 слов, которые сгенерировал ваш кошелек, относятся к BIP39, а адрес, который он вывел, получен по BIP84 или BIP86.
Как это работает
Процесс BIP представляет собой систему документооборота, а не руководящий орган.
Он заимствован у Python. Amir Taaki написал BIP-1 в 2011 году по образцу предложений по улучшению этого проекта, а Luke Dashjr в 2016 году заменил его на BIP-2, чтобы точнее определить, что означает каждый статус и какие доказательства нужны для продвижения. Путь незамысловат: публично изложить идею, учесть критику, открыть pull request в репозитории bitcoin/bips и дождаться, пока редактор проверит оформление и присвоит номер.
Предложения бывают трех типов. Документы Standards Track охватывают все, что влияет на совместимость программного обеспечения, от правил консенсуса до форматов адресов. Документы Informational фиксируют проект или соглашение, никого ни к чему не обязывая. Документы Process описывают сам процесс. У каждого есть статус: они проходят через Draft и Proposed к Final или Active, а многие в итоге получают Withdrawn, Rejected или Replaced.
Чего номер не дает, так это полномочий. Присвоенный BIP является записью в указателе, а не одобрением, да и органа, который мог бы его одобрить, не существует. Принятие происходит отдельно и добровольно: кто-то пишет код, рецензенты его разбирают, реализация его выпускает, а пользователи решают запустить эту версию. Очень многие изменения в Bitcoin Core вообще не имеют BIP, а очень многие BIP никто никогда не реализовал.
Почему это важно при покупке биткоина
Номера BIP встречаются в меню кошельков, и выбор неверного номера часто приводит к выводу, что ваши биткоины пропали.
Самый частый случай связан с восстановлением по сид-фразе. BIP39 стандартизировал список слов из 2048 элементов и правило превращения 12 или 24 из них в мастер-ключ, поэтому фразу, записанную от одного бренда, можно ввести в кошелек другого. Чего BIP39 не стандартизирует, так это того, где кошелек ищет ваши биткоины. BIP44 выводит устаревшие адреса, начинающиеся с 1, BIP49 выводит вложенные адреса SegWit, начинающиеся с 3, BIP84 выводит нативные адреса SegWit, начинающиеся с bc1q, а BIP86 выводит адреса Taproot, начинающиеся с bc1p. Если восстановить фразу в программе, которая по умолчанию использует другой путь, баланс покажет ноль, хотя биткоины остаются нетронутыми по тому пути, который вы действительно использовали. Запишите путь деривации на ту же карточку, что и резервную копию, и проблема не возникнет.
У форматов адресов та же практическая особенность. Bech32 появился в BIP173, а bech32m в BIP350, и поддержка приходила в отрасли в разное время, поэтому некоторые платформы долго не могли отправлять на адрес bc1p после активации Taproot. Перед крупным выводом сначала отправьте небольшую сумму и убедитесь, что формат назначения принимается. У зависших транзакций тоже есть свой номер: повышение комиссии через replace-by-fee описано в BIP125, и кошелек, который его поддерживает, избавляет вас от ожидания из-за неудачно рассчитанной комиссии.
Относитесь к номеру как к метке, а не как к гарантии. BIP70, протокол платежей, был реализован BitPay и Coinbase и выглядел будущим платежей продавцам; Bitcoin Core объявил его устаревшим в версии 0.19 и удалил в 0.20, и сегодня им никто не пользуется. BIP фиксирует, что кто-то тщательно продумал вопрос. Пользуется ли им кто-нибудь до сих пор, это отдельный вопрос, который стоит задать.
От BIP340 до блока 709 632: как предложение становится правилом
Taproot лучше всего показывает весь путь, потому что у каждого его этапа есть дата.
Проект был опубликован в виде трех связанных документов: BIP340 для подписей Schnorr, BIP341 для типа выхода Taproot и BIP342 для новых правил скриптов, написанных Pieter Wuille вместе с Jonas Nick, Tim Ruffing и Anthony Towns. Они были включены в репозиторий в январе 2020 года после примерно двух лет публичного обсуждения. Включение в репозиторий ничего не изменило в биткоине: оно означало, что у документов есть номера.
Затем реализация и рецензирование заняли большую часть года, а спор о том, как активировать правила, еще несколько месяцев, причем на столе было два конкурирующих механизма. Компромисс, известный как Speedy Trial, вышел в Bitcoin Core 0.21.1 в мае 2021 года. Майнеры сигнализировали о готовности в течение определенного окна, блокировка была достигнута 12 июня 2021 года, и правила стали обязательными на блоке 709 632 14 ноября 2021 года. Это примерно 22 месяца от документа с номером до действующего правила, и документ не сделал никакой работы: ее выполнили операторы узлов, запускавшие код.
Bitcoin Improvement Proposal vs правила консенсуса
Bitcoin Improvement Proposal представляет собой документацию; правила консенсуса представляют собой то, что узлы фактически применяют. Эти две вещи совпадают только тогда, когда предложение реализовано и принято, и разрыв в обе стороны поучителен. У BIP70 есть номер, и он нигде ничего не обеспечивает. Ограничение в 21 миллион не имеет никакого BIP, потому что оно старше процесса и существует исключительно в коде. Когда вы хотите узнать, что делает биткоин, читайте программное обеспечение или правила, которые оно обеспечивает; когда вы хотите узнать, что кто-то предложил, читайте BIP.
Bitcoin Improvement Proposal vs софт-форк
Bitcoin Improvement Proposal является документом; софт-форк представляет собой событие развертывания, которое ужесточает правила, соблюдаемые всеми. Большинство BIP не являются форками какого-либо рода: BIP39 никогда не затрагивал протокол, как и схема URI в BIP21, которая позволяет платежной ссылке открывать ваш кошелек. Когда софт-форк все же происходит, для его описания обычно нужно несколько BIP, плюс еще один для самого механизма активации, поскольку BIP9 и BIP8 существуют только для определения того, как работает сигнализация. Смешение этих двух понятий приводит к тому, что люди говорят, будто биткоин изменился при публикации предложения, что обычно происходит на годы раньше и иногда остается неверным навсегда.