본문으로 건너뛰기
buybitcoinsmart

용어집 / 프로토콜과 업그레이드

코버넌트

코버넌트란 무엇입니까?
코버넌트는 비트코인이 다음에 어디로 갈 수 있는지를 제한하는 지출 규칙으로, 누가 그것을 옮길 수 있는지만 제한하는 것이 아니며, 오늘날 Bitcoin Script의 어떤 옵코드도 이를 강제할 수 없습니다.

체인 위의 모든 스크립트는 한 가지 질문에 답합니다. 이 지출은 승인되었습니까? 코버넌트가 있다면 스크립트가 그것을 지출하는 트랜잭션에 관해 두 번째 질문을 할 수 있게 되며, 이를 허용하려는 제안들(BIP-119, BIP-118, BIP-345, BIP-347)은 모두 수년째 활성화되지 않은 채로 남아 있습니다. 오늘 보유하신 자산은 영향을 받지 않지만, 사람들이 계속 요청하는 금고 및 상속 상품은 이 기능을 기다리고 있습니다.

작동 방식

상태: Bitcoin 메인넷에서 활성화된 코버넌트 옵코드는 없습니다. 아래의 모든 설계는 제안이며, 어느 것도 Bitcoin Core에 활성화 파라미터가 병합되어 있지 않습니다.

빠져 있는 기능에는 정확한 이름이 있습니다. 내부 검사(introspection)입니다. 노드가 스크립트를 실행할 때, 스크립트는 서명, 해시, 타임록, 스택을 살펴볼 수 있지만, 코인을 지출하는 트랜잭션의 출력을 읽을 수는 없습니다. 이 단 하나의 사각지대 때문에 비트코인은 “이 세 사람 중 두 사람이 동의해야 한다”라고 표현할 수 있으면서 “이 자금은 오직 저 주소로만 이동할 수 있다”라고 표현할 수는 없습니다.

제안들은 이 격차를 두 가지 서로 다른 방식으로 메우며, 그 둘 사이의 차이가 논쟁의 핵심입니다.

템플릿 접근법은 지출 트랜잭션 전체의 해시에 미리 커밋합니다. OP_CHECKTEMPLATEVERIFY가 이렇게 작동합니다. 출력이 32바이트 해시를 보관하고, 트랜잭션의 해시가 같은 값이 되지 않으면 지출이 실패합니다. 범위가 좁고 검증 비용이 저렴하며, 커밋먼트가 다른 커밋먼트를 기술할 수 없기 때문에 제한이 무한히 반복될 수 없습니다.

내부 검사 접근법은 스크립트에 조각들을 주고 산술 연산을 하게 합니다. OP_CAT를 서명 검사와 결합하거나 OP_CHECKSIGFROMSTACK를 추가하면, 스크립트가 스택 위의 조각들로 트랜잭션의 서명 해시를 재구성하고 검증할 수 있게 되며, 그 시점부터 스크립트는 출력에 관해 원하는 무엇이든 요구할 수 있습니다. 이 방식은 범용적이며 재귀적입니다. 코버넌트는 다음 출력이 동일한 코버넌트를 담도록 요구할 수 있습니다.

재귀성은 모든 것을 늦춰 온 반대 이유입니다. 스스로를 지속시키는 규칙에 잠긴 코인은 원칙적으로 영구히 제약된 채로 남을 수 있으며, 이는 대체 가능성과 그 규칙을 의무화할 수도 있는 발행자에 관한 의문을 제기합니다. 이에 대한 반론은 사람들이 허용된 유일한 지출에 미리 서명하고 키를 파기함으로써 이미 코버넌트를 흉내 낼 수 있다는 것입니다. 따라서 이 기능은 실제로 존재하며, 합의 차원의 강제는 주로 그 키가 정말 파기되었다고 신뢰할 필요를 없애 줍니다.

볼 수 있는 곳

코버넌트는 비트코인의 스크립트 엔진을 복사한 체인들에서 이미 배포되어 있으며, 이는 그것이 하는 일을 가장 저렴하게 볼 수 있는 방법입니다.

Elements 기반 사이드체인인 Liquid는 지출 트랜잭션의 출력을 직접 읽는 내부 검사 옵코드를 갖춘 탭스크립트를 실행하며, 그 연합(federation)은 페그를 위해 이를 사용합니다. 누구나 메인넷에서 이들을 원할지 결정하기 전에 커스텀 시그넷에서 제안된 비트코인 옵코드를 시험해 볼 수도 있습니다.

메인넷에서 그 대용물은 키를 파기한 미리 서명된 트랜잭션입니다. 금고 제공자는 입금 키를 생성하고, 앞으로 허용할 유일한 출금에 서명한 뒤 다른 지출이 만들어질 수 없도록 그 키를 파기합니다. 이는 네트워크가 아니라 약속으로 강제되는 코버넌트이며, 그 약속이 바로 실제 코버넌트 옵코드가 불필요하게 만들 대상입니다. 어떤 서비스가 금고를 판매한다면 알아 둘 만합니다. 둘 중 어느 쪽인지 물어보십시오.

코버넌트 vs 에스크로 계약

코버넌트는 목적지를 제한하고, 에스크로 계약은 서명자를 제한합니다. 두 가지는 같은 우려의 서로 다른 절반을 해결하며, 그중 하나만 이용할 수 있습니다.

에스크로 계약은 정족수에 제3자를 포함한 일반적인 다중 서명이며, 보통 3인 중 2인 방식이고, 비트코인에서 지금도 작동합니다. 마켓플레이스가 키 하나를 보관하고, 구매자와 판매자는 그 키 없이 정산하거나 분쟁을 해결하기 위해 그 키를 동원할 수 있습니다. 에스크로가 할 수 없는 것은 결과를 제한하는 것입니다. 지출 정족수가 구성되는 순간 코인은 중재자에게 가는 경우를 포함해 어디로든 갈 수 있습니다. 코버넌트는 목적지를 미리 고정하고 중재자의 재량을 설계에서 완전히 제거할 것입니다.

혼동하기 쉬운 용어

자주 묻는 질문

지금 비트코인에서 코버넌트를 사용할 수 있습니까?

아닙니다. 메인넷에서 활성화된 코버넌트 옵코드는 없습니다. 오늘날 금고 동작을 광고하는 상품들은 미리 서명된 트랜잭션과 파기된 키에 의존하며, 이는 네트워크가 강제하는 규칙이 아니라 약속입니다.

코버넌트는 왜 논란이 됩니까?

범용 버전이 재귀적이기 때문입니다. 즉 코인이 모든 향후 지출에 다시 붙는 제한을 지닐 수 있다는 뜻입니다. 비판자들은 영구히 제약된 코인을 우려하고, 지지자들은 미리 서명된 트랜잭션이 이미 그 효과를 흉내 내고 있다고 지적합니다.

다음에 읽을 글

관련 용어

프로토콜과 업그레이드 분야의 다른 용어

이 페이지를 영어로 읽기