
BTC 생태계 확장 솔루션 탐방: 비트브이엠(BitVM), 에칭의 예술
글: Simon shieh
서론 복습
지난 글인 《BTC 생태계 확장 솔루션 개관: 인스크립션은 어디로 향하는가》에서는 인기 있는 인스크립션 생태계의 기술 원리와 잠재적 보안 문제를 논의했으며, 인스크립션을 재귀적으로 사용하여 스마트 계약을 구현할 가능성도 언급했습니다. 그러나 Luke가 Taproot 스크립트에 설정한 제약으로 인해 재귀적 인스크립션이 일부 장애에 부딪혔습니다. 그렇다면 비트코인 네트워크 상에서 스마트 계약을 구현할 다른 방법은 없을까요?
블록체인 개발사 ZeroSync의 공동 설립자이자 로빈 리너스(Robin Linus)는 2023년 10월 9일, 「BitVM: 비트코인에서 모든 연산 수행(BitVM: Compute Anything on Bitcoin)」이라는 제목의 논문을 발표하며, 스마트 계약을 비트코인 블록체인에 도입하려는 계획을 제시했습니다.

이 논문은 매우 흥미로운 아이디어를 제안합니다. Taproot를 활용하면 거의 모든 종류의 임의 계산을 수행할 수 있으며, 이를 통해 오프체인에서 발생한 사항들을 검증할 수 있습니다. 핵심은 모든 로직을 체인 외부에 두고, 누군가 부정확한 결과를 주장할 경우, 소수의 체인 내 계산 단계를 통해 그 결과를 도전(챌린지)하는 방식입니다.
즉, 검증자(Verifier)의 로직을 비트코인 네트워크 안에 배치하고, 비트코인의 강력한 합의 보안성을 이용하여 어떤 튜링 완전한 연산 계층의 신뢰 가능한 제3자 역할을 하게 한 후, Optimistic Rollup의 원리를 적용하여 오프체인 계산 결과를 검증하는 것입니다.
그렇다면 어떻게 검증자 로직을 비트코인 네트워크에 배치할 수 있을까요? 이전 섹션의 "각인(inscription)"과 대응하기 위해 저는 이를 비트코인 네트워크 위에서 회로를 '에칭(etching)'하는 기술이라고 부르고 싶습니다.
논리 게이트 회로
컴퓨터나 스마트폰 내부에서는 전류가 일련의 1과 0을 전달함으로써 컴퓨터의 모든 기능을 구현합니다. 이것은 수백만 개의 미세한 구성 요소—논리 게이트(logic gates)—를 통해 이루어집니다. 이러한 논리 게이트들은 컴퓨터 칩을 구성하는 기본 요소입니다.
각 논리 게이트는 하나 또는 두 개의 '비트(bit)' 정보를 입력받으며, 각 비트는 1이거나 0입니다. 그런 다음 논리 게이트는 'AND', 'OR', 'NOT' 등의 간단한 논리 연산을 정해진 규칙에 따라 수행합니다. 이러한 연산의 결과 역시 하나의 비트, 즉 1 또는 0이 됩니다. 연산이 완료되면 이 결과는 다시 다음 논리 게이트로 전달됩니다.
이러한 단순한 논리 연산 기반 시스템은 가장 복잡한 계산과 기능조차도 수많은 간단한 논리 연산 조합을 통해 구현될 수 있음을 시사합니다. 이러한 논리 게이트들의 결합과 협업이 현대 컴퓨터 및 전자 장치가 복잡한 작업을 수행할 수 있는 기초입니다. 이러한 기본적인 논리 연산을 통해 컴퓨터는 복잡한 산술 연산, 데이터 저장, 이미지 렌더링 등을 처리할 수 있습니다.
아래 그림은 특별한 형태의 논리 게이트인 'NAND 게이트'입니다. NAND 게이트는 임의 유형의 논리 게이트 회로를 구성할 수 있으며, 특정 목적에 최적화된 다른 게이트만큼 효율적이지는 않겠지만, 여전히 가능합니다. BitVM의 논리 게이트 회로는 NAND 게이트로 구성되어 있습니다.

비트코인 상에서의 NAND 게이트 에칭
기존의 비트코인 스크립트 상에서 NAND 게이트를 구성하려면 해시 락(hash lock)과 OP_BOOLAND, OP_NOT처럼 잘 알려지지 않은 두 개의 오퍼레이션 코드(opcodes)를 결합하면 됩니다.
먼저, 해시 락은 분기 스크립트를 생성하는 데 사용할 수 있습니다. 이 스크립트는 두 가지 방법 중 하나로 사용될 수 있습니다. 즉, 해시 락 A를 충족하거나 해시 락 B를 충족하는 방식입니다. 이렇게 하면 경로 A는 스택에 1을 출력하고, 경로 B는 0을 출력합니다.
특정 해시 락을 만족시킴으로써 사용자는 우리가 구성하려는 NAND 게이트의 입력 중 하나인 비트를 '해제(unlock)'할 수 있습니다. 사용자는 한 번에 오직 하나의 경로만을 충족시킬 수 있기 때문에, 이 방법은 사용자가 한 번에 하나의 비트만 제출할 수 있도록 제한합니다.
NAND 게이트의 논리는 두 비트를 입력으로 받아 하나의 비트를 출력합니다. 두 입력 비트 모두 1이라면 출력은 0이고, 그 외의 조합은 모두 출력이 1입니다. 두 개의 해시 락 기술을 사용하면 두 입력값을 제출하고 출력값이 올바른지 검증할 수 있습니다. 여기서 OP_BOOLAND와 OP_NOT가 사용됩니다.
OP_BOOLAND는 NAND 게이트와 반대 동작을 합니다. 즉, 두 입력이 모두 1이면 출력은 1이며, 그 외의 모든 입력 조합은 0을 출력합니다. OP_NOT는 입력값과 반대되는 값을 출력합니다. 따라서 이 두 오퍼레이션 코드를 결합하면 스크립트 스택에서 두 입력값을 받아 NAND 연산의 반대 연산을 수행할 수 있습니다. 마지막으로 OP_EQUALVERIFY와 해시 락 기술을 사용하여 주장된 출력값을 검증할 수 있습니다. 만약 스택에서 실제로 수행된 NAND 연산 결과와 사용자가 주장한 출력값이 일치하지 않으면 스크립트는 검증에 실패하게 됩니다.
이렇게 하여 비트코인 스크립트 내에 NAND 게이트 회로를 '에칭'하게 되며, 사실상 비트코인 스크립트를 통해 가상의 NAND 게이트 동작을 강제로 실행하는 것입니다.

대규모 회로 에칭 방법
Taproot 스크립트를 활용하여 회로 에칭을 하는 아이디어는 매우 훌륭하지만, PC 수준의 초대규모 회로는 물론이고 임의의 계산을 구현하려 해도 수천, 수만 개의 NAND 게이트 회로가 필요합니다. 비트코인의 제한된 Taproot 스크립트 공간 안에서 복잡한 계산을 어떻게 커버할 수 있을까요?
BitVM은 Taproot 스크립트 트리(Taproot Tree) 방법을 제안합니다. 비트코인 스크립트에서 복잡한 계산 과정을 구현하기 위해 논리 게이트들을 직렬 연결하여 계산 회로를 구성할 수 있습니다. 이 방식에서 해시 락은 각 게이트를 묶는 데 사용되며, 순차적인 논리 연산을 구현합니다. 구체적으로 말하면, 하나의 게이트 스크립트가 서로 다른 해시 원상(preimage, 해시 평문 값) 입력에 따라 C1 또는 C2라는 서로 다른 출력 결과를 생성한다면, 다음 게이트는 해당 출력에 맞는 해시 락 값을 입력으로 사용합니다.
이러한 메커니즘은 일종의 처벌(penalty) 시스템을 가능하게 합니다. 즉, 앞선 게이트의 결과를 거짓으로 주장하려 할 경우, 다른 해시 락의 원상을 공개해야 합니다. 이 메커니즘은 두 사용자 간의 상호 작용형 계산에 사용할 수 있으며, 그들은 특정 계산 작업에 참여하기로 미리 동의한 후, 계산 과정을 NAND 게이트들로만 구성된 회로로 분해합니다. 회로 내 각 게이트에 적절한 해시 락을 선택하고, 이를 잠긴 UTXO의 스크립트 트리에 인코딩해야 합니다.
그런 다음 여러 주소를 결합하여 Taproot 주소 매트릭스를 구성하고, Taproot Tree 방식을 통해 논리 회로를 일련의 트리 구조로 연결된 UTXO 거래의 Taproot 스크립트에 에칭함으로써, 일정한 계산 작업을 처리할 수 있는 '계약 유사' 논리 회로를 최종적으로 형성합니다.
사기 챌린지
사기 챌린지(fraud challenge)는 OP(Optimism Rollup) 기술의 핵심입니다(비록 아직 실현된 바는 없습니다). 아이디어는 일괄 처리(batch)된 거래들이 제출되기 전, 도전자(challenger)가 잘못되었다고 판단되는 거래에 대해 사기 챌린지를 발동하는 것으로, 양측이 담보를 걸고 대결합니다. 메인넷의 검증자(Verifier) 계약은 상태 루트(state root)의 변경 여부를 기반으로 제출자가 악의적인 행위를 했는지 판단한 후, 양측의 담보 자산을 분배합니다.
BitVM에서는 스크립트 트리가 두 개의 회로로 설계되며, 증명자가 한쪽 회로에 제출할 수 있을 뿐 아니라, 도전자가 증명자의 진술을 도전할 수 있어야 합니다. 이를 위해 일련의 거래들을 사전 서명함으로써 구현할 수 있습니다. 이러한 사전 서명된 거래들은 '도전 → 응답 → 도전 → …'의 순서로 연결됩니다. 어느 한 쪽이 일정 시간 동안 응답하지 않으면, 다른 쪽이 도전에서 승리하고 양측의 예치금을 회수하게 됩니다.

위 그림은 일련의 사전 서명된 거래들을 보여줍니다:
-
도전: Vicky(도전자/검증자)는 스크립트 경로에서 원상(preimage)을 공개합니다(이 원상은 도전자만 알고 있음). 이를 통해 증명에 대한 도전을 시작합니다.
-
응답: Paul(증명자)는 해당 논리 게이트를 실행하여 자금을 초기 스크립트로 돌려보냅니다.
몇 차례의 질의 후, 불일치하는 주장은 신속하게 반박될 수 있습니다. 증명자가 오프체인에서 도전자와 협력을 중단하면, 도전자는 증명자를 체인 상에서 협력하도록 강제할 수 있습니다. 도전자가 각 해시 락을 해제함으로써, 증명자의 UTXO 내 각 NAND 게이트에 해당하는 Taproot 리프 노드는 증명자가 도전자가 보유한 원상을 알고 있을 때에만 사용될 수 있게 됩니다. 증명자는 자신의 입력과 출력을 공개함으로써 특정 Taproot 리프 노드가 올바르게 실행되었음을 입증할 수 있습니다. 전제 조건은 도전자가 해당 Tapleaf의 해시 원상을 공개하여 이를 해제하는 것이며, 이진 탐색 방식을 통해 도전자는 유한한 라운드(O(log n))의 도전과 응답 후 증명자의 오류를 특정할 수 있습니다.
전체 과정은 다단계의 상호 작용을 포함하여 계약이 올바르게 정산되도록 보장합니다. 도전자는 증명자가 각 게이트의 올바른 결과를 입증할 때까지 계속 도전할 수 있으며, 혹은 증명자가 응답하지 못할 경우, 일정 시간 후 자금을 인출할 수 있습니다. 이상적인 상황에서는 모든 작업이 오프체인에서 이루어지고, 양측이 협력하여 정산을 완료하지만, 협력이 깨질 경우 양측은 체인 상의 도전 게임을 통해 계약이 올바르게 해결되도록 할 수 있습니다.
실현 장애 및 보안 문제
이 제안은 엄청난 양의 데이터 처리 및 생성을 수반합니다. 사용되는 Taproot 스크립트 트리는 수십억 개의 리프 노드를 포함할 수 있으며, 관련된 사전 서명 거래 처리에는 정확한 정산을 보장하기 위해 최소한 몇 시간이 소요될 수 있습니다. 각 Taproot 주소의 사전 설정된 해제 조건 실행에는 마이닝 수수료가 발생하므로, 주소 조합이 많을수록 비용도 커집니다.
이 방식의 주요 제약은 두 명의 참여자 간 상호작용에만 국한된다는 점입니다. 하나는 자신의 실행 정확성을 입증하는 증명자, 다른 하나는 그 주장에 도전하는 검증자입니다. 미래 연구를 통해 더 많은 참여자를 포함하는 방법이 나올 수 있지만, 현재로서는 명확한 해결책이 없습니다.
협력 정산 시나리오에서는 모든 참여자가 온라인이어야 하므로, 프로토콜의 실용성과 편의성에 일정한 제약이 따릅니다.
보안 측면에서는 다음과 같은 주요 리스크가 존재합니다:
1. 비용 제약으로 인해 막대한 계산 작업이 반드시 오프체인에서 이루어져야 하며, 오프체인 계산은 중앙 집중형 서비스에서 흔히 발생하는 보안 리스크를 안고 있습니다.
2. 대량의 데이터가 오프체인에 저장되므로 데이터 가용성(data availability)과 데이터 보안 역시 반드시 고려해야 할 리스크 요소입니다.
3. 에칭된 회로 자체에 논리적 취약점이 존재하는지도 보안 리스크이며, 회로의 난독성으로 인해 감사를 위한 추가 비용 또는 형식적 검증(formal verification) 비용이 더 많이 들어갑니다.
Metatrust는 과거 Uniswap의 전면적인 형식적 검증을 지원한 바 있으며, ZK 회로 감사 및 형식적 검증 분야에서 풍부한 경험을 보유하고 있어 BitVM 생태계의 안전한 실현을 위한 보장을 제공할 수 있습니다.
지난 두 편에서 소개한 방식은 모두 올해 급부상한 기술 방식입니다. 다음 편에서는 더욱 오래되고, 더 '정통적'인 방식인 라이트닝 네트워크의 업그레이드 버전—Taproot Assets를 소개하겠습니다.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News










