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와 프로토콜에서 생깁니다.