저자: 사이먼 쉬, 출처: 메타트러스트 랩스
서문 요약
이전에는 "비트코인 생태계 확장 솔루션 투어 (1): 어디로 가는 비문에서는 인기 있는 비문 생태계의 기술 원칙과 가능한 보안 문제에 대해 논의하고 재귀적 비문으로 스마트 콘트랙트를 구현할 수 있는 가능성에 대해 언급했습니다. 하지만 재귀적 비문은 탭루트 스크립트에 대한 루크의 제한으로 인해 몇 가지 장애물이 있는 것처럼 보이는데, 비트코인 네트워크에서 스마트 콘트랙트를 구현할 수 있는 다른 가능성은 없을까요?
블록체인 개발사 제로싱크의 공동 창업자인 로빈 라이너스는 2023년 10월 9일에 "BitVM: 비트코인에서 무엇이든 계산하기"라는 논문을 발표했습니다. "라는 논문을 발표하여 비트코인 블록체인에 스마트 컨트랙트를 도입하는 방안을 제시했습니다.
이 논문은 탭루트로 거의 모든 임의의 연산을 수행하고 이러한 연산을 사용하여 비트코인 체인에서 일어나는 일을 검증할 수 있는 매우 흥미로운 아이디어를 제안합니다. 비결은 모든 로직을 체인 아래에 두고 체인에서 몇 가지 계산을 사용하여 다른 사람이 부정확한 결과를 주장할 때 이의를 제기하는 것입니다. 즉, 비트코인 네트워크에 검증자의 로직을 배치하고, 비트코인의 강력한 합의 보안을 사용해 튜링 완전 연산 계층의 신뢰할 수 있는 제3자가 된 다음, 낙관적 롤업의 원칙을 사용해 오프체인 계산 결과를 검증할 수 있게 하는 것이죠.
그렇다면 비트코인 네트워크에서 검증자 로직을 어떻게 구현할 수 있을까요? 이전 섹션의 "비문"이라는 표현을 빌리자면, 저는 이를 비트코인 네트워크에 회로를 "에칭"하는 기술이라고 부르고 싶습니다.
로직 게이트 회로
컴퓨터나 휴대폰 내부에는 컴퓨터의 모든 기능을 수행하기 위해 일련의 1과 0을 통과하는 전류가 흐릅니다. 이는 수백만 개의 작은 부품, 즉 논리 게이트를 통해 이루어집니다. 이러한 논리 게이트는 컴퓨터 칩을 구성하는 기본 요소입니다.
각 논리 게이트는 하나 또는 두 개의 "비트" 정보를 수신하며, 각 비트는 1 또는 0입니다. 그런 다음 게이트는 "AND", "OR", "SELECT" 등과 같이 설정된 규칙에 따라 간단한 논리 연산을 수행합니다. 그런 다음 논리 게이트는 "AND", "OR" 또는 "NOT"과 같이 설정된 규칙에 따라 간단한 논리 연산을 수행합니다. 이러한 연산의 결과도 1 또는 0의 비트이며, 연산이 완료되면 다음 논리 게이트로 결과가 전달됩니다.
단순 논리 연산을 기반으로 한 이 시스템은 수많은 단순 논리 연산을 조합하면 아무리 복잡한 계산과 기능도 구현할 수 있다는 사실을 밝혀냈습니다. 이러한 논리 게이트의 조합과 협업은 현대 컴퓨터와 전자 기기가 복잡한 작업을 수행할 수 있는 능력의 기반이 됩니다. 이러한 기본적인 논리 연산을 통해 컴퓨터는 복잡한 산술 연산, 데이터 저장, 이미지 렌더링 및 기타 기능을 처리할 수 있습니다.
아래 그림은 "NAND 게이트"라는 매우 특수한 유형의 논리 게이트로, 다른 특수한 유형의 게이트만큼 효율적이지는 않지만 모든 유형의 논리 게이트 회로를 구성하는 데 사용할 수 있으며, BitVM의 논리 게이트 회로는 NAND 게이트로 구성됩니다.
비트코인에 AND-NON 게이트를 에칭하는 방법
기존 비트코인 스크립트에 AND-NON 게이트를 구성하려면 다음을 수행하면 됩니다. 해시 잠금과 잘 알려지지 않은 두 가지 옵코드인 OP_BOOLAND와 OP_NOT을 결합하면 됩니다.
먼저, 해시 잠금을 사용하여 해시 잠금을 만족하거나 해시 잠금 B를 만족하는 두 가지 방법 중 하나로 사용할 수 있는 분기 스크립트를 만들 수 있습니다. 이런 식으로 경로 A는 스택에 1을 출력하고 경로 B는 스택에 0을 출력합니다.
특정 해시 잠금을 만족시키면, 우리가 구성 중인 NAND 게이트의 입력 중 하나인 비트를 "잠금 해제"할 수 있습니다. 경로 중 하나만 만족시킬 수 있기 때문에 이 방법을 사용하면 사용자는 한 번에 하나의 비트만 제출할 수 있습니다.
과 비 게이트의 로직은 두 비트를 입력으로 받고 한 비트를 출력하는 것입니다. 두 입력 비트가 모두 1이면 0을 출력하고, 입력이 다른 조합이면 1을 출력합니다. 두 해시 잠금 트릭을 사용하면 두 입력을 모두 제출하고 출력이 올바른지 확인할 수 있는데, 이때 OP_BOOLAND와 OP_NOT을 사용할 수 있습니다.
OP_BOOLAND는 위드-논 게이트와 반대 방식으로 작동합니다. 두 입력이 모두 1이면 1을 출력하고, 그 외의 입력 조합은 0을 출력합니다. OP_NOT은 입력의 반대 값을 출력합니다. 따라서 이 두 개의 연산자를 조합하여 사용하면 스크립트 스택에서 두 개의 입력을 받아 역합 연산을 수행할 수 있습니다. 마지막으로, 어설션의 출력은 해시 잠금 트릭뿐만 아니라 OP_EQUALVERIFY를 사용하여 확인할 수 있습니다. 스택의 실제 결과와 비연산 결과가 사용자 어설션의 출력과 일치하지 않으면 스크립트는 유효성 검사에 실패합니다.
이것은 비트코인 스크립트에 AND-NON 회로를 "에칭"하여 비트코인 스크립트를 통해 가상 AND-NON 연산을 효과적으로 강제합니다.
대규모 회로를 에칭하는 방법
탭루트 스크립트를 사용하여 회로를 에칭하는 이 아이디어는 멋지지만, PC를 에칭하는 것과는 완전히 다릅니다. PC에서 볼 수 있는 것과 같은 초대형 회로는 말할 것도 없고, 어떤 계산 집합을 구현하려면 수천 개의 합-비게이트 회로가 필요한데, 비트코인의 제한된 탭루트 스크립팅 공간에서 복잡한 계산을 어떻게 처리할 수 있을까요?
비트브이엠은 탭루트 트리 접근법을 제안합니다. 비트코인 스크립트에서 복잡한 연산 프로세스를 구현하기 위해 논리 게이트를 직렬로 연결하여 연산 회로를 구축할 수 있습니다. 이 방식에서는 논리 연산이 순차적으로 실행되도록 개별 게이트를 묶는 데 해시 잠금을 사용합니다. 구체적으로, 한 게이트의 스크립트가 서로 다른 해시 원본 이미지(해시 명시적 값) 입력을 기반으로 서로 다른 출력 C1 또는 C2를 생성하는 경우 다음 게이트는 일치하는 해시 잠금 값을 입력으로 사용합니다.
이 접근 방식은 이전 게이트의 결과를 잘못 표현하려고 시도하면 다른 해시 잠금의 원본 이미지만 공개하는 페널티 메커니즘을 가능하게 합니다. 이 메커니즘은 두 사용자가 특정 계산 작업에 참여하기로 미리 동의한 다음 계산 과정을 게이트가 있는 회로와 없는 회로로만 구성된 회로로 분해하는 두 사용자 간의 대화형 계산에 사용할 수 있습니다. 그리고 회로의 각 게이트에 적합한 해시 잠금을 선택하고 이를 UTXO를 잠그는 스크립트 트리에 인코딩해야 합니다.
그런 다음 여러 주소로 탭루트 주소 매트릭스를 형성하고 탭루트 트리를 통해 일련의 트리 연결 UTXO 트랜잭션의 탭루트 스크립트에 논리 회로를 에칭하여 궁극적으로 특정 연산 작업을 처리할 수 있는 "컨트랙트와 유사한" 논리 회로를 생성합니다. 논리 회로.
Fraud Challenge
Fraud Challenge는 OP(옵티미즘 롤업) 기술의 핵심으로(아직까지 실제로 구현되지는 않았지만~), 일괄적인 트랜잭션이 일괄적으로 제출되기 전에 챌린저가 결함이 있다고 판단되는 트랜잭션에 대해 사기 챌린지(베팅 서약)를 시작하고 메인 네트워크의 검증자 컨트랙트가 상태 루트의 기초로 사용된다는 아이디어가 핵심입니다. 검증자 컨트랙트는 실행 후 상태 루트의 변화에 따라 제출자의 악의 여부를 판단한 후 양 당사자가 서약한 자산을 분배합니다.
반면, 비트브이엠에서는 스크립트 트리가 두 개의 회로로 설계되어 있어, 증명자가 하나의 회로에 제출할 수 있을 뿐만 아니라 도전자가 증명자의 진술에 이의를 제기할 수 있어야 합니다. 이는 일련의 트랜잭션에 사전 서명함으로써 달성할 수 있습니다. 이러한 사전 서명된 트랜잭션은 "챌린지-응답-챌린지-..."로 연결됩니다. 일정 시간이 지난 후 한 쪽이 중단하면 다른 쪽이 챌린지에서 승리하여 두 예치금을 모두 회수합니다.
위 다이어그램은 일련의 사전 서명된 트랜잭션을 보여줍니다.
- 챌린지: 스크립팅 경로의 비키(챌린저/검증자)는 다음과 같이 합니다. 증명에 대한 도전으로 사용할 원본 이미지(도전자만 알 수 있음)를 공개합니다.
- 답변: 폴(증명자)이 해당 논리 게이트를 실행하고 자금을 초기 스크립트로 다시 보냅니다.
일치하지 않는 진술은 몇 번의 쿼리 후에 빠르게 반박할 수 있습니다. 증명자가 체인 아래쪽에서 챌린저와 협력을 중단하면 챌린저는 증명자에게 체인 위로 협력을 강요합니다. 챌린저가 해제한 각 해시 잠금은 증명자가 보유한 원본 이미지 중 하나를 알고 있는 경우에만 증명자의 UTXO에 있는 각 NAND 게이트에 해당하는 탭루트 리프 노드를 사용할 수 있게 합니다. 증명자는 입력과 출력을 공개함으로써 주어진 탭루트 리프 노드가 올바르게 작동한다는 것을 증명할 수 있습니다. 이는 도전자가 탭리프에 해당하는 해시의 원본 이미지를 공개하여 잠금을 해제하고, 이진 조회를 통해 유한한 횟수(O(logn))의 도전과 답변 후에 도전자가 증명자의 오류를 잠글 수 있다는 전제하에 이루어집니다.
전체 과정에는 계약이 올바르게 정산되도록 여러 차례의 상호 작용이 포함됩니다. 도전자는 증명자가 각 게이트의 올바른 결과를 확인할 때까지 계속 도전하거나, 증명자가 도전에 응답하지 않을 경우 특정 시간이 지난 후 자금을 인출할 수 있습니다. 모든 작업이 오프체인에서 이루어지고 양 당사자가 협력하여 결제를 완료하는 것이 이상적이지만, 협업이 실패하면 양 당사자가 온체인 챌린지 게임을 통해 계약이 올바르게 해결되었는지 확인할 수 있습니다.
상륙 장애물 및 보안 문제
이 제안은 매우 많은 양의 데이터를 처리하고 생성하는 것을 포함합니다. 사용되는 탭루트 스크립트 트리에는 수십억 개의 리프 노드가 포함될 수 있으며, 정확한 결제를 위해 사전 서명된 관련 트랜잭션의 처리 시간이 최소 몇 시간 이상 걸릴 수 있습니다. 각 탭루트 주소에는 사전 설정된 잠금 해제 조건을 실행하기 위한 채굴자 수수료가 있으므로, 주소 조합이 많을수록 비용도 커집니다.
이 체계의 주요 한계 중 하나는 두 참여자 간의 상호작용에만 적용된다는 점입니다. 한 참여자는 실행의 정확성을 증명하는 증명자 역할을 하고, 다른 참여자는 전자의 진술에 이의를 제기하는 검증자 역할을 합니다. 향후 연구를 통해 더 많은 참여자를 포함할 수 있는 방법을 찾을 수 있겠지만, 현재로서는 명확한 해결책이 없는 것으로 보입니다.
협력적 합의 시나리오에서는 모든 참여자가 온라인 상태여야 하므로 프로토콜의 유용성과 편의성에 한계가 있습니다.
보안 측면에서는 주로 다음과 같은 보안 위험이 존재합니다.
1. 비용 제약으로 인해 많은 양의 연산을 오프체인에서 수행할 수밖에 없고, 오프체인 연산은 중앙화된 서비스의 일반적인 보안 위험을 수반합니다.
2, 데이터 가용성 및 데이터 보안 하에서 체인에 저장된 많은 수의 데이터도 위험 포인트이며
3, 에칭 된 회로 자체에 논리적 취약점이 있는지 여부도 보안 위험 포인트이며 회로를 읽을 수 없기 때문에 더 많은 감사 비용 또는 공식 검증 비용을 지불해야합니다.
메타트러스트는 포괄적인 공식 검증 작업을 통해 유니스왑을 지원해왔으며, ZK 회로 감사 및 공식 검증에 대한 광범위한 경험을 보유하고 있어 비트브이엠 생태계에 보안을 제공할 수 있습니다.
이전 두 기사는 올해 막 인기를 얻은 기술 솔루션에 대해 다루었습니다. 다음 기사에서는 수년간 사용되어 온 라이트닝 네트워크의 업그레이드 버전인 Taproot Assets이라는 더 오래되고 "정통적인" 솔루션을 소개하겠습니다. 탭루트 에셋.