Глоссарий / Протокол и обновления
Taproot
Другие названия: BIP341.
- Что такое Taproot?
- Taproot представляет собой мягкий форк 2021 года, который дал биткоину подписи Schnorr и новый тип выхода, где кооперативный путь расходования выглядит так же, как обычный платеж с одним ключом.
Определено в BIP-341.
Три спецификации вышли вместе: BIP-340 для подписей Schnorr, BIP-341 для типа выхода и BIP-342 для скорректированного языка скриптов. Активация произошла на блоке 709 632 14 ноября 2021 года, через четыре года после предыдущего обновления. Практический эффект состоит в том, что сложные схемы, хранилища с мультиподписью, эскроу и закрытия каналов могут рассчитываться так, что выглядят как платеж любого другого человека.
Как это работает
В основе конструкции лежит наблюдение о том, как на самом деле заканчиваются контракты: почти все они заканчиваются согласием.
Выход Taproot фиксирует две вещи одновременно внутри одного значения размером 32 байта. Одна из них является публичным ключом, которым владеют сотрудничающие стороны, кто бы они ни были. Другая представляет собой дерево Меркла, листья которого являются альтернативными скриптами, запасными вариантами, которые применяются, когда сотрудничество не удается. Публикуемый ключ представляет собой кооперативный ключ, скорректированный хешем от самого себя и корня этого дерева, а значит, выход фиксирует каждый запасной вариант, не раскрывая, что они существуют.
Затем расходование идет по одному из двух путей. Путь ключа дает одну подпись и ничего не публикует о дереве, поэтому транзакция неотличима от платежа одного человека. Путь скрипта раскрывает ровно один лист плюс хеши соседних узлов, нужные для доказательства его принадлежности к зафиксированному корню, а все остальные ветви навсегда остаются тайной. Хранилище с кворумом два из трех, ключом восстановления с задержкой по времени и аварийным условием раскрывает только то условие, которое было использовано.
BIP-342 скорректировал язык скриптов для этих листьев. OP_CHECKMULTISIG недоступен внутри листа Taproot, и его заменяет OP_CHECKSIGADD, который считает успешные подписи в стеке, а не поглощает набор сразу, что позволяет записывать пороговые проверки без прежней неловкости. Ограничение размера скрипта в 10 000 байт и лимит в 201 код операции отменены, вместо них действует бюджет операций подписи, который растет вместе с размером свидетеля. Неизвестные типы публичных ключей и неизвестные версии листьев определены как допустимые, что оставляет место для следующего обновления без нового формата адресов.
Поскольку Taproot занимает версию свидетеля 1, его адреса используют контрольную сумму bech32m из BIP-350, а не исходную bech32. Поэтому программное обеспечение может принимать bc1q и при этом отвергать bc1p.
Почему это важно при покупке биткоина
Аргумент о конфиденциальности касается почти всех, включая людей, которые никогда не напишут скрипт.
Каждый прежний способ защиты биткоина выдавал себя. Пополнение с мультиподписью 2 из 3 читалось ончейн как пополнение с мультиподписью 2 из 3, что сообщало аналитическим фирмам, а также всем, кто покупал у них данные, что адрес принадлежит кому-то, кто держит достаточно, чтобы ради этого стараться. Кооперативное расходование Taproot из той же схемы публикует одну подпись по одному ключу. Безопасность не меняется, а сигнал исчезает.
Стоимость меняется в ту же сторону. Вход Taproot по пути ключа является самым дешевым типом входа в биткоине, и разрыв растет по мере усложнения схемы, потому что запасные ветви, которые вы никогда не используете, ничего не стоят. Для того, кто строит такую схему наследования или мультиподписи, какую описывают наши обзоры аппаратных кошельков, это меняет расчет того, сколько ключей стоит держать.
Трудности реальны, и их стоит учесть заранее. Некоторые биржи до сих пор отказываются принимать bc1p как адрес для вывода, а прошивка старых аппаратных кошельков может вообще не выводить адреса Taproot. Обходной путь скучен: получайте на адрес bc1q из той же сид-фразы и переходите на Taproot, когда весь ваш набор инструментов его поддержит. От ожидания ничего не теряется, поскольку оба типа адресов происходят из одной резервной копии.
Одно честное замечание о побочных эффектах. Дешевые данные свидетеля Taproot сделали экономичными надписи, и возникший спрос поднял ставки комиссий до уровней, которых обычные платежи не видели годами. Это было следствием скидки, а не целью конструкции, и это справедливо ставить ему в упрек.
Speedy Trial, компромисс, который активировал Taproot
К началу 2021 года код уже не вызывал споров, и все же метод активации едва не потопил его.
Спор шел о BIP-8 и его флаге lockinontimeout. Один лагерь хотел LOT в значении true, что принудительно включало активацию по истечении срока независимо от сигналов майнеров, исходя из того, что 2017 год показал: майнеры могут застопорить процесс на неопределенный срок. Другой хотел false, исходя из того, что принудительная активация при слабой поддержке рискует вызвать раскол, которого она пытается избежать. Ни одна сторона не двигалась месяцами.
Speedy Trial положил конец тупику, сузив вопрос. Он сохранил подсчет битов версии по BIP-9, снизил порог до 1815 из 2016 блоков, открыл окно примерно в три месяца и установил фиксированную минимальную высоту активации 709 632, так что блокировка и принудительное исполнение оказались разделены долгим и предсказуемым промежутком. Если майнеры подавали сигнал, форк происходил в известную дату. Если нет, попытка быстро истекала и более трудный спор мог возобновиться без потерь.
Код вышел в Bitcoin Core 0.21.1 1 мая 2021 года. Майнеры преодолели порог в период сложности, закончившийся 12 июня 2021 года, дав сети пять месяцев предупреждения до изменения правил. Это остается единственным методом активации, примененным в биткоине, который был задуман в первую очередь так, чтобы дешево провалиться.
Taproot vs подписи Schnorr
Taproot является пакетом; подписи Schnorr являются одной его частью. BIP-340 определяет схему подписи, которая существует в криптографии с 1980-х годов и в принципе могла бы применяться где угодно, тогда как BIP-341 определяет, как выглядит выход биткоина, а BIP-342 определяет, что выполняется внутри него. В биткоине все три на практике неразделимы, потому что подпись BIP-340 действительна только при расходовании с версией свидетеля 1, но это отдельные документы, решающие отдельные задачи, а агрегация ключей, которая людям интереснее всего, является свойством схемы подписи, а не самого Taproot.