OP_CAT — предлагаемый opcode для Tapscript, который объединяет две последовательности байтов, если итоговый элемент не превышает лимит 520 байтов; в mainnet он пока не активен.
Спецификация переопределяет OP_SUCCESS126 в Tapscript. Операция снимает два верхних элемента стека, объединяет их в порядке стека и возвращает результат в стек. [1]
Исходный OP_CAT был отключён в раннем Bitcoin вместе с другими opcodes. Новое предложение ограничено Tapscript и сохраняет действующий лимит 520 байтов для одного элемента стека. [2]
Объединение позволяет создавать в script структурированные данные и хешировать их. Сторонники выводят из этого covenants, деревья транзакций, vaults и доказательства свойств будущей транзакции. [1]
Сам opcode не задаёт ни одно конкретное приложение, ни виртуальную машину общего назначения. Безопасность отдельного протокола зависит от того, как он сочетает OP_CAT с хешами, подписями и правилами расходования. [1]
BIP имеет статус Complete, который описывает зрелость документа, а не активацию в консенсусе. Узлы mainnet сейчас считают OP_SUCCESS126 успешным завершением script по правилам Tapscript. [3]
Активация была бы soft fork: новые правила сузили бы множество ранее допустимых расходов Tapscript. Для этого потребовались бы отдельный процесс развёртывания и широкая техническая оценка. [1]
OP_CAT связан с CTV, covenants и Simplicity, но не является их синонимом. У каждого предложения свои выразительность, стоимость анализа и пространство для непредусмотренных конструкций. [1]
При проверке необходимо отделять существующую спецификацию и экспериментальные реализации от фактических правил mainnet. Wallet не должна считать OP_CAT доступным без активации. [4]
Для полной картины прочитайте эту статью вместе с Bitcoin Script, Taproot, Covenants, OP_CHECKTEMPLATEVERIFY, Soft Fork, BIP (Bitcoin Improvement Proposal).
01Активен ли OP_CAT сегодня в mainnet Bitcoin?+
Нет. BIP 347 — завершённая спецификация предложения, но изменение не было активировано как правило консенсуса mainnet.
02Означает ли OP_CAT smart contracts общего назначения?+
Нет. Он добавляет одну операцию объединения данных; возможности и риски возникают в конкретных scripts и протоколах, которые её используют.