ГЛАВНАЯ / ИНСТРУКЦИИ / BITCOIN TAPROOT SCRIPT PATH: КАК ПРОВЕРИТЬ СКРИПТ И CONTROL BLOCK
Bitcoin Taproot script path: как проверить скрипт и control block
При Taproot script-path spend транзакция раскрывает выбранную скриптовую ветвь и данные, доказывающие, что она входила в дерево, закоммиченное в выходном ключе. Проверка начинается с witness, отделяет возможный annex, затем валидирует script, control block, Merkle path и правила leaf version. Недостаточно убедиться, что раскрытый скрипт выглядит знакомо.
После optional annex скрипт и control block находятся в конце стека
BIP341 сначала проверяет наличие annex по позиции и маркеру. После возможного удаления один witness item означает key path, два или более – script path. Для script path предпоследний элемент – скрипт, последний – control block, а предыдущие элементы передают начальный стек аргументов.
Сверьте порядок элементов, длины и hex-значения. Ошибка сериализации или перестановка script и control block меняет проверяемую структуру. Источник данных должен показывать witness конкретного входа, а не только preview кошелька.
Control block связывает leaf и внутренний ключ с Taproot tree
Control block начинается байтом с leaf version и parity выходного ключа, затем содержит 32-байтовый internal key и Merkle path. Допустимая длина – 33 + 32m байт, где m – целое число от 0 до 128 включительно по BIP341. Неверная длина или некорректный internal key делают проверку неуспешной.
Валидатор вычисляет TapLeaf commitment из версии и скрипта, сворачивает Merkle path до корня, затем применяет tweak к internal key. Полученный output key должен совпасть с программой P2TR выхода с соответствующей чётностью. Witness доказывает включение leaf в commitment, а не просто предъявляет независимый скрипт.
- control block length соответствует 33 + 32m
- internal key декодирован
- Merkle path свёрнута до output key
Текущий tapscript проверяется по правилам BIP342
Leaf version задаёт правила интерпретации скрипта. Для tapscript BIP342 использует версию 0xc0 с учётом parity-бита, упакованного в control block. Неизвестную leaf version нельзя автоматически читать как обычный Bitcoin Script или проверять по догадке.
В tapscript действуют Schnorr signature opcodes, CHECKSIGADD, правила обработки подписей и sigops budget. CHECKMULTISIG и CHECKMULTISIGVERIFY отключены. Перед анализом условных ветвей выясните фактическую версию leaf и применимый набор правил.
- leaf version сверена
- правила BIP342 применены только к tapscript
- финальное условие стека прошло
После проверки commitment отдельно валидируйте результат скрипта
Затем tapscript исполняется на аргументах witness согласно BIP342. Проверьте, какая ветвь выполняется, какие подписи относятся к каким ключам, как обрабатываются пустые подписи и каким условием завершается скрипт. Верная Merkle proof ещё не означает, что условие траты выполнено.
Для аудита сохраните scriptPubKey исходного выхода, полный witness, raw transaction, block version и данные подписей. Независимо пересчитайте leaf hash и дерево совместимым узлом или инструментом. До подписи дополнительно сверьте получателя, сумму и сдачу: корректность Script не подтверждает благонадёжность контрагента.
Частые вопросы
Что доказывает control block?
Он связывает раскрытые leaf и internal key с Taproot output key через Merkle path и parity.
Какие элементы witness относятся к script path?
После optional annex два последних элемента – script и control block; предшествующие дают стек.
Любая версия leaf является tapscript?
Нет. BIP342 относится к определённой версии leaf; другие нельзя толковать по предположению.
Если Merkle proof верна, средства можно потратить?
Нет. Также должны пройти исполнение скрипта и проверки подписей.
Раскрывается ли всё дерево по адресу?
Нет. Адрес несёт commitment, а witness расходования раскрывает выбранный путь.
Чек-лист: bitcoin taproot script path: как проверить скрипт и control block
- исходный output подтверждён как native P2TR;
- optional annex обработан по BIP341;
- script и control block извлечены без перестановки;
- длина control block и leaf version допустимы;
- Merkle root и tweaked output key совпадают;
- правила BIP342 применены к tapscript leaf;
- аргументы и исполнение скрипта проверены.
Материал подготовлен редакцией сайта и проверен 5 ноября 2026 года. Условия бирж, кошельков и блокчейн-сетей могут меняться. Перед операцией сверяйте данные в интерфейсе выбранного сервиса.