692 / 736BIP347

OP_CAT

Tapscript 中的数据拼接

BIP 347 提议在 Tapscript 中恢复一项简单操作,用于拼接两个栈元素,从而扩展 Bitcoin 合约的设计空间。

OP_CAT 是一项拟议的 Tapscript opcode;当结果不超过 520 字节上限时,它会拼接两个字节序列。目前它尚未在 mainnet 激活。

该规范在 Tapscript 中重新定义 OP_SUCCESS126。此操作取出栈顶的两个元素,按栈顺序拼接,再把结果压回栈中。 [1]

最初的 OP_CAT 在 Bitcoin 早期与其他 opcodes 一同被禁用。新提案仅适用于 Tapscript,并保留单个栈元素 520 字节的现有限制。 [2]

拼接让 script 能够构造结构化数据并对其进行哈希。支持者据此提出 covenants、交易树、vaults,以及证明未来交易属性的方案。 [1]

这个 opcode 本身既不规定某一种应用,也不构成通用虚拟机。具体协议的安全性取决于它如何把 OP_CAT 与哈希、签名和花费规则组合起来。 [1]

该 BIP 的状态为 Complete,这表示文档成熟度,而不表示已在共识中激活。按照 Tapscript 规则,mainnet 节点目前会把 OP_SUCCESS126 视为 script 成功终止。 [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).

01OP_CAT 目前已在 Bitcoin mainnet 激活吗?

没有。BIP 347 是一份已经完成的提案规范,但该变更尚未作为 mainnet 共识规则激活。

02OP_CAT 是否意味着通用 smart contracts?

不是。它只增加一项数据拼接操作;能力与风险取决于采用它的具体 scripts 和协议。

DOC · 001BIP 347 — OP_CAT in Tapscript规范 DOC · 002Bitcoin Optech — OP_CAT文档 DOC · 003Bitcoin Core — Tapscript interpreter一手来源 DOC · 004BIP 342 — Validation of Taproot Scripts规范
修订日期: 来源优先 · 非投资建议