OP_RETURN은 스크립트 실행을 즉시 실패시키는 명령으로, 해당 출력은 지출할 수 없습니다. 일반적으로 0 sat 출력에 작은 데이터를 담아 거래와 함께 블록에 남기는 데 쓰입니다. 파일 보관함이나 수신 주소가 아니며, 데이터 자체에 진실성·저작권·외부 상태를 보증하지 않습니다. 허용 크기와 출력 개수는 합의 규칙과 별개인 노드 중계 정책이므로 Bitcoin Core 버전과 설정을 밝혀야 합니다.
OP_RETURN 출력은 코인을 받을 주소가 아닙니다
일반 지급 출력은 나중에 만족할 지출 조건을 담지만 OP_RETURN으로 시작하는 null data 출력은 실행 시 실패하므로 지출할 수 없습니다. 과거 Bitcoin Developer Guide는 표준 null data 출력을 0 sat으로 만들고 별도 signature script가 없다고 설명합니다. 데이터가 들어 있어도 개인키로 찾아갈 잔액이 생기는 구조가 아닙니다.
따라서 OP_RETURN 뒤의 바이트를 주소로 읽거나 해당 출력에 보낸 금액을 회수 가능한 예치금으로 보면 안 됩니다. 지갑이 실수로 양의 금액을 넣게 허용하더라도 지출 불가 스크립트에 묶인 가치는 되돌릴 수 없습니다. 생성 도구가 출력 금액을 0으로 고정하는지 확인해야 합니다.
OP_RETURN은 데이터를 가리키는 지출 불가 출력이지, 데이터의 의미를 검증하는 인증서가 아닙니다.
JOBCOIN 해설

그림은 이 주제의 공통 개념을 단순화한 설명입니다. 아래 항목에서 이 글의 구체적인 조건과 예외를 함께 읽어보세요.
- OP_RETURN 출력은 코인을 받을 주소가 아닙니다
일반 지급 출력은 나중에 만족할 지출 조건을 담지만 OP_RETURN으로 시작하는 null data 출력은 실행 시 실패하므로 지출할 수 없습니다.
- 거래에 포함된 데이터는 블록 기록의 일부가 됩니다
거래가 블록에 포함되면 OP_RETURN scriptPubKey의 바이트도 노드가 검증하는 거래 데이터에 포함됩니다.
- 크기·개수 규칙은 버전별 정책을 적어야 합니다
오래된 Developer Guide에는 Bitcoin Core 0.
AI로 제작한 개념도 · 실제 가격·거래 내역·통계가 아닙니다.
거래에 포함된 데이터는 블록 기록의 일부가 됩니다
거래가 블록에 포함되면 OP_RETURN scriptPubKey의 바이트도 노드가 검증하는 거래 데이터에 포함됩니다. 이후 txid, 블록 높이와 원시 출력으로 특정 바이트가 그 거래에 있었음을 대조할 수 있습니다. 그러나 사람이 붙인 설명이나 외부 파일 내용까지 체인이 이해하는 것은 아닙니다.
예를 들어 문서 해시를 기록하면 나중에 제시한 문서가 같은 해시인지 비교할 수 있습니다. 하지만 누가 언제 원문을 작성했는지, 서명자가 법적 권한을 가졌는지, 해시 대상이 어떤 정규화 규칙을 썼는지는 별도 증거가 필요합니다. 해시 일치와 권리 증명을 같은 결론으로 쓰지 마세요.
| 항목 | 체인에서 확인 | 별도 검증 필요 |
|---|---|---|
| 원시 바이트 | 거래 출력에 포함됨 | 문자 인코딩과 의미 |
| 문서 해시 | 기록값과 비교 가능 | 원문의 출처와 작성자 |
| 시간 | 포함 블록 순서와 시각 | 정확한 창작 시각 |
| 소유권 | 자동 증명하지 않음 | 계약·법률 문서 |
| 외부 URL | 문자열 존재 | 현재 접속성과 내용 불변 |
크기·개수 규칙은 버전별 정책을 적어야 합니다
오래된 Developer Guide에는 Bitcoin Core 0.12.0이 최대 83바이트의 단일 null data 출력을 기본 중계했다고 기록돼 있습니다. 이 역사적 값을 현재 네트워크의 영구 합의 한도로 표현하면 틀립니다. Bitcoin Core 30.0 릴리스 노트는 기본 `-datacarriersize`를 100,000으로 높여 거래 크기 한도가 먼저 작동하게 했고, 여러 OP_RETURN 출력을 중계·채굴 정책상 허용했다고 밝힙니다.
30.0의 `-datacarriersize`는 한 거래에 있는 모든 data carrier 출력의 scriptPubKey 크기를 합산해 적용하며, 각 scriptPubKey 앞에 붙는 길이 필드는 합계에서 제외합니다. 운영자는 설정을 바꿀 수 있고 다른 구현은 다른 정책을 쓸 수 있습니다. 한 노드가 받아들인 거래가 모든 피어에 전파되거나 채굴된다는 보장은 없습니다.
- 사용 노드 구현과 정확한 버전을 기록합니다.
- OP_RETURN 출력 개수와 scriptPubKey 데이터 합계를 계산합니다.
- 출력 금액이 0 sat인지 확인합니다.
- 총 거래 weight·vsize와 수수료율을 함께 봅니다.
- 중계 성공과 블록 포함을 별도 상태로 기록합니다.
합의 유효성과 표준 중계는 다른 관문입니다
Bitcoin Core 정책 문서는 멤풀 정책이 합의 검증에 추가되는 로컬 규칙이고 블록 안 거래에는 적용되지 않는다고 설명합니다. `datacarrier` 설정은 노드가 미확인 거래를 중계·채굴 후보로 다루는 방식을 조정하는 정책 범주입니다. OP_RETURN이 있다는 이유만으로 거래가 합의상 무효인 것은 아닙니다.
반대로 합의상 가능한 형식이라고 일반 지갑이 전파를 도와야 하는 것도 아닙니다. 거래 작성 전 사용 노드의 `testmempoolaccept` 결과와 실제 피어 전파를 확인해야 합니다. 이미 서명한 뒤 정책 차이를 발견하면 수수료만 올려 해결되지 않을 수 있습니다.
데이터는 무료로 저장되지 않습니다
OP_RETURN 데이터도 거래 크기를 늘리므로 수수료에 반영됩니다. 가정으로 데이터와 push opcode 때문에 vsize가 50 vB 늘고 수수료율이 10 sat/vB라면 추가 비용은 약 500 sat입니다. 정확한 증가량은 길이 인코딩과 나머지 거래 구조에 따라 달라집니다.
출력이 UTXO 집합에 지출 가능 항목으로 남지 않는 장점이 있어도 블록 데이터와 노드 저장·전송 자원을 사용합니다. 큰 파일을 그대로 넣는 용도로 보지 말고, 정말 필요한 최소 커밋먼트인지 검토하세요. 외부 저장소의 해시만 넣는 경우에도 장기 가용성은 외부 저장소가 책임집니다.
탐색기 디코딩은 해석 도구이지 원문 증명자가 아닙니다
탐색기는 바이트를 UTF-8, 16진수 또는 알려진 프로토콜 형식으로 표시할 수 있습니다. 디코딩 결과가 읽기 쉬운 문장이라고 해당 메시지를 거래 입력 소유자가 작성했다고 자동 증명하지 않습니다. 거래 서명은 입력 지출 권한을 증명하지만 모든 출력 데이터에 대한 법적 선언을 뜻하지 않습니다.
검증 기록에는 txid, 출력 인덱스, 원시 scriptPubKey, 예상 인코딩과 독립적으로 계산한 해시를 남기세요. 서비스 화면 캡처만 보관하면 디코더가 바뀌거나 사이트가 사라질 때 재현하기 어렵습니다.
자주 묻는 질문
OP_RETURN에 보낸 비트코인을 되찾을 수 있나요?
지출 불가 출력이라 되찾을 수 없습니다. 정상적인 data carrier 출력은 0 sat으로 만들어야 합니다.
현재도 OP_RETURN은 최대 80바이트인가요?
모든 노드의 영구 규칙이 아닙니다. Bitcoin Core 30.0 기본 정책은 크게 바뀌었고 구현·버전·설정별 확인이 필요합니다.
문서 해시를 기록하면 저작권이 증명되나요?
해시가 특정 거래에 포함됐다는 사실은 검증할 수 있지만 작성자·권리·원본 시각은 별도 증거가 필요합니다.



