(비트코인 스크립트 코드 샘플)
비트코인 레이어2가 아비트럼과 같은 이더리움 레이어2와 같은 형태가 될 경우 비트코인 레이어2가 아비트럼과 같은 이더리움 레이어2처럼 레이어1에서 사기 증거를 검증하고 BTC 보안을 상당 부분 계승하려면, BTC 체인에서 직접 "분쟁 트랜잭션" 또는 "분쟁 옵코드"를 검증해야 할 것입니다. 이 경우, 레이어2에서 사용하는 솔리디티 언어/ EVM의 옵코드를 비트코인 체인에서 다시 실행해야 합니다. 문제는 다음과 같이 요약됩니다."
비트코인 네이티브의 기초 프로그래밍 언어인 비트코인 스크립트에서 EVM 또는 기타 가상 머신을 구현하는 것입니다.
따라서 컴파일 원리의 관점에서 BitVM 체계를 이해하려면, 논리 게이트 회로가 작동하는 EVM/WASM/자바스크립트 옵코드를 가져와서 비트코인 스크립트 옵코드로 변환하는 것입니다. EVM 옵코드 --> 비트코인 스크립트 옵코드"를 둘 사이의 중간 형태(IR)로 작동합니다.
(비트브이엠 백서에서는 비트코인 체인에서 특정 "논란의 여지가 있는 명령"을 실행하는 일반적인 아이디어에 대해 설명합니다)
. 어쨌든 시뮬레이션의 최종 결과는 EVM/WASM에서 처리될 수 있는 명령이 비트코인 체인에서 직접 처리된다는 것입니다. 이는 실현 가능하지만, 많은 수의 논리 게이트를 중간 형태로 사용하여 모든 EVM/WASM 연산 코드를 표현하고, 가장 복잡한 트랜잭션 처리 흐름 중 일부를 논리 게이트 조합을 사용하여 직접 표현해야 하므로 작업량이 엄청나게 늘어날 수 있다는 문제가 있습니다.
3. 다음은 비트브이엠 백서에 언급된 또 다른 핵심으로, 아리트럼의 "대화형 사기 증명"과 매우 유사합니다.
대화형 사기 증명에는 어서트라는 단어가 포함됩니다. 일반적으로 레이어2의 제안자(종종 시퀀서에 의해 행동)는 레이어1에 특정 트랜잭션 데이터, 상태 전환 결과가 유효한지 아닌지에 대한 어서스트를 발행합니다. 상태 전환의 결과인 트랜잭션이 유효하고 오류가 없다는 것을 증명합니다.
제안자가 제출한 어설션에 결함이 있다고 생각하는 경우(관련 데이터가 잘못됨), 분쟁이 발생합니다. 이때 제안자와 챌린저는 라운드 로빈 방식으로 정보를 교환하고 분쟁이 발생한 데이터를 이분법적으로 조회하여 매우 세분화된 연산 명령어와 관련 데이터 조각을 빠르게 찾습니다.
이러한 논란의 여지가 있는 연산 코드는 입력 매개변수와 함께 레이어1에서 직접 실행되고 출력의 유효성을 검사해야 합니다(레이어1 노드는 자체 계산의 출력과 제안자의 이전 릴리즈의 출력을 비교합니다). 아비트럼에서는 이를 "단일 단계 사기 증명"이라고 부릅니다.
(아비트럼의 대화형 사기 증명) 프로토콜은 제안자가 게시한 데이터를 이분법을 통해 검색하고, 분쟁이 있는 데이터와 실행 결과를 최대한 빨리 찾아낸 후 최종 검증을 위해 단일 단계의 사기 증명을 레이어1로 전송합니다)
참고: 전 Arbitrum 기술 홍보대사 해석 아비트럼의 구성 요소 구조 (위)
(아비트럼의 대화형 사기 증명 흐름도, 대략적인 설명)
이 시점에서 단일 단계 사기 증명에 대한 개념은 잘 이해되고 있습니다. 레이어2에서 발생하는 대부분의 트랜잭션 명령은 BTC 체인에서 재검증할 필요가 없습니다. 그러나 이의가 제기된 데이터 조각/오퍼코드 중 하나는 레이어1에서 다시 재생되어야 합니다.
테스트 결과 증명자가 이전에 공개한 데이터에 문제가 있다고 결론이 나면 증명자가 약속한 자산을 삭감하고, 도전자에게 문제가 있다고 결론이 나면 도전자도 약속한 자산을 삭감합니다. 증명자가 오랫동안 도전에 응답하지 않으면 슬래시될 수도 있습니다.
아비트럼은 이더의 컨트랙트를 통해 위의 효과를 달성하며, 비트브이엠은 비트코인 스크립트의 도움으로 타임락, 다중 서명 및 기타 기능을 구현해야 합니다.
4. Strong>'대화형 부정 증명'과 '단일 단계 부정 증명'에 대해 간략히 설명한 후, MAST 트리와 머클 증명에 대해 이야기하겠습니다.
앞서 언급했듯이 BitVM 시나리오에서는 레이어2의 오프체인 처리와 관련된 방대한 양의 트랜잭션 데이터/로직 게이트가 체인에 직접적으로 존재하지 않고 필요할 때만 치안에 존재하게 됩니다.
이제는 마스트 트리와 머클 증명에 대해 이야기해 보겠습니다. 왼쪽;">그러나 "원래는 체인 아래에 있었고, 이제는 체인 위에 있다"는 데이터가 그냥 만들어진 것이 아니라는 것을 증명하는 방법이 필요한데, 이를 암호학에서는 커밋이라고 하며, 머클 증명은 일종의 커밋입니다.
먼저 머클 추상 구문 트리라고 불리는 MAST 트리에 대해 알아봅시다. 이는 머클 트리의 한 형태로, 컴파일 원리에 관여하는 AST 트리를 머클 트리로 변환한 것입니다.
그렇다면 AST 트리란 무엇인가요? 중국어 명칭은 '추상 구문 트리'로, 복잡한 명령어를 어휘 분석을 통해 여러 개의 기본 연산 단위로 세분화한 다음 나무와 같은 데이터 구조로 정리한 것을 의미합니다.
(AST 트리의 간단한 경우, 이 AST 트리는 x = 2, y = x * 3과 같은 간단한 연산이 기본 연산자 + 데이터로 세분화됩니다)
그리고 MAST 트리, 즉 반면 MAST 트리는 머클 증명을 지원하기 위해 AST 트리를 머클화한 것으로, 효율적인 '데이터 압축'이 가능하다는 장점이 있습니다. 예를 들어, 필요에 따라 머클 트리의 데이터를 BTC 체인에 게시하고 싶지만, 이 데이터가 실제로 머클 트리에 존재하며, 그냥 "공중에서 뽑아낸" 것이 아니라는 것을 외부 세계가 알 수 있도록 하고 싶다면 어떻게 해야 할까요?
머클 트리의 루트를 미리 체인에 기록한 다음, 나중에 머클 증명에 해당 루트에 해당하는 데이터 조각이 머클 트리에 존재한다는 것을 보여 주면 됩니다.
(머클 증명/브랜치와 루트의 관계)
따라서 전체 MAST 트리를 BTC 체인에 저장할 필요 없이, 단지 루트를 공개하여 커밋 역할을 하고, 필요할 때 데이터 프래그먼트 + 머클 증명 /브랜치를 제시하면 됩니다. 이렇게 하면 온체인 데이터의 양을 크게 압축할 수 있으며, 온체인 데이터가 실제로 마스트 트리에 존재한다는 것을 보장할 수 있습니다. 또한 모든 데이터를 공개하는 것이 아니라 데이터 조각 + 머클 프루프 일부만 BTC 체인에 공개하기 때문에 프라이버시 보호 효과도 뛰어납니다.
참고: 데이터 원천징수 및 사기 증명: 플라즈마가 스마트 컨트랙트를 지원하지 않는 이유
(MAST 트리 예시)
비트브이엠의 솔루션은 모든 로직 게이트를 비트코인 스크립트로 표현한 다음 거대한 MAST 트리로 구성하고, 트리 하단의 잎사귀(다이어그램의 내용)가 비트코인 스크립트로 구현된 로직 게이트에 해당합니다.
Layer2의 제안자는 종종 BTC 체인에 마스트 트리의 루트를 게시하며, 각 마스트 트리에는 모든 입력 파라미터/옵코드/논리 게이트 회로를 포함하는 트랜잭션과 관련된 트랜잭션이 존재합니다. 이는 어떻게 보면 Arbitrum의 제안자가 이더 체인에 롤업 블록을 게시하는 것과 유사합니다.
분쟁이 발생하면, 도전자는 제안자가 게시한 루트가 도전하고자 하는 BTC 체인에 선언을 합니다. 그런 다음 제안자는 해당 루트에 해당하는 특정 데이터를 공개하도록 요청받습니다. 그 후, 제안자는 머클 증명을 생성하고 도전자와 공동으로 분쟁 중인 논리 게이트 회로를 찾을 때까지 체인의 마스트 트리에서 작은 데이터 조각을 반복적으로 공개합니다. 그 후 슬래시를 실행할 수 있습니다.
(출처: https://medium.com/crypto-garage/deep-dive-into-bitvm-computing-paradigm-to-express-) 튜링-완성-비트코인-계약-1c6cb05edfca)
5. 이 시점에서 BitVM 프로그램에서 가장 중요한 부분은 기본적으로 끝났습니다. 일부 세부 사항은 여전히 약간 모호하지만, 독자들은 이미 BitVM의 본질을 파악할 수 있다고 생각합니다. 백서에 언급된 비트값 약속은 제안자가 체인의 논리 게이트 회로를 검증하고 해당 게이트의 입력값에 0과 1을 모두 할당하여 이분법적인 혼란을 야기하는 것을 방지하기 위한 것입니다.
요약: 비트브이엠의 체계는 비트코인 스크립트를 사용해 논리 게이트를 표현하고, 논리 게이트는 EVM/다른 VM의 연산 코드를 표현하고, 연산 코드는 모든 트랜잭션 명령의 처리 흐름을 표현한 다음, 마지막으로 머클 트리/MAST 트리로 구성됩니다. tree.
이러한 트리는 트랜잭션 처리 흐름의 표현이 매우 복잡하면 1억 개의 리프가 깨지기 쉬우므로 커밋이 차지하는 블록 공간과 부정 증명 리플의 범위를 최소화하기 위해 만들어졌습니다.
온체인에서 아주 작은 데이터와 로직 게이트 스크립트만 필요한 단일 단계 위조 증명은 누군가의 도전에 대비해 완전한 머클 트리를 체인에 오랫동안 저장해야 하며, 트리의 데이터를 사용할 수 있을 때 언제든지 온체인화할 수 있습니다.
Layer2에서 발생하는 모든 트랜잭션은 대규모 머클 트리를 생성하며, 노드에 대한 계산 및 저장 부담을 상상할 수 있으며, 대부분의 사람들이 노드 실행을 꺼릴 수 있습니다(하지만 이러한 기록 데이터는 만료로 제거할 수 있으며, B^2 네트워크는 은 특히 파일코인과 같은 zk 스토리지 증명을 도입하여 스토리지 노드가 기록 데이터를 장기간 보관하도록 장려합니다)
그러나 부정 증명에 기반한 낙관적 롤업은 신뢰 모델이 1/N이고, N 노드 중 1 개만 정직하면 가 정직하고 중요한 순간에 사기 증명을 시작할 수 있는 한, 레이어 2 네트워크는 안전합니다.
그러나 BitVM 기반 Layer2 체계의 설계에는 다음과 같은 많은 과제가 있습니다.
1. 이론적으로, 레이어1에서 옵코드를 직접 검증할 필요 없이 데이터를 더 압축하기 위해 옵코드의 처리 흐름을 다시 zk 증명으로 압축하여 도전자가 zk 증명의 검증 단계에 도전할 수 있도록 할 수 있습니다. 이렇게 하면 온체인에 저장되는 데이터의 양을 크게 압축할 수 있습니다. 그러나 정확한 개발 세부 사항은 복잡할 수 있습니다.
2.제안자와 챌린저는 체인에서 상호작용을 반복적으로 생성해야 하며, 프로토콜을 어떻게 설계해야 하는지, 커밋과 챌린지 프로세스, 처리 흐름을 어떻게 더 최적화할지 고민해야 합니다. 많은 뇌세포를 소비합니다.
참고자료:
1. BitVM 백서
https://bitvm.org/bitvm.pdf
2. BitVM 자세히 알아보기 -튜링 표현을 위한 컴퓨팅 패러다임 완전한 비트코인 컨트랙트-
https://medium.com/crypto-garage/deep-dive-into-bitvm-computing- 튜링-완전한 비트코인 계약을 표현하는 패러다임 -1c6cb05edfca
3. 메르켈라이즈드 초록 구문 트리
https://hashingit.com/elements/research-resources/2014-12-11-merkelized- 추상 구문 트리.pdf