Глоссарий / Адреса и ключи
P2TR
Другие названия: адрес Taproot, Pay-to-Taproot, адрес bc1p.
- Что такое P2TR?
- P2TR направляет платеж на один скорректированный публичный ключ длиной 32 байта, поэтому расход по ключевому пути выглядит ончейн одинаково, независимо от того, подписал его один человек или сложный контракт был урегулирован кооперативно.
Определено в BIP-341.
Pay to taproot является версией свидетеля 1, работающая с блока 709 632 от 14 ноября 2021 года, и записывается она адресом из 62 символов, начинающимся с bc1p. Кооперативный расход публикует одну подпись Schnorr длиной 64 байта и стоит около 57,5 vbytes на вход, это самый дешевый вход в биткоине. Какие бы альтернативные правила ни были заложены в выход, они остаются невидимыми, пока кто-нибудь действительно ими не воспользуется.
Как это работает
Выход P2TR представляет собой OP_1, за которым следует помещение 32 байт, всего 34 байта, и эти байты являются публичным ключом x-only. X-only означает, что координата y отбрасывается и выводится, что экономит один байт по сравнению со сжатыми ключами в 33 байта, используемыми везде в остальных случаях.
Ключ, который вы видите, не является ключом, которым кто-либо владеет. Это внутренний ключ, скорректированный хешем от самого себя и корня Меркла дерева альтернативных скриптов, так что опубликованное значение фиксирует сразу и кооперативный путь, и каждый запасной вариант. Затем расход идет одним из двух путей. Ключевой путь создает одну подпись по скорректированному ключу и не раскрывает ничего другого. Путь скрипта раскрывает один лист дерева плюс хеши ветви, доказывающие, что этот лист принадлежит дереву, и оставляет остальную часть дерева в тайне навсегда.
Подписи Schnorr по BIP-340 делают ключевой путь дешевым и приватным. Они занимают 64 байта против 71 или 72 для подписи ECDSA в кодировке DER и складываются линейно, поэтому несколько подписантов могут объединить свои ключи и создать одну подпись по MuSig2. Схема 2-из-2, которая работает кооперативно, в итоге неотличима от одного человека, оплачивающего счет.
Поскольку версия свидетеля 1 требует bech32m, адрес bc1p использует константу контрольной суммы BIP-350, а не исходную из bech32.
Где это встречается
Кошельки, использующие Taproot по умолчанию, производят ключи от ветви BIP-86 по пути m/86'/0'/0'. Bitcoin Core добавил кодировку в версии 22.0 и начал генерировать дескрипторы tr() для новых дескрипторных кошельков в версии 23.0.
Инскрипции помещают произвольные данные в свидетель пути скрипта Taproot, поэтому значительная доля активности bc1p не имеет отношения к платежам. Это следствие скидки на данные свидетеля, а не свойство типа адреса.
Трудности возникают на периферии. Некоторые биржи до сих пор отклоняют адреса вывода bc1p, и некоторые старые платежные терминалы тоже. Внутри вашего кошелька обходного пути нет: используйте адрес bc1q из той же сид-фразы и позже объедините средства, если хотите держать все под Taproot.
P2TR vs Taproot
Taproot является обновлением, а P2TR представляет собой тип выхода, который оно создало. Мягкий форк объединил три спецификации: BIP-340 определил подписи Schnorr, BIP-341 определил формат выхода и правила его расходования, а BIP-342 определил tapscript, скорректированный язык скриптов, используемый внутри дерева. P2TR является той частью, с которой вы взаимодействуете, адрес, начинающийся с bc1p. Фраза «я использую Taproot» почти всегда означает «мой кошелек выдает мне адреса P2TR», но обновление также изменило то, как проверяются подписи внутри скриптов, которых вы, возможно, никогда не коснетесь.