비트VM은 비트코인 생태계의 최신 핫 프로토콜로, 비트코인을 기반으로 구축된 모든 프로젝트에 혜택을 줄 수 있는 잠재력을 가지고 있습니다. BitVM의 설계와 비트코인을 위한 새로운 가능성에 대해 이야기해 보겠습니다.
<그림>
비트코인에 사기 증명 도입"비트코인 시즌 2 [3]"가 진행 중이며 개발자와 사용자 모두가 비트코인 프로젝트를 통해 새로운 사용 사례와 비트코인 기반 구축이라는 영원한 과제를 해결하기 위한 접근법을 제시할 수 있게 되어 기대가 큽니다.
비트코인은 확장성이 없습니다. 제한된 블록 공간으로 인해 네트워크가 혼잡할 때 거래 수수료가 크게 변동될 수 있습니다. 초당 7개의 트랜잭션만 처리되고 각 블록에는 약 1MB의 데이터만 포함되어 있기 때문에 수십억 명의 사용자가 사용하려면 비트코인만으로는 충분하지 않습니다. 솔루션을 확장해야 합니다[4] .
비트코인의 확장성을 개선하고 새로운 기능을 도입하기 위해 비트코인 L2[5](레이어2 블록체인)에서 많은 작업이 진행되어 왔습니다. 오늘날 비트코인을 기반으로 구축된 수십 개의 프로젝트가 있으며, 가장 유망한 연구 및 혁신 분야 중 하나는 비트코인 롤업[7]입니다. 높은 수준에서 비트코인 롤업은 트랜잭션이 오프체인에서 발생한 다음 개별 상태 변경으로 "롤업"되어 블록체인에 제출될 수 있도록 하며, 참여자가 제출된 상태 변경이 정확한지 확인할 수 있도록 암호화 증명 시스템을 사용합니다.
그러나 이러한 증명 시스템을 비트코인에 도입하는 데는 어려움이 있으며, 이것이 바로 BitVM이 등장하는 이유입니다.
비트브이엠이란 무엇인가요?
비트브이엠[8]는 비트코인에서 부정 증명을 가능하게 하는 프로토콜/규칙 세트이며, 개발자는 이를 즉시 사용할 수 있습니다. 비트코인 롤업, 최소 신뢰 브리지 등 비트코인에서 다양한 사용 사례를 구현하는 프로토콜입니다. BitVM의 핵심 설계는 계산을 오프체인으로 이동하고 비트코인 블록체인에서 사기 증명 메커니즘을 구현합니다.
BitVM은 비트코인에서 사기 증명을 가능하게 합니다.
BitVM 백서는 2023년 10월에 로빈 라이너스에 의해 발표되었습니다(로빈은 제로싱크[9] 팀의 일원으로 제로 지식 증명 시스템을 개발 중입니다. 지식 증명 시스템), 개발자들은 지난 몇 달 동안 이 프로토콜에 대한 관심이 높아지면서 실험을 시작했습니다.
비트브이엠은 소프트웨어로 구현된 실제 가상 머신(예: 이더리움 가상 머신)이 아니라 참여자들이 사전에 따르기로 동의한 분산 프로토콜/규칙 집합이라고 생각하시면 됩니다. 비트코인 오디날[10]이 작동하는 방식과 유사하게, 참여자가 규칙에 동의하는 사회적 합의 요소가 있으며 이러한 규칙은 프로토콜 수준에서 완전히 시행되지는 않습니다.
비트코인에서 임의의 회로를 검증하기 위한 도전-응답 프로토콜을 제공한다는 점, 즉 체인 아래로 진술(예: 이 증명은 유효하다)을 하고 비트코인 L1을 사용해 이를 검증할 수 있다는 점이 BitVM을 흥미롭게 만드는 이유입니다. 비트코인을 기반으로 구축하는 것은 매우 어렵기 때문에 "비트코인 상에서"가 핵심이며, 만약 구현된다면 BitVM 프로토콜은 낙관적인 롤업, 양방향 BTC 앵커 등을 구축하는 데 사용될 수 있으며, 이는 비트코인 상에서 구축되는 다른 프로젝트에 도움이 될 수 있습니다.
비트VM은 어떤 문제를 해결하나요?
비트코인을 기반으로 구축하는 모든 프로젝트는 체인과 상호작용하는 것이 얼마나 어려운지 알고 있습니다(히로에서는 이러한 어려움을 직접 경험했습니다). 비트코인 기반 구축의 어려움 중 하나는 비트코인이 복잡한 연산을 처리할 수 없다는 것입니다.
스마트 컨트랙트가 없습니다. 가상 머신이 없습니다. 프로그래밍 가능성은 개발자가 opcode [11](연산 코드)로 구축할 수 있는 것으로 제한되며, 그 기능도 제한적입니다. 새로운 연산 코드를 도입하려면 BIP와 비트코인 포크가 필요합니다(이는 매우 어렵습니다).
따라서 포크와 새로운 연산 코드가 없으면 프로그래밍이 제한될 수밖에 없습니다. 비트코인 확장성의 경우, 이러한 제한은 크게 두 가지 방식으로 나타납니다.
양방향 BTC 앵커링을 구성하려는 경우 방정식에서 신뢰를 제거하기 어렵습니다. 오늘날 대부분의 BTC 앵커링은 단일 기관 또는 여러 서명자를 관리하는 컨소시엄인 커스터디언이 입출금을 처리합니다. 이를 "쓰기 문제"라고 설명하기도 합니다. 스택 생태계에서 곧 출시될 나카모토 업그레이드에는 최소한의 트러스트 브리지가 포함되며, 이에 대해서는 나중에 자세히 설명하겠습니다.
롤업을 통해 계산이나 거래를 오프체인으로 옮기려는 경우 비트코인 자체에서 오프체인 데이터를 검증하고 확인하기가 어렵습니다. 이는 검증 문제입니다.
이 두 가지 문제에 대해 BitVM은 비트코인 L1에 챌린지/응답 프로토콜을 구현하여 설계를 획기적으로 개선할 수 있습니다.
BitVM은 어떻게 작동하나요?
비트VM을 프로토콜 또는 일련의 규칙으로 생각하면 쉽게 이해할 수 있습니다. 두 당사자가 이러한 규칙을 따르기로 사전에 합의하면(즉, 서로 협력해야 한다는 의미) 어떤 도전-응답 게임도 할 수 있습니다. 이론적으로 이는 비트코인에서 임의로 복잡한 절차를 검증/증명하는 데 사용될 수 있습니다(이러한 절차의 실제 실행은 오프체인에서 발생).
구체적인 예를 들어보겠습니다.
앨리스와 밥이 동전 던지기 게임을 하고 싶다고 가정해 보겠습니다. 각 플레이어는 0.5 BTC를 팟에 넣습니다. 헤드업이 1 BTC를 얻습니다. 앨리스가 동전을 가져와 먼저 뒤집습니다. 밥은 앨리스가 속임수를 쓰지 않도록 하려고 합니다. 다음은 BitVM을 사용하여 게임을 플레이하는 방법입니다(단순화를 위해 많은 세부 사항은 생략):
앨리스와 밥은 BitVM 프로토콜을 따르기로 동의합니다.
앞면은 H0 값으로, 뒷면은 H1 값으로 표현된다고 가정합니다. 앨리스는 다른 두 값, 즉 P0과 P1을 선택하고 해싱하여 H0과 H1을 생성하므로 해시(P0) = H0, 해시(P1) = H1이 됩니다. P0을 H0의 "원본 이미지"라고 하고, P1을 H1의 "원본 이미지"라고 합니다.
앨리스가 밥과 H0 및 H1 값을 공유합니다(사실 앨리스는 이러한 해시를 취소할 수 없게 '약속'했으므로 나중에 다른 값을 주장할 수 없습니다). 밥은 원래 값인 P0과 P1을 알지 못합니다(이러한 값을 '추측'하는 것은 매우 어렵기 때문에 밥이 마술처럼 알아내지 못할 것이라고 안전하게 가정할 수 있습니다).
앨리스와 밥은 도전에 대한 계약과 응답에 대한 계약 두 가지를 미리 체결합니다.
챌린지 트랜잭션에서 Bob은 기본적으로 다음과 같은 스크립트를 포함할 것입니다. 제공된 입력값이 알려진 해시값 H0 또는 H1 중 하나에 해시되는지 확인하는 스크립트가 포함됩니다. 해시값이 H0이면 Bob은 해당 값이 양수이고, H1이면 음수라는 것을 알고 있습니다. 또한 스크립트에는 시간 제한이 있어 기한까지 응답이 없으면 Bob이 상금을 받습니다.
응답 트랜잭션에서 앨리스는 해당 원본 이미지인 P0 또는 P1을 포함함으로써 동전 던지기 결과를 "공개"할 수 있습니다. 앨리스가 값을 포함하지 않거나, 두 개의 값을 포함하거나, P0 또는 P1 이외의 값을 포함하면 밥이 팟을 가져갑니다. 그렇지 않으면 값이 P0(앞면)이면 앨리스가 냄비를 가져갑니다.
이제 게임을 시작할 준비가 되었습니다. 앨리스는 동전을 던졌지만 아직 결과를 공개하지 않고, 밥이 챌린지 트랜잭션을 발행하고, 앨리스가 응답 트랜잭션을 브로드캐스트합니다. '사기 탐지' 로직은 앞서 설명한 스크립트를 사용하여 체인에서 실행됩니다. 물론 이것은 사소하고 의도적으로 고안된 예시이지만, 핵심 아이디어를 보여줍니다. 조금 더 복잡한 예로 슈퍼 테스트넷이라는 개발자가 설계한 틱택토 게임을 생각해 보세요. 여기[13]에서 GitHub 리포지토리를 확인하거나 지금 바로 "틱택토[14]"를 플레이해 보세요. Super Testnet은 실제로 Hiro에게 게임을 보여주었는데, 아래에서 시청하실 수 있습니다: p>
. p>
유튜브의 비트브이엠 크래시 코스 [15]
게임의 고급 구성 요소는 다음과 같습니다:
틱택 로직은 9칸 그리드입니다. 첫 번째 플레이어인 앨리스는 최대 5번만 움직일 수 있으므로 45개의 사전 이미지와 해시가 있습니다(라운드당 9개). 두 번째 플레이어인 밥은 최대 4번만 움직일 수 있으므로 해시는 36개입니다.
Tic-Tac-Toe에는 세 가지 '치트' 방법이 있습니다: 플레이어가 자신의 차례에 여러 개의 X/O를 놓는 것, 플레이어가 이전에 사용한 사각형을 덮어쓰는 것, 플레이어가 이전에 상대방이 사용한 사각형을 덮어쓰는 것. 따라서 도전/응답 프로토콜은 이러한 상황을 감지하는 데 중점을 두고 설계되었습니다.
도전 트랜잭션은 다른 플레이어가 어느 칸에 X 또는 O를 놓았는지 "공개"하도록 강제합니다.
도전 트랜잭션은 다른 플레이어가 어느 칸에 X 또는 O를 놓았는지 "공개"하도록 강제합니다.
응답 트랜잭션에는 위의 세 가지 시나리오를 모두 검사하는 스크립트가 있습니다. 사기가 감지되지 않으면 게임이 계속되거나 누군가가 승리하여 게임이 종료됩니다. 사기가 감지되면 도전자가 승리하고 증명자가 패배합니다.
두 경우 모두 부정 증명은 수작업으로 제작되며 해당 사용 사례를 위해 특별히 설계되었으므로 틱택토 부정 증명은 동전 던지기나 다른 어떤 게임에도 적용되지 않습니다.
큰 그림으로 돌아가서, BitVM 백서는 일반적인 접근 방식을 설명합니다: 모든 프로그램에 대해 해당 프로그램에 대한 유효성 증명을 구성하는 방법을 제공합니다. 주요 인사이트는 다음과 같습니다:
동전 던지기의 예에서 개별 비트의 유효성을 검사하는 방법을 살펴봅시다: 이를 "비트 커밋 " 증명이라고 부르겠습니다.
비트 약속을 사용하면 논리 게이트 약속을 구성할 수 있습니다. 부울 AND/OR 연산자를 생각해 보세요. 두 입력(각각 0 또는 1 값을 취하는)에 대해 이 연산자는 단일 출력을 정의합니다. 따라서 2비트 프로미스를 입력으로, 1비트 프로미스를 출력으로 사용하면 모든 논리 게이트에 대한 유효성 증명을 생성할 수 있습니다. BitVM 백서에서는 NAND 논리 게이트를 사용합니다.
마지막으로, 모든 임의의 연산을 일련의 논리 게이트로 표현할 수 있으며, BitVM 백서에서는 이를 "이진 회로"라고 부릅니다. 이러한 회로는 탭 트리의 각 리프가 단일 게이트 커밋을 나타내는 탭스크립트를 사용하여 효율적으로 표현할 수 있습니다.
챌린지/응답 프로토콜은 기본적으로 특정 게이트 약속의 출력을 검증하는 것을 포함합니다. 최악의 시나리오에서는 각 개별 게이트의 출력을 검증해야 할 수도 있습니다.
이 리포지토리에서 임의의 프로그램을 탭리프 회로로 변환하는 한 가지 방법을 확인하세요.
스택은 어떻게 사용하나요?
Stacks 에코시스템에서 BitVM의 가장 분명하고 관련성이 높은 두 가지 애플리케이션은 다음과 같습니다.
개선 sBTC에 대한 신뢰 가정
비트코인에서 스택 블록에 유효성 증명 추가
왜 이 두 가지 애플리케이션을 선택해야 할까요? 현재 sBTC 디자인은 이미 개발 중인 비트코인에서 가장 안전하고 신뢰를 최소화하는 양방향 앵커 중 하나입니다. 그렇긴 하지만 보안 모델과 신뢰 가정 [18]에는 여전히 개선의 여지가 있습니다. 최소 30%의 정직한 서명자를 요구하거나 평판이 좋은 서명자 집합을 신뢰하는 것과 달리, BitVM 기반 접근 방식은 이론적으로 단 한 명의 정직한 참여자만으로 sBTC를 운영할 수 있습니다.
마찬가지로 각 스택 블록은 비트코인에 정산되지만, 현재 설계에서는 체인 상태의 사본이 있는 경우에만 스택 데이터를 독립적으로 검증할 수 있습니다. BitVM을 사용하고 스택 블록에 유효성 증명도 포함한다면, 무결성(특정 스택 블록의 데이터가 비트코인에 저장된 해시와 일치하는지)뿐만 아니라 정확성(특정 스택 블록의 트랜잭션이 실제로 올바르게 실행되었는지 비트코인에 저장된 증명을 보고 확인할 수 있음)도 확인할 수 있습니다. 다시 말해, 이는 스택이 비트코인에서 낙관적인 롤업으로 발전할 수 있게 해줄 것입니다.
비트VM으로 이러한 애플리케이션을 구현하는 방법에 대한 구체적인 내용은 더 많은 연구와 개발이 필요합니다. 하지만 큰 틀에서 몇 가지 아이디어를 스케치해볼 수는 있습니다.
비트VM과 sBTC
sBTC의 예를 들어보면, 앵커링 과정은 매우 간단하며 비트코인 거래를 브로드캐스팅하는 것만으로 완료할 수 있습니다. 그러나 현재 설계에서 앵커링 종료 프로세스는 서명자가 요청을 처리하는 데 의존합니다(스택에서). 이로 인해 몇 가지 제약이 발생합니다.
대신 (또는 가능한 경우) 유효성 증명인 유효성 증명을 생성하고 BitVM[19]을 사용하는 경우:
핵심은 유효성 증명을 구축하는 방법을 정확히 파악하는 것입니다. BitVM 백서에 설명된 무차별 대입 방식은 효과가 있을 수 있지만, 매우 큰 탭리프 회로(수십억 개의 노드)로 이어질 수 있습니다. 이는 결국 모든 챌린지에 오랜 시간(아마도 몇 주 이상)이 소요된다는 것을 의미하며, 주의와 리소스(트랜잭션 수수료!) 측면의 비용은 말할 것도 없습니다. 주의와 리소스(트랜잭션 비용!) 측면에서의 비용. 틱택토 예시에서 보았듯이 특정 사용 사례에 맞게 맞춤화된 보다 간결한 증명을 구성할 수 있으며, 이와 유사한 접근 방식이 이러한 상황에 더 효과적일 수 있습니다.
비트VM과 스택
스택의 전체 블록의 유효성에 대한 증명의 경우 탐색할 설계 공간이 많습니다. 예를 들어, 단일 트랜잭션 또는 전체 블록 또는 그 중간 수준(예: 인과적 의존성 체인을 형성하는 트랜잭션)에서 증명해야 할까요? 간단한 토큰 전송에 대한 증명을 먼저 생성한 다음 점진적으로 클래리티 콘트랙트를 추가하는 것과 같은 점진적 접근 방식을 취할 수 있나요? 스택 채굴자와 네트워크 참여자는 이미 스택 체인 상태의 완전한 기록을 유지하려는 재정적 인센티브를 가지고 있기 때문에 이것이 비트코인 블록 공간을 잘 활용하는 방법인가요?
결론
비트브이엠은 블로그 게시물로 설명하기에는 더 많은 연구와 생각, 실험이 필요한 흥미로운 주제이지만, 가장 최근의 흥미로운 비트코인 개발 중 일부를 밝히는 데 도움이 되었기를 바랍니다! .