ГЛАВНАЯ / ИНСТРУКЦИИ / TAPSCRIPT И ВЕТВИ TAPROOT: КАК ЧИТАТЬ УСЛОВИЯ РАСХОДОВАНИЯ
Tapscript и ветви Taproot: как читать условия расходования
Tapscript исполняется только в соответствующем script-path расходовании Taproot. BIP-342 меняет работу подписи, лимитов и некоторых опкодов, поэтому для чтения транзакции нужно отделять скрипт, входной стек и control block.
Tapscript находится в witness вместе с proof для Taproot tree
В script-path input после удаления возможного annex предпоследний элемент witness является tapscript, последний – control block, а предыдущие элементы образуют начальный стек аргументов. BIP-341 проверяет, что leaf и control block ведут к output key, затем BIP-342 применяет правила Tapscript для поддерживаемой версии leaf.
Key-path расходование идёт по другой ветви правил и не запускает Tapscript. Поэтому наличие Taproot-адреса ещё не означает, что при его трате будет исполнен пользовательский скрипт.
- определите тип траты по witness;
- отделите аргументы стека от скрипта и control block;
- проверьте, что leaf действительно связан с output key.
CHECKSIGADD помогает собрать пороговую логику в tapscript
В Tapscript OP_CHECKSIG и OP_CHECKSIGVERIFY используют BIP-340 подписи. OP_CHECKSIGADD позволяет прибавлять успешные проверки к счётчику, после чего скрипт может сопоставить число с порогом. Это способ выразить policy непосредственно в script path.
Старые OP_CHECKMULTISIG и OP_CHECKMULTISIGVERIFY в Tapscript отключены. Перенос старого скрипта без адаптации может привести к невалидной трате. До подписания сверяйте порядок публичных ключей, аргументы стека и ожидаемое число успешных подписей.
- проверьте порядок ключей и соответствующих подписей;
- различайте пустой аргумент подписи и невалидную подпись;
- не ожидайте работы CHECKMULTISIG в Tapscript.
Некоторые лимиты и будущие опкоды работают иначе
BIP-342 определяет собственный budget для signature operations и сохраняет ограничения размера элемента стека. Также в языке есть OP_SUCCESSx, которые зарезервированы для расширения: их наличие может привести к успешной проверке по действующим правилам, не исполняя скрипт так, как ожидает читатель.
Поэтому неизвестный opcode нельзя интерпретировать на глаз как обычную команду. Для ручного анализа используйте декодер, который знает версию правил, и сверяйте результат с точной спецификацией. Консенсусные правила Bitcoin и дополнительные relay-политики узла – разные уровни.
Проверьте версию leaf и итоговое состояние стека
Сначала убедитесь, что это Taproot script-path и версия leaf относится к Tapscript, описанному BIP-342. Затем проследите декодирование команд, ветвления, проверку подписей и расход ресурсов. Успешный результат должен завершиться ровно одним истинным элементом на стеке.
Скрипт и witness могут содержать данные, которые важны для интерпретации, но не являются текстовой инструкцией человеку. Не вставляйте неизвестные payload в кошелёк или онлайн-декодер вместе с секретами; для проверки достаточно публичной транзакции и локального инструмента.
Частые вопросы
Выполняется ли Tapscript при каждой Taproot-трате?
Нет. Он относится к script-path расходованию; key-path проверяет подпись для output key.
Можно ли использовать CHECKMULTISIG в Tapscript?
Эти опкоды отключены по правилам BIP-342. Для подходящей политики предусмотрен, в частности, OP_CHECKSIGADD.
OP_SUCCESSx гарантирует, что скрипт безопасен?
Нет. Это механизм расширения консенсуса; его смысл зависит от правил и положения в скрипте, а не служит оценкой безопасности приложения.
Чек-лист: tapscript и ветви taproot: как читать условия расходования
- тип входа установлен как Taproot script path;
- leaf version и состав witness проверены;
- control block связывает лист с output key;
- порядок ключей, подписи и стек прослежены;
- неизвестные opcode не истолкованы как безвредные без спецификации.
Материал подготовлен редакцией сайта и проверен 11 октября 2026 года. Условия бирж, кошельков и блокчейн-сетей могут меняться. Перед операцией сверяйте данные в интерфейсе выбранного сервиса.