카테고리: 기타 🤖

<aside> ⚠️ 이 글은 Team Corn의 Berlin이 작성한 해설입니다. 번외 1의 BIP110 원문 번역과 번외 2의 코드 리뷰 번역을 일반 독자용으로 다시 풀어 설명하며, 원문·코드 번역과 달리 논쟁의 쟁점과 독자가 오해하기 쉬운 지점을 함께 정리합니다. 작성자는 개인적으로 BIP110을 지지합니다. 본문에서는 찬성·반대 양측의 논거를 가능한 한 그대로 전달하고자 했지만 찬성측 견해가 강하게 묻어 나올 수 있습니다.

</aside>

TL;DR

OP_RETURN은 비트코인 거래 안에 작은 데이터를 남기는 가장 노골적인 방법이다. 하지만 비트코인 노드는 그 데이터를 “이미지”, “문서”, “토큰”으로 이해하지 않는다. 노드는 단지 “이 출력은 소비될 수 없고, UTXO set에 남길 필요가 없다”는 script 구조를 본다.

문제는 데이터가 커질 때 생긴다. 작은 OP_RETURN은 주로 “짧은 태그”나 “외부 데이터에 대한 지문”처럼 쓰이지만, 큰 OP_RETURN이나 큰 witness/script 데이터는 비트코인 블록을 파일 저장소처럼 쓰게 만든다. 그러면 비용은 데이터를 넣은 사람만 부담하는 것이 아니라, 모든 풀 노드 운영자에게 장기적으로 전가된다.

BIP110은 이런 관점에서 “비트코인은 돈을 검증하는 네트워크이지, 임의 파일을 보관하는 데이터베이스가 아니다”라는 경계를 합의 규칙으로 다시 세우려는 제안이다. 핵심은 OP_RETURN을 완전히 없애는 것이 아니라, 오래 유지되어 온 약 80바이트 payload 수준의 작은 사용만 남기고, 256바이트를 넘는 연속 임의 데이터와 절대 실행되지 않는 Taproot script branch를 이용한 inscription 방식까지 제한하자는 것이다.


1. 먼저 구분해야 할 것: 비트코인이 “데이터”를 본다는 말의 뜻

비트코인 블록 안에는 당연히 byte가 들어간다. 거래 ID, public key, signature, script, witness 모두 byte다. 그래서 “비트코인은 데이터를 전혀 담지 않는다”라고 말하면 정확하지 않다.

정확한 표현은 이렇다.

즉 비트코인에게 중요한 질문은 이것이다.

이 byte가 코인을 안전하게 이동시키는 데 필요한가?

Ordinals, BRC-20, 큰 OP_RETURN 논쟁은 모두 여기서 시작한다. 사용자는 데이터를 넣고 싶어 하지만, 풀 노드는 그 데이터를 콘텐츠로 보지 않는다. 풀 노드 입장에서는 그저 검증하고 저장해야 하는 추가 byte일 뿐이다.


2. OP_RETURN은 무엇인가

OP_RETURN은 Bitcoin Script opcode다. 이 opcode가 들어간 출력은 실행되면 즉시 실패한다. 그래서 보통 다음과 같은 형태로 사용된다.

OP_RETURN <짧은 데이터>