Opcode는 명령 바이트이며 개인키나 독립 거래가 아니다. 성공적인 사용에는 완전히 유효한 스크립트와 거래 맥락이 필요하며, 연산 이름만으로는 부족하다.
Script는 명령과 데이터 항목으로 해독된다. OP_PUSHDATA는 바이트를 넣도록 지정하며, 넣은 데이터 안의 바이트를 다른 opcode로 다시 해석하지 않는다. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Core v29.0 — Opcode definitions]
OP_DUP는 스택 맨 위를 복제하고 OP_DROP은 제거한다. 인수가 없으면 실패할 수 있으며 항목 순서와 인코딩도 조건의 일부다. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Developer Guide — Transactions]
OP_EQUAL은 두 항목을 비교해 결과를 넣는다. OP_EQUALVERIFY는 다르면 실패하고 같으면 결과를 제거한다. 둘 다 단독으로 키 통제권을 검증하지 않는다. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Core v29.0 — Opcode definitions]
OP_CHECKSIG는 공개키와 거래에서 도출한 메시지에 대해 서명을 검증한다. Legacy와 SegWit v0은 ECDSA, Tapscript의 일반적인 32바이트 키는 Schnorr를 쓴다. sighash도 결속 범위를 결정한다. [Bitcoin Core v29.0 — Script interpreter] [BIP 342 — Validation of Taproot Scripts]
OP_IF와 OP_ELSE는 스택에 따라 분기를 고른다. Script에는 일반 반복문이 없지만 미실행 분기 규칙도 opcode 종류와 버전에 달려 있다. [Bitcoin Core v29.0 — Script interpreter] [BIP 342 — Validation of Taproot Scripts]
OP_CHECKLOCKTIMEVERIFY는 절대 잠금, OP_CHECKSEQUENCEVERIFY는 해당 입력의 상대 조건을 검사한다. 직접 기다리거나 송금하거나 서명 조건을 대체하지 않는다. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Developer Guide — Transactions]
Tapscript는 서명 규칙을 바꾸고 OP_CHECKSIGADD를 추가하며 실행된 OP_CHECKMULTISIG를 거부한다. 버전 없는 명령 목록은 완전한 검증 안내가 아니다. [BIP 342 — Validation of Taproot Scripts]
BIP 342는 확장을 위해 OP_SUCCESSx를 예약한다. Tapscript 해독 중 만나면 그 규칙에 따라 성공한다. 새 연산 제안이 활성화됐거나 의도한 조건을 안전하게 강제한다는 뜻이 아니다. [BIP 342 — Validation of Taproot Scripts] [Bitcoin Core — Segregated Witness benefits]
네트워크 정책은 합의상 블록에 허용되는 거래의 중계를 거부할 수 있다. Bitcoin Core v29.0은 기본적으로 OP_SUCCESSx 사용을 억제한다. 노드 정책은 새 합의 규칙이 아니다. [BIP 342 — Validation of Taproot Scripts] [Bitcoin Core v29.0 — Standard script flags]
스크립트를 읽을 때 버전, 초기 스택, 서명 메시지, 모든 실패 경로를 파악한다. 유효한 문법이나 좋은 opcode 이름이 올바른 보관을 보장하지 않으며 전체 사용이 중요하다. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Developer Guide — Transactions]
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Bitcoin Script, CHECKLOCKTIMEVERIFY, CHECKSEQUENCEVERIFY, Taproot.