OP_CAT は、結果が 520 バイトの上限を超えない場合に二つのバイト列を連結する、Tapscript 向けの提案中の opcode です。mainnet ではまだ有効化されていません。
仕様は Tapscript の OP_SUCCESS126 を再定義します。この操作はスタック最上部の二要素を取り出し、スタック上の順序で連結して結果をスタックへ戻します。 [1]
元の OP_CAT は、Bitcoin 初期にほかの opcodes とともに無効化されました。新提案は Tapscript に限定され、単一スタック要素に対する現行の 520 バイト上限を維持します。 [2]
連結により、script 内で構造化データを組み立ててハッシュ化できます。支持者は、covenants、トランザクション木、vaults、将来のトランザクションの性質に関する証明などへ応用できると説明しています。 [1]
この opcode だけで特定の用途や汎用仮想マシンが定まるわけではありません。個別プロトコルの安全性は、OP_CAT をハッシュ、署名、支出ルールとどう組み合わせるかに左右されます。 [1]
BIP の状態は Complete ですが、これは文書の成熟度を示すもので、コンセンサスでの有効化を意味しません。現在の mainnet ノードは Tapscript の規則に従い、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 とプロトコルから生じます。