카테고리: 기타 🤖

<aside> 💡

이 글은 Team Corn의 Berlin이 작성한 해설입니다. OP_RETURN이라는 opcode 하나가 지나온 16년의 역사를 따라가며, 오늘의 BIP110 논쟁이 어디서 왔는지를 추적합니다. 작성자는 개인적으로 BIP110을 지지하며, 그 관점이 일부 서술에 반영될 수 있음을 밝혀 둡니다. 다만 역사적 사실과 인용은 진영과 무관하게 원문·공식 기록을 우선하고 복수 자료로 교차 확인했습니다. 번외 3, 번외 4와 이어 읽으면 좋습니다.

</aside>

TL;DR

"블록체인에 Lady Gaga 동영상을 올리면 어떻게 되나"라는 걱정은 2023년 Ordinals 논쟁 때 나온 것이 아니다. 2010년 6월, 비트코인이 생후 17개월이던 시절에 이미 나왔다. 흔히 사토시의 발언으로 잘못 인용되지만, 걱정한 사람은 Gavin Andresen이었고 사토시는 그 걱정에 두 문장으로 답했다. 그 두 문장 — 수수료가 1차 방어선이고, 필요하면 다른 조치도 있다 — 안에 이후 반복될 논쟁의 핵심 구도가 들어 있다.

OP_RETURN은 데이터 저장을 장려하려고 만들어진 것이 아니다. 정반대다. 사람들이 데이터를 public key나 script hash처럼 위장한 출력에 넣어 UTXO 집합을 부풀리자, “넣더라도 화폐 출력처럼 chainstate에 남기지 말라”는 압력 밸브로 2014년에 표준화됐다. 데이터는 블록 기록에 남지만 provably unspendable 출력은 현행 UTXO 집합에서 제외된다. 이 피해 최소화 장치의 크기를 80바이트로 할지 40바이트로 할지를 두고 첫 전쟁이 벌어졌다. 같은 시기 더 넓은 script 표현력·프로토콜 보수주의 갈등 속에서 일부 프로젝트는 비트코인 밖의 플랫폼을 택했고, 이더리움은 그 대표적 출구가 됐다.

그보다 앞서 SatoshiDice는 베팅 거래와 결과 거래를 만들고, 패배 시에도 1 sat을 반환해 대량의 거래와 dust를 남겼다. Bitcoin Core는 2013년 dust relay policy와 2014년 OP_RETURN으로 대응했다. 이후 2015년 stress campaign은 정상 거래의 수수료와 지연을 악화시켰고, VeriBlock을 활용한 산업적 사용은 block history에, Bitcoin Stamps는 장기 UTXO 상태에 지속적인 부담을 남길 수 있음을 보여줬다. 2025년 Core v30이 상한을 사실상 제거하면서 이 연대기는 번외 3에서 다룬 BIP110 논쟁으로 이어진다. 각 사례는 단순한 반복이 아니라, 사업자의 수익과 node 운영자의 비용이 분리될 때 Bitcoin이 어떤 방어선을 세워 왔는지를 보여주는 누적 기록이다.


1. 2010년 6월 17일 — 모든 것이 예고된 대화

비트코인 역사에서 데이터 저장 논쟁의 출발점을 하나만 꼽으라면 이 스레드다. 2010년 6월 17일, 훗날 사토시로부터 프로젝트를 넘겨받게 되는 Gavin Andresen이 bitcointalk에 이렇게 썼다.

거래 안에 script를 넣는 방식의 유연성은 감탄스럽다. 하지만 내 사악한 작은 머리는 곧바로 이걸 악용할 방법부터 떠올린다. TxOut script에 온갖 흥미로운 정보를 인코딩할 수 있을 것이고 ... 이건 멋진 기능이다 — 누군가 재미 삼아 최신 Lady Gaga 동영상을 친구들 모두에게 전송하겠다고 수백만 건의 거래로 결제 네트워크를 침수시키기 전까지는.

사토시는 같은 스레드에서 이렇게 답했다.

그것이 거래 수수료가 존재하는 이유 중 하나다. 필요하다면 우리가 할 수 있는 다른 조치들도 있다.

짚어 둘 것이 둘 있다. 첫째, 널리 퍼진 통설과 달리 Lady Gaga 발언의 주인은 사토시가 아니라 Gavin이다. 사토시의 몫은 뒤의 답변 두 문장뿐이다. 둘째, 그 두 문장은 이후 반복될 논쟁의 핵심 구도를 보여준다. "수수료가 이유 중 하나"라는 앞 문장은 오늘날 반대 진영의 수수료 시장 자정론이 되었고, "필요하면 다른 조치들(other things we can do)"이라는 뒷 문장은 relay policy와 소프트포크로 이어지는 개입론의 씨앗이 되었다. 양 진영 모두 이 대화를 자기 주장의 근거로 인용할 수 있다 — 그리고 실제로 그렇게 한다.

사토시가 데이터 문제를 어떻게 대했는지 보여주는 기록은 더 있다. 2010년 10월 23일, 거래에 짧은 메시지를 넣자는 제안에 그는 “모든 사람이 보도록 평문 메시지를 영구 기록하는 것은 현명하지 않다. 사고를 기다리는 셈이다. 메시지 시스템이 필요하다면 Bitcoin network와 병렬인 별도 시스템이어야 한다. 메시지는 블록체인에 기록돼서는 안 된다”고 답했다. 그리고 같은 해 12월 10일 BitDNS 논의에서는 “세상의 모든 proof-of-work 정족수 시스템을 하나의 데이터셋에 쌓는 것은 확장되지 않는다”며 Bitcoin과 BitDNS의 운명을 분리해야 한다고 썼다. Bitcoin 백서 7절이 오래된 거래의 가지치기(pruning)를 처음부터 설계에 포함한 점까지 겹쳐 보면, 적어도 블록체인을 범용 저장소로 쓰는 것이 그의 설계 의도는 아니었다고 말할 수 있다. 다만 그가 오늘의 BIP110 논쟁에서 어느 편에 섰을지는 아무도 모른다. 이 글도 그 질문에는 답하지 않는다.


2. 무법 시대 (2010~2013) — OP_RETURN 이전의 데이터 밀수

OP_RETURN이 표준화되기 전에도 사람들은 데이터를 넣었다. 방법이 더 나빴을 뿐이다.

당시의 대표 수법은 데이터를 public key나 script hash처럼 위장한 출력이었다. 대응 서명 정보를 사실상 알 수 없는 출력은 소비되지 않는 한 UTXO 집합에 남았고, 일부 bare multisig 방식은 실제 서명 경로로 소비할 수 있어도 소비 전까지 같은 부담을 만들었다. Bitcoin Core는 현행 UTXO를 chainstate LevelDB와 cache로 유지한다. 모든 UTXO가 RAM에 상주하는 것은 아니지만, 모든 검증 node는 이를 저장하고 빠르게 조회할 수 있어야 한다. 데이터 용도로 만든 출력이 오래 남을수록 비용은 작성자가 아니라 전체 node 운영자에게 전가된다.

이 시기에 데이터 삽입의 "용도"도 진화했다. 2012년 3월 Yoni Assia가 특정 사토시에 자산의 정체성을 입히자는 colored coins 아이디어를 발표했고, 같은 해 12월 Meni Rosenfeld가 이를 백서로 정식화했다 — 공저자 명단에 Assia와 함께 Vitalik Buterin이 있다. 이 이름을 기억해 두자. 2013년 7월에는 Mastercoin이 비트코인 위 토큰 프로토콜을 내걸고 4,740 BTC를 모금하며 블록체인 역사상 최초의 토큰 세일을 열었다. 비트코인을 화폐가 아니라 "다른 무언가의 등기소"로 쓰려는 수요가 처음으로 조직화된 것이다.

SatoshiDice — 베팅 한 번이 거래 두 건과 1 sat dust를 만들다