비트코인기술중급

코인을 어떻게 쓸지 미리 잠가두는 비트코인 코버넌트

코버넌트는 비트코인 거래가 자금이 다음에 어떻게 쓰일 수 있는지에 대한 조건을 강제할 수 있게 해줍니다. OP_CTV, OP_CAT에 대한 명확한 설명과, 그것들이 볼트·확장성·프로그래밍 가능성에 왜 중요한지 살펴봅니다.

·9분
비트코인을 이루는 부품들 시리즈 9/11편
  1. 비밀번호도 은행도 없이 어떻게 내 비트코인이 내 것이 될까
  2. 비트코인 주소가 1·3·bc1로 다르게 시작하는 이유
  3. 비트코인은 사실 작은 프로그래밍 언어로 돌아갑니다
  4. 비트코인 블록 하나를 통째로 해부해 봅니다
  5. 비트코인은 수천 건의 거래를 하나하나 확인하지 않고 어떻게 검증하는가
  6. 비트코인 블록은 왜 4백만 무게 단위로 제한되는가
  7. 여러 명의 서명이 한 개로 합쳐지는 슈노르 서명
  8. 시계가 없는 비트코인은 어떻게 1년 뒤를 약속하는가
  9. 코인을 어떻게 쓸지 미리 잠가두는 비트코인 코버넌트
  10. 소프트포크와 하드포크 (Soft Fork & Hard Fork) - 규칙을 바꾸는 두 가지 방법
  11. 양자 컴퓨터는 정말 비트코인을 깨뜨릴 수 있는가
시리즈 전체 보기 →

모든 비트코인 거래는 하나의 질문에 답한다: 누가 이 코인을 쓸 수 있는가? 서명은 당신이 정당한 소유자임을 증명하고, 네트워크는 당신이 원하는 곳으로 자금을 옮기게 해준다. 그런데 만약 거래가 두 번째 질문에도 답할 수 있다면 어떨까: 이 코인은 다음에 어떻게 쓰일 수 있는가?

그것이 코버넌트다 - 거래에 내장된 규칙으로, 미래의 거래가 그 자금으로 무엇을 할 수 있는지를 제한한다. 이 개념은 2013년부터 비트코인 커뮤니티에서 논의되어 왔고, 비트코인 역사상 가장 중요한 기술적 논쟁 중 하나가 되었다.

코버넌트가 중요한 이유

코버넌트가 왜 중요한지 이해하려면, 현재 비트코인이 우아하게 해결하지 못하는 문제 하나를 생각해보자.

당신은 볼트(vault)를 만들고 싶다 - 개인키를 공격자가 훔쳐가도 코인이 즉시 사라지지 않는 콜드 스토리지 설정이다. 볼트는 시간 지연을 강제한다: 모든 출금은 실제 자금이 이동하기 전에 24시간을 기다려야 한다. 그 시간 동안 당신은 복구 키를 사용해 자금을 안전한 주소로 되돌릴 수 있다.

코버넌트 없이는 이것이 불가능할 정도로 복잡하다. 쓰기 거래는 다음 거래가 무엇을 할지 전혀 모른다. 당신의 개인키는 마스터 키다 - 한번 탈취되면 모든 것을 즉시 열어버린다.

코버넌트가 있으면 볼트는 단순해진다. 코인에 규칙이 따라다닌다: "이 자금을 쓰는 다음 거래는 반드시 24시간 타임락을 포함해야 하고, 반드시 이 두 주소 중 하나로만 보내야 한다." 규칙은 키가 아니라 코인과 함께 다닌다.

이 단일 기능 - 미래의 지출을 제약하는 것 - 이 전체 애플리케이션 카테고리를 해방한다.

OP_CHECKTEMPLATEVERIFY (OP_CTV)

BIP-119는 제러미 루빈(Jeremy Rubin)이 제안한 것으로, 가능한 가장 단순한 코버넌트를 도입한다: 거래가 자신의 출력을 쓰는 다음 거래의 정확한 템플릿에 커밋할 수 있게 하는 것이다.

작동 방식

OP_CTV는 거래 템플릿의 해시 - 출력의 수, 금액, 목적지 - 를 받아서 그 템플릿과 일치하는 거래에 의해서만 쓰일 수 있도록 코인을 잠근다. 다른 어떤 것도 안 된다. 유연성 없음, 조건문 없음. 미래의 거래는 미리 결정되어 있다.

특정 사람에게 특정 금액으로 발행된 수표에 "이 사람은 반드시 Alice에게 정확히 $50를, Bob에게 $30를 지불해야 한다"는 메모가 비고란에 적혀 있는 것과 같다고 생각하면 된다. 지불의 사슬이 사전에 프로그래밍되어 있는 것이다.

무엇을 가능하게 하는가

혼잡 제어 - 수수료 급등 시 거래소는 수천 건의 출금을 단일 온체인 거래로 묶을 수 있다. 이 거래는 나중에 수수료가 낮아질 때 각 사용자에게 개별적으로 지불할 것을 커밋한다. 사용자는 실제 지불이 아직 일어나지 않았더라도 자신의 출금이 보장된다는 암호학적 증명을 받는다.

단순한 볼트 - OP_CTV는 위에서 설명한 시간 지연 출금 패턴을 강제할 수 있다. 가능한 가장 유연한 볼트 설계는 아니지만, 기능적이고 최소한이다.

비상호작용 결제 채널 - 오늘날 라이트닝 채널을 여는 것은 양쪽이 온라인에 있고 협력해야 한다. OP_CTV는 단일 온체인 거래가 동시에 많은 결제 채널을 생성하는 채널 팩토리를 가능하게 할 수 있다. 모든 참여자가 동시에 서명할 필요가 없다.

트레이드오프

OP_CTV는 의도적으로 제한적이다. 하나의 특정 미래 거래에만 커밋할 수 있다. 금액을 검사하거나, 복잡한 조건을 강제하거나, 범용 계산을 가능하게 할 수 없다. 지지자들은 이것을 기능이라고 본다 - 최소한의 표면적은 최소한의 리스크를 의미한다. 비판자들은 소프트 포크의 복잡성을 정당화하기에는 너무 좁다고 주장한다.

OP_CAT

OP_CAT은 이 논쟁에서 가장 오래된 opcode다 - 비트코인의 원래 스크립트 언어의 일부였고, 사토시가 2010년에 과도하게 큰 스크립트를 만드는 데 사용될 수 있다는 우려로 제거했다. 이제 BIP-347로 다시 가져오려는 제안은 비트코인에서 가장 흥미로운 기술적 논쟁 중 하나를 다시 불붙였다.

작동 방식

OP_CAT은 한 가지 일을 한다: 스크립트 스택에서 두 바이트 문자열을 연결한다. 요소 A와 요소 B를 받아서 AB를 푸시한다. 그것이 전체 작동이다.

이것은 사소해 보이고, 고립된 상태에서는 그렇다. 하지만 연결(concatenation)은 빌딩 블록이다. 비트코인의 기존 opcode들 - 특히 슈노어 서명과 탭루트 - 과 결합될 때, OP_CAT은 놀라운 것을 가능하게 한다: 거래 내성(introspection).

OP_CAT이 있으면 스크립트는 코인을 쓰는 거래의 부분들을 재구성하고 그 거래가 특정 조건을 만족하는지 검증할 수 있다. 사실상, 스크립트는 자신이 포함된 거래를 "볼" 수 있고 그것에 대한 규칙을 강제할 수 있다.

무엇을 가능하게 하는가

범용 코버넌트 - OP_CTV의 경직된 템플릿 매칭과 달리, OP_CAT은 유연한 지출 조건을 가능하게 한다. 볼트는 타임락이 지켜지는 한 어떤 주소로든 출금을 허용할 수 있다. 신탁 기금은 가능한 모든 수취인을 미리 정의하지 않고도 일정에 따라 자금을 풀 수 있다.

STARK 검증 - 비트코인 스크립트에서 더 복잡한 계산을 가능하게 함으로써, OP_CAT은 온체인에서 암호학적 증명을 검증하는 이론적 경로를 열어준다. 이는 다른 시스템으로의 무신뢰(trustless) 브리지와 라이트닝을 넘어서는 고급 레이어 2 솔루션을 가능하게 할 수 있다.

재귀 코버넌트 - 다음 거래에, 그리고 그 다음에, 무한히 자기 자신을 다시 적용할 수 있는 코버넌트. 이는 영구적 규칙을 가능하게 한다: "이 코인은 이 집합 안의 주소로만 이동할 수 있다" 또는 "이 코인이 이동할 때마다 1%가 이 주소로 가야 한다." 이것은 강력하고, 일부에게는 경각심을 불러일으킨다.

논란

OP_CAT의 일반성은 바로 그것이 논란의 대상이 되는 이유다. 재귀 코버넌트는 이론적으로 영구적 지출 제한을 만들 수 있다 - 특정 주소 집합을 절대 떠날 수 없는 코인, 또는 미래의 모든 이전에 대해 로열티를 강제하는 코인. 비판자들은 이것이 비트코인의 근본적 속성인 대체가능성(fungibility)을 훼손한다고 주장한다: 일부 코인이 영구적 제한을 가지고 다른 코인은 그렇지 않다면, 그것들은 더 이상 상호 교환 가능하지 않다.

반론은 실용적이다: 비트코인은 이미 복잡한 이력을 가진 코인들이 있다(코인조인된 것, 제재 대상 주소에서 온 것, 최근 채굴된 것). 완벽한 대체가능성은 존재한 적이 없다. 그리고 코버넌트의 유용성 - 볼트, 확장성 개선, 새로운 레이어 2 설계 - 은 이론적 우려를 능가한다.

다른 제안들

OP_CTV와 OP_CAT이 가장 많이 논의되지만, 코버넌트 설계 공간은 더 넓다.

OP_VAULT (BIP-345) - 제임스 오베언(James O'Beirne)이 제안한 것으로, 볼트 사용 사례를 위해 목적 기반으로 설계되었다. 범용 도구를 제공하는 대신, 복구 키가 있는 시간 지연 출금을 위한 특정 opcode를 도입한다. OP_CTV보다 복잡하지만 의도된 용도에 대해서는 더 유능하다.

LNHANCE - OP_CTV를 OP_CHECKSIGFROMSTACK 및 OP_INTERNALKEY와 결합한 번들. OP_CTV만으로는 너무 제한적이지만, 이 추가 opcode들과 결합하면 OP_CAT의 개방적 유연성 없이도 대부분의 사용 사례에 충분히 강력해진다는 아이디어다.

OP_TXHASH - 스크립트가 쓰는 거래의 특정 필드들을 해싱하고 검증할 수 있게 하여 선택적 내성을 가능하게 한다. OP_CAT보다 표적화되어 있지만 OP_CTV보다 유연하다.

거버넌스 질문

코버넌트는 비트코인 개발 문화의 두 가지 긴장이 교차하는 지점에 있다.

첫 번째는 보수주의 대 역량이다. 비트코인의 스크립트 언어는 의도적으로 단순하게 유지되었다. 사토시는 이유가 있어서 OP_CAT을 제거했다. 모든 새 opcode는 공격 표면을 확장하고 영원히 유지되어야 할 복잡성을 도입한다. 블록사이즈 전쟁은 비트코인 커뮤니티에게 변화에 "아니오"라고 말하는 것이 때때로 분산 시스템이 할 수 있는 가장 중요한 일임을 가르쳤다.

두 번째는 고착화(ossification) 대 진화다. 일부 비트코이너는 프로토콜이 완전히 변화를 멈춰야 한다고 믿는다 - 기반 레이어는 동결되고 모든 혁신은 상위 레이어에서 일어나야 한다는 것이다. 다른 이들은 신중하게 선택된 소프트 포크가 비트코인의 핵심 속성을 타협하지 않고도 엄청난 가치를 해방할 수 있으며, 모든 변화를 거부하는 것 자체가 리스크 있는 선택이라고 주장한다.

양쪽 입장 모두 일리가 있다. 비트코인의 가치는 변화에 대한 저항에서 나온다 - 그 규칙이 예측 가능하고 안정적이라는 사실에서. 하지만 그 안정성은 자체 수탁, 확장성, 프라이버시를 위한 더 나은 도구가 비트코인의 핵심 임무를 강화한다는 현실과 균형을 이루어야 한다.

현재 상황

2026년 초 기준으로, 어떤 코버넌트 제안도 활성화 단계에 도달하지 못했다. 논의는 메일링 리스트, 개발자 미팅, 커뮤니티 포럼에서 계속된다. OP_CTV는 가장 오랜 검토 이력을 가지고 있다. OP_CAT은 가장 넓은 이론적 역량과 가장 많은 논란을 가진다. OP_VAULT는 가장 즉각적으로 유용한 애플리케이션을 표적으로 한다.

가장 가능성 높은 전진 경로는 수년간의 추가 검토, 테스트넷 실험, 커뮤니티 합의 구축을 포함한다 - SegWit과 탭루트를 우리에게 준 것과 같은 느리고 신중한 과정이다. 비트코인은 설계상 천천히 움직인다. 움직일 때는 올바르게 움직이는 경향이 있다.

이 공간을 지켜보는 사람들에게 질문은 코버넌트가 유용한가가 아니다 - 분명히 유용하다. 질문은 어느 설계가 역량과 리스크의 균형을 가장 잘 맞추는가, 그리고 커뮤니티가 그것을 활성화하기에 충분한 합의에 도달할 수 있는가이다. 지저분하고 느린 그 과정이야말로 의도한 대로 작동하는 비트코인 거버넌스다.

비트코인을 이루는 부품들 · 다음 편 (10/11)소프트포크와 하드포크 (Soft Fork & Hard Fork) - 규칙을 바꾸는 두 가지 방법

관련 글