BitVM, 비트코인 메인넷에서 스마트 계약의 잠재력
- BTC0%
10월 9일, ZeroSync의 개발자 Robin Linus가 BitVM 백서를 발표하여 커뮤니티로부터 큰 관심을 받았습니다. BitVM은 네트워크의 합의 규칙을 수정하지 않고도 튜링 완전한 비트코인 계약을 표현할 수 있는 새로운 컴퓨팅 패러다임을 소개합니다.
분산화된 스마트 계약: 한계와 목표
비트코인의 스크립트는 스택 기반 언어로, 트랜잭션의 유효성 검증 로직을 정의하기 위한 조건부 검사와 같은 기본적인 제어 구조를 제공합니다. 이는 간단한 조건부 유효성 검사 과정을 통해 비트코인을 사용하기 위해 유효한 디지털 서명을 요구합니다. 그러나 스크립트는 비튜링 완전성을 갖도록 설계되었습니다. 루프와 같은 복잡한 흐름 제어 기능을 지원하지 않지만, 이러한 설계는 언어의 단순성과 보안성을 보장합니다. 이러한 제한으로 인해 스크립트가 스마트 계약을 포함한 복잡한 연산을 실행하는 것이 어려워졌습니다.
비트코인을 위해 설계된 일부 레이어 2 솔루션은 자산을 잠금으로써 기본적인 스마트 계약 기능을 달성할 수 있지만, 본질적으로 다중 서명 주소와 크로스 체인 자산 매핑에 의존하며, 이는 일정 수준의 중앙화된 신뢰를 필요로 합니다. 이는 비트코인의 탈중앙화 약속을 손상시킵니다. BitVM이 도입되기 전까지 비트코인 커뮤니티는 탈중앙화되고, 신뢰를 최소화하며, 튜링 완전한 계산이 가능한 방법을 모색해 왔습니다.
BitVM: 비트코인에서 모든 것을 계산하다
혁신의 핵심으로, BitVM은 비트코인의 기존 스크립트 시스템을 활용하여 논리 게이트(AND 게이트, OR 게이트, NOT 게이트, XOR 게이트를 포함하여 AND, OR, NOT, XOR과 같은 연산을 가능하게 함)를 구현하여 임의로 복잡한 부울 회로를 구축합니다. 이러한 회로는 이진 입력에 대해 논리 연산을 수행하고 이진 출력을 제공하는 데 사용됩니다; 부울 연산은 AND, OR, NOT, XOR과 같은 연산을 수행하기 위해 논리 게이트를 사용하여 구현될 수 있습니다. 구체적으로, BitVM은 해시 시간 잠금 계약(HTLC)과 태프루트(2021년 11월에 활성화된 스크립트 최적화를 위한 소프트 포크)를 사용하여 AND와 OR 게이트와 같은 기본 논리 게이트를 표현합니다. 그런 다음 BitVM은 이러한 기본 논리 게이트를 결합하여 어떤 복잡성의 회로도 구성할 수 있어, 본질적으로 비트코인 블록체인 위에 프로그래밍 가능한 컴퓨터를 시뮬레이션합니다.
마지막으로, 거래 당사자 간의 분쟁이 발생할 경우, 비트코인의 사기 증명과 유사한 우아한 도전-응답 프로토콜을 검증에 사용할 수 있습니다. 증명자는 특정 입력에 대해 주어진 함수가 특정 출력으로 평가된다고 주장합니다. 만약 그 주장이 거짓이라면, 검증자는 사기 증명을 수행하고 증명자를 처벌할 수 있습니다. 이 메커니즘을 사용하면 비트코인에서 모든 계산 가능한 함수를 검증할 수 있습니다.
BitVM의 설계
비트 값 약정
비트 값 약정은 비트코인 스크립트로, if-else 문을 사용하여 약정 체계를 구현합니다. 이 암호학적 원시 요소는 발신자가 메시지 내용을 보내기 전에 확인할 수 있도록 하며, 내용이 공개적으로 공개된 후에는 변경할 수 없도록 합니다. 이 약정 체계는 hash0과 hash1이라는 두 개의 해시 값을 포함합니다. 반환되는 값이 0인지 1인지는 입력의 해시 값을 이 두 해시 값과 비교하여 결정됩니다.
그림 1: 1비트 약정의 구체적인 구현
:quality(80)/2023-11-01/1321A251238D665AA862939993DE617A.png)
출처: https://bitvm.org/bitvm.pdf
논리 게이트 약정
계산 이론에서, 모든 계산 가능한 함수는 부울 회로로 표현될 수 있습니다. 특히, NAND 게이트는 모든 다른 복잡한 논리 게이트를 구축하는 데 사용될 수 있는 범용 논리 게이트입니다. BitVM은 NAND 게이트를 구현하기 위해 두 개의 입력을 나타내는 두 개의 비트 값 약정과 출력을 나타내는 세 번째 비트 값 약정을 포함합니다.
BitVM은 비트코인 스크립트를 통해 NAND 게이트를 교묘하게 표현합니다. 이를 통해 임의로 복잡한 부울 논리 회로를 구축할 수 있어, 스크립트를 통해 프로그래밍 가능한 컴퓨터를 효과적으로 시뮬레이션할 수 있습니다.
그림 2: 비트 값 약정을 사용한 NAND 게이트 구현
:quality(80)/2023-11-01/23A48B54E874C749C41F131C7D4730C6.png)
출처: https://biquanlibai.notion.site/BitVM-2b8557e0ea004d0cbc52951782bc9754
그림 3: NAND 연산을 위한 논리 게이트 커밋먼트
:quality(80)/2023-11-01/E98F6725AA61147C861A13360ADD94C1.png)
출처: https://bitvm.org/bitvm.pdf
이 스크립트는 두 입력의 NAND 값을 계산하여 커밋된 출력 비트와 일치하는지 확인합니다.
이진 회로 커밋먼트
BitVM은 게이트 커밋먼트를 구성하여 모든 회로를 표현할 수 있습니다. 실행의 모든 단계는 Tapleaf에 커밋됩니다. 이들은 모두 동일한 Taproot 주소로 결합되어 증명자가 회로의 모든 게이트를 실행할 수 있습니다. 게이트를 실행하려면 증명자가 해당 게이트 커밋먼트를 열고 입력 및 출력 비트에 대한 값을 설정해야 합니다. 예를 들어, 그림 4에서 A, B, C 및 D는 각각 비트를 나타내는 미리 정의된 비트 값 커밋먼트입니다. 그런 다음 8개의 NAND 게이트를 포함하는 논리 연산이 수행됩니다. 예를 들어, A NAND B가 E를 산출하고 E가 다음 NAND 게이트의 입력으로 사용되면 전체 회로의 최종 출력은 TRUE가 됩니다. 이러한 부울 회로 설계는 비트 값 커밋먼트의 NAND 게이트를 연결하고 복잡한 논리 연산을 수행하여 비트코인 블록체인에서 검증 가능한 계산을 위한 간결한 표현을 제공합니다.
그림 4: 8개의 서로 다른 NAND 게이트로 구성된 회로
:quality(80)/2023-11-01/2A444519852359C0EA95AC2D2F5C054A.png)
출처: https://bitvm.org/bitvm.pdf
과제와 대응
BitVM에서는 하나의 회로에 커밋하는 것만으로는 충분하지 않으며, 계산의 정확성을 증명하기 위해 도전-응답 메커니즘이 필요합니다. 이를 위해 증명자와 검증자는 설정 단계에서 일련의 트랜잭션을 사전에 서명해야 합니다. 트랜잭션은 "도전 - 응답 - 도전 - 응답" 순서로 연결되어 여러 라운드의 도전-응답 상호작용을 생성합니다. 한 당사자가 참여를 중단하면 타임아웃 후 다른 당사자가 도전에서 승리하고 두 예치금을 모두 가져갈 수 있습니다. 이 메커니즘은 부정 행위의 경우에만 필요합니다. 양 당사자가 협력하는 한, 공동으로 2-of-2 서명으로 모든 계약을 정산할 수 있습니다.
이 메커니즘이 가상의 경우에 어떻게 작동하는지 살펴보겠습니다. Paul(증명자)과 Vicky(검증자)는 일련의 거래에 사전 서명했습니다. 그런 다음 Vicky는 자신의 Tapscript 잎에 있는 해시록 중 하나에서 도전(hash7)을 선택하여 도전(TX 2)을 시작할 수 있습니다. 이는 Paul에게 특정 Tapscript를 해제하고 개방된 입력과 출력으로 실행하도록 강제합니다. 일관성 없는 주장은 몇 라운드의 쿼리를 반복하여 빠르게 반증될 수 있습니다. 증명자가 협력을 중단하면 검증자는 자신이 보유한 해시 프리이미지를 해제하여 증명자가 온체인에서 응답하도록 강제할 수 있습니다. 각 쿼리 라운드는 특정 게이트를 검증하거나 반증할 수 있습니다. 이진 검색(정렬된 배열에서 특정 요소를 찾는 데 사용되는 알고리즘)을 통해 검증자는 몇 번의 도전-응답 라운드 후에 증명자의 오류를 빠르게 식별할 수 있습니다. 증명자의 두 가지 약속이 충돌하면 검증자는 즉시 도전에서 승리하고 보증금을 가져갑니다.
그림 5: 여러 라운드의 도전-응답을 수행하기 위한 사전 서명된 거래 순서
:quality(80)/2023-11-01/8D9777E151B617754A912BDA1F5097CF.png)
출처: https://bitvm.org/bitvm.pdf
이러한 세심한 설계를 통해 BitVM은 모든 복잡한 계산의 온체인 검증을 수행할 수 있으며, 이는 협업의 효율성을 보장하고 사기 발생 시 벌금을 부과합니다. 이는 비트코인 네트워크에서 튜링 완전한 대화형 계산을 검증할 수 있는 가능성을 보여줍니다.
BitVM 설계의 주요 측면
오프체인 계산 및 온체인 검증
BitVM은 복잡한 계산의 부담을 블록체인 밖으로 옮기고, 비트코인 블록체인을 결과 검증의 단일 목적으로 활용합니다. 이러한 접근 방식은 복잡한 계약을 블록체인에서 직접 실행하는 것을 피하여 블록체인 비대화를 완화합니다.
해시락과 비트코인 스크립트로 표현된 논리 게이트
BitVM은 비트코인이 지원하는 해시락과 스크립트 연산 코드를 활용하여 AND 및 NOT 게이트와 같은 기본 논리 게이트를 표현합니다. 이러한 논리 게이트를 연결하면 임의의 복잡성을 가진 회로를 구축할 수 있어 튜링 완전한 계산이 가능해집니다.
증명자와 검증자를 위한 게임 이론 메커니즘
낙관적 롤업과 유사한 BitVM의 검증 메커니즘은 계산 당사자들 간의 대화형 도전과 응답을 포함합니다. 최종적으로 정확한 계산 결과가 온체인에서 확인됩니다. 만약 증명자가 속였다면, 검증자는 비트코인 블록체인에서 페널티를 실행할 수 있습니다. 따라서 BitVM과 낙관적 롤업은 온체인 검증을 위해 유사한 상호작용 메커니즘을 사용하며, 유일한 차이점은 BitVM이 대화형 도전-응답 프로세스를 구현하기 위해 비트코인 스크립트를 직접 사용한다는 것입니다.
최소한의 온체인 영향
BitVM의 계산 과정은 비트코인 블록체인에 최소한의 영향을 미치며, 분쟁이 발생할 때만 소수의 트랜잭션을 온체인에 남깁니다. 이는 비트코인의 효율성과 확장성을 보존합니다.
소프트 포크 불필요
BitVM은 기존 비트코인 스크립트 기능만을 활용하므로 소프트 포크를 통한 비트코인 프로토콜 수정이 필요하지 않습니다. 이로 인해 BitVM이 비트코인 메인넷에 더 쉽게 통합될 수 있습니다.
결론
BitVM의 가장 큰 혁신은 핵심 비트코인 프로토콜을 수정하지 않고도 튜링 완전한 검증을 구현할 수 있다는 점입니다. 이는 스크립트, 특히 Taproot에 의해 최적화된 스크립트를 창의적으로 사용함으로써 달성됩니다. 이러한 독창적인 설계로 인해 새로운 호환성 문제를 도입하거나 비트코인을 덜 분산화하지 않고도 비트코인 메인넷과 원활하게 통합될 수 있습니다.
BitVM의 혁신적인 솔루션은 비트코인 생태계에 스마트 계약과 탈중앙화된 애플리케이션을 도입할 수 있는 잠재력을 지니고 있습니다. 예를 들어, 이는 서로 다른 블록체인 자산을 연결하는 최소한의 신뢰가 필요한 크로스체인 브릿지를 구축하는 데 사용될 수 있어 비트코인의 상호운용성을 향상시킵니다. 또한 BitVM은 비트코인을 더욱 확장 가능하게 만들기 위해 더 효율적인 zkRollup 확장 계층을 구축하는 데에도 도움이 될 수 있습니다. 요약하자면, BitVM은 기존 기능의 혁신적인 활용만으로도 비트코인 생태계를 새로운 시대로 이끌어갈 수 있는 광범위한 가능성을 보여줍니다.
참고 문헌:
https://github.com/supertestnet/tapleaf-circuits
https://biquanlibai.notion.site/BitVM-2b8557e0ea004d0cbc52951782bc9754