Tác giả: Wuyue& Faust, geek web3
Cố vấn: Kevin He, người sáng lập cộng đồng BitVM Trung Quốc, cựu Web3 Tech Head@Huobi span>< /p>Nhưng thật không may, hầu hết các tài liệu viết hiện nay về BitVM không giải thích được các nguyên tắc của nó một cách phổ biến.
Bài viết này được viết sau khi chúng tôi đọc sách trắng dài 8 trang của BitVM và xem xét thông tin liên quan đến Taproot, cây MAST và Bitcoin Script. , một tóm tắt đơn giản. Để giúp người đọc dễ hiểu, một số cách diễn đạt khác với nội dung được giải thích trong sách trắng BitVM, chúng tôi giả định rằng người đọc đã có chút hiểu biết về Layer2 và có thể hiểu được ý tưởng đơn giản về "bằng chứng gian lận".
Một vài câu đầu tiên tóm tắt ý tưởng của BitVM: dữ liệu không cần phải có trên chuỗi trước tiên phải được phát hành và lưu trữ ngoài chuỗi và chỉ Cam kết (cam kết) mới được lưu trữ trên chuỗi.
Khi xảy ra bằng chứng thách thức/lừa đảo, chúng tôi chỉ đưa dữ liệu cần tải lên chuỗi để chứng minh rằng dữ liệu đó có liên quan đến Cam kết trên dây chuyền. Sau đó, mạng chính BTC sẽ xác minh xem có bất kỳ vấn đề nào với dữ liệu trên chuỗi hay không và liệu các nhà sản xuất dữ liệu (các nút xử lý giao dịch) có làm điều gì xấu xa hay không. Tất cả điều này tuân theo nguyên tắc dao cạo của Occam - "Không thêm thực thể trừ khi cần thiết" (nếu bạn có thể giảm trên chuỗi, hãy giảm trên chuỗi).
Văn bản: Cái gọi là chương trình xác minh bằng chứng gian lận dựa trên BitVM trên chuỗi BTC, tóm tắt phổ biến:
1. Trước hết, máy tính/bộ xử lý là một hệ thống đầu vào-đầu ra bao gồm một số lượng lớn các mạch cổng logic. Một trong những ý tưởng cốt lõi của BitVM là sử dụng Bitcoin Script để mô phỏng hiệu ứng đầu vào-đầu ra của mạch cổng logic.
Miễn là mạch cổng logic có thể được mô phỏng, thì về mặt lý thuyết, máy Turing có thể được hiện thực hóa và hoàn thành tất cả các nhiệm vụ có thể tính toán. Nói cách khác, miễn là bạn có nhiều người và nhiều tiền hơn, bạn có thể tuyển dụng một nhóm kỹ sư để giúp bạn sử dụng mã Bitcoin Script thô để mô phỏng các mạch cổng logic trước, sau đó sử dụng một số lượng lớn các mạch cổng logic để thực hiện các chức năng của EVM hoặc WASM. .
(Ảnh chụp màn hình này lấy từ một trò chơi dạy học: "Turing Complete", nội dung cốt lõi của trò chơi này là sử dụng các mạch cổng logic, đặc biệt là NAND cổng, xây dựng bộ xử lý CPU hoàn chỉnh)
Ai đó đã từng so sánh ý tưởng của BitVM với: trong "I In "The World", sử dụng mạch đá đỏ để tạo bộ xử lý M1. Nói cách khác, nó tương đương với việc sử dụng các khối xây dựng để xây dựng Tòa nhà Empire State ở New York.
(Người ta nói rằng đây là một "bộ xử lý" mà ai đó đã dành một năm để xây dựng trong "Minecraft") span>
2. Vậy tại sao bạn phải sử dụng Bitcoin Script để mô phỏng EVM hoặc WASM? Đây chẳng phải là rất rắc rối sao? Điều này là do hầu hết Bitcoin Lớp 2 thường chọn hỗ trợ các ngôn ngữ cấp cao như Solidity hoặc Move và thứ hiện có thể chạy trực tiếp trên chuỗi Bitcoin là Bitcoin Script, một ngôn ngữ đơn giản, không phải Turing bao gồm một loạt các các mã opcode độc đáo. Một ngôn ngữ lập trình hoàn chỉnh.
(Ví dụ về mã Bitcoin Script)
Nếu Lớp Bitcoin 2 có ý định xác minh bằng chứng gian lận trên Lớp 1 như Arbitrum và Lớp 2 Ethereum khác và kế thừa tính bảo mật của BTC ở mức độ lớn, thì nó cần xác minh trực tiếp "một giao dịch bị tranh chấp nhất định" trên BTC chuỗi hoặc "Một opcode gây tranh cãi nhất định". Bằng cách này, các mã hoạt động tương ứng với ngôn ngữ Solidity/EVM được Lớp 2 sử dụng phải được đưa vào chuỗi Bitcoin và chạy lại. Vấn đề tóm lại là như sau:
Sử dụng Bitcoin Script, một ngôn ngữ lập trình thô sơ có nguồn gốc từ Bitcoin, để đạt được hiệu quả của EVM hoặc ảo khác máy móc.
Vì vậy, để hiểu giải pháp BitVM từ góc độ nguyên tắc biên dịch, nó dịch mã hoạt động EVM / WASM / Javascript thành Bitcoin Script Opcode, mạch cổng logic đóng vai trò là dạng trung gian (IR) giữa "opcode EVM -> opcode Bitcoin Script".
(Sách trắng BitVM nói về ý tưởng chung về việc thực thi một số "hướng dẫn gây tranh cãi" nhất định trên chuỗi Bitcoin)
< p dir ="ltr" style="text-align: left;">Dù sao, hiệu ứng mô phỏng cuối cùng là đưa các hướng dẫn chỉ có thể xử lý trên EVM / WASM vào chuỗi Bitcoin để xử lý trực tiếp. Mặc dù giải pháp này khả thi nhưng khó khăn nằm ở chỗ làm thế nào để sử dụng một số lượng lớn các mạch cổng logic làm dạng trung gian để thể hiện tất cả các mã hoạt động EVM/WASM. Hơn nữa, việc sử dụng kết hợp các mạch cổng logic để thể hiện trực tiếp một số quy trình xử lý giao dịch cực kỳ phức tạp có thể dẫn đến khối lượng công việc rất lớn.
3. Hãy nói về một cốt lõi khác được đề cập trong sách trắng BitVM, đó là “bằng chứng gian lận tương tác” rất giống với Arbitrum . .
Bằng chứng gian lận tương tác sẽ liên quan đến một từ gọi là khẳng định. Nói chung, người đề xuất Người đề xuất Lớp 2 (thường được thực hiện bởi người sắp xếp thứ tự), một khẳng định khẳng định sẽ được đưa ra trên Lớp 1 để tuyên bố rằng dữ liệu giao dịch nhất định và kết quả chuyển đổi trạng thái là hợp lệ và chính xác.
Nếu ai đó cho rằng có vấn đề với khẳng định do Người đề xuất gửi (dữ liệu liên quan không chính xác), tranh chấp sẽ xảy ra. Tại thời điểm này, Người đề xuất và Người thách thức sẽ trao đổi thông tin theo kiểu vòng tròn và thực hiện tìm kiếm nhị phân trên dữ liệu đang tranh chấp để nhanh chóng xác định hướng dẫn hoạt động rất chi tiết và các đoạn dữ liệu liên quan của nó.
Đối với hướng dẫn thao tác gây tranh cãi này (Mã OP), nó cần được thực thi trực tiếp trên Lớp 1 cùng với các tham số đầu vào của nó và kết quả đầu ra phải được xác minh (Lớp1 nút sẽ So sánh kết quả đầu ra mà bạn đã tính toán với kết quả đầu ra được Người đề xuất công bố trước đó). Trong Arbitrum, đây được gọi là "bằng chứng gian lận một bước".
(Trong giao thức chống gian lận tương tác của Arbitrum, dữ liệu do Người đề xuất đưa ra sẽ được truy xuất thông qua phân đôi, hướng dẫn tranh chấp và kết quả thực thi sẽ được xác định sớm nhất có thể và bằng chứng gian lận một bước sẽ được gửi đến Lớp 1 để xử lý cuối cùng xác minh) p>
Tài liệu tham khảo: Cựu đại sứ kỹ thuật của Arbitrum giải thích cấu trúc thành phần của Arbitrum (Phần 1)
(Biểu đồ luồng bằng chứng gian lận tương tác của Arbitrum, lời giải thích tương đối thô)
Chúng ta đây, Ý tưởng về bằng chứng gian lận một bước rất dễ hiểu: phần lớn các hướng dẫn giao dịch xảy ra ở Lớp 2 không cần phải được xác minh lại trên chuỗi BTC. Tuy nhiên, một trong những đoạn dữ liệu/mã hoạt động gây tranh cãi phải được phát lại ở Lớp 1 khi bị thách thức.
Nếu kết luận phát hiện là có vấn đề với dữ liệu mà Nhà thầu đưa ra trước đó thì tài sản mà Nhà thầu đưa ra sẽ bị coi là tài sản cầm cố. chém; nếu Challenger có vấn đề thì Chém tài sản mà Challenger cầm cố. Nếu Prover không đáp lại thử thách trong thời gian dài, anh ta cũng có thể bị Chém.
Arbitrum đạt được những hiệu quả trên thông qua các hợp đồng trên Ethereum, trong khi BitVM dựa vào Bitcoin Script để đạt được các chức năng như khóa thời gian và đa chữ ký.
4.Sau khi nói ngắn gọn về "bằng chứng gian lận tương tác" và "bằng chứng gian lận một bước", chúng ta sẽ nói về cây MAST và Bằng chứng Merkle.
Như đã đề cập trước đó, trong giải pháp BitVM, lượng lớn dữ liệu giao dịch/số lượng lớn mạch cổng logic liên quan đến việc tắt xử lý Lớp 2 -chain sẽ không trực tiếp trên chuỗi, chỉ có một số cổng dữ liệu/logic được đưa vào chuỗi khi cần thiết.
Tuy nhiên, chúng tôi cần một số cách để chứng minh rằng những dữ liệu "ban đầu là ngoài chuỗi, giờ là trên chuỗi" này không chỉ là bịa đặt. , đây là Cam kết thường được đề cập trong mật mã. Bằng chứng Merkle là một loại Cam kết.
Đầu tiên, hãy nói về cây MAST. Tên đầy đủ của cây MAST là Cây cú pháp trừu tượng Merkelized, là dạng sau khi chuyển đổi cây AST liên quan đến nguyên tắc biên dịch thành Cây Merkle.
Vậy cây AST là gì? Tên tiếng Trung của nó là "Cây cú pháp trừu tượng", nói một cách đơn giản, nó chia nhỏ một lệnh phức tạp thành một loạt các đơn vị vận hành cơ bản thông qua phân tích từ vựng, sau đó tổ chức nó thành cấu trúc dữ liệu dạng cây.
(Một trường hợp đơn giản về cây AST. Cây AST này chia các hoạt động đơn giản như x=2, y=x*3 thành các mã hoạt động cơ bản+ Dữ liệu)
Cây MAST dùng để Merkle cây AST để hỗ trợ Merkle Proof. Một ưu điểm của cây Merkle là nó có thể đạt được khả năng "nén dữ liệu" hiệu quả. Ví dụ: bạn muốn xuất bản một đoạn dữ liệu nhất định trong cây Merkle lên chuỗi BTC khi cần thiết, nhưng bạn cũng muốn thuyết phục thế giới bên ngoài rằng đoạn dữ liệu này tồn tại trong cây Merkle và không phải là thứ bạn "nhặt được" tình cờ". Làm thế nào? quản lý?
Bạn chỉ cần ghi lại Gốc của cây Merkle trên chuỗi trước và xuất trình Bằng chứng Merkle trong tương lai để chứng minh rằng một số dữ liệu nhất định tồn tại trong Root tương ứng Trên cây Merkle, tốt thôi.
(Mối quan hệ giữa Merkle Proof/Branch và Root)
Vì vậy, không cần phải lưu trữ cây MAST hoàn chỉnh trên chuỗi BTC. Bạn chỉ cần tiết lộ Gốc của nó trước để hoạt động như một Cam kết và cung cấp các đoạn dữ liệu + Bằng chứng Merkle /Chi nhánh khi cần thiết. Điều này có thể nén đáng kể lượng dữ liệu trên chuỗi và đảm bảo rằng dữ liệu trên chuỗi thực sự tồn tại trong cây MAST. Hơn nữa, chỉ tiết lộ một phần nhỏ các đoạn dữ liệu + Bằng chứng Merkle trên chuỗi BTC thay vì tiết lộ tất cả dữ liệu có thể đạt được hiệu quả bảo vệ quyền riêng tư tốt.
Tham khảo: Giữ lại dữ liệu và bằng chứng gian lận: Tại sao Plasma không hỗ trợ hợp đồng thông minh
< img src="https://img.jinse.cn/7173446_image3.png">
( MAST ví dụ về cây)
Giải pháp của BitVM cố gắng thể hiện tất cả các mạch cổng logic trong các tập lệnh Bitcoin và sau đó sắp xếp chúng. Nó trở thành một MAST khổng lồ Chiếc lá ở dưới cùng của cây này (Nội dung trong hình) tương ứng với mạch cổng logic được thực hiện bằng tập lệnh Bitcoin.
Người đề xuất của Layer2 sẽ thường xuyên xuất bản gốc của cây MAST trên chuỗi BTC. Mỗi cây MAST được liên kết với một giao dịch. , liên quan đến tất cả các thông số đầu vào/mã hoạt động/mạch cổng logic của nó. Theo một cách nào đó, điều này tương tự như việc Người đề xuất của Arbitrum xuất bản Khối tổng hợp trên chuỗi Ethereum.
Khi xảy ra tranh chấp, người thách đấu tuyên bố trên chuỗi BTC rằng anh ta muốn thách thức Root nào do Người đề xuất cấp, sau đó hỏi Người đề xuất tiết lộ Root tương ứng với một phần dữ liệu. Sau đó, Người đề xuất đưa ra bằng chứng của Merkel và liên tục tiết lộ các đoạn dữ liệu nhỏ của cây MAST trên chuỗi cho đến khi mạch cổng logic gây tranh cãi được định vị chung với người thách thức. Sau đó bạn có thể thực hiện Chém.
(Nguồn: https://medium.com/crypto-garage/deep-dive-into-bitvm-computing-paradigm-to - express-turing-complete-bitcoin-contracts-1c6cb05edfca)
5. Tới đây , Phần quan trọng nhất của toàn bộ giải pháp BitVM về cơ bản đã được giải thích, mặc dù một số chi tiết vẫn còn hơi mơ hồ nhưng tôi tin rằng người đọc đã có thể hiểu được bản chất và ý chính của BitVM. Đối với cam kết giá trị bit được đề cập trong sách trắng của nó, nó nhằm ngăn Người đề xuất "gán cả giá trị 0 và giá trị 1" cho giá trị đầu vào của cổng logic khi bị thách thức và buộc phải xác minh cổng logic mạch trên dây chuyền, gây ra sự mơ hồ.
Tóm tắt: Giải pháp của BitVM trước tiên sử dụng tập lệnh Bitcoin để thể hiện các mạch cổng logic, sau đó sử dụng các mạch cổng logic để thể hiện các hoạt động của EVM/khác Mã máy ảo, sau đó sử dụng mã hoạt động để thể hiện luồng xử lý của bất kỳ lệnh giao dịch nào và cuối cùng sắp xếp nó thành cây merkle/cây MAST.
Một cây như vậy, nếu quá trình xử lý giao dịch được thể hiện rất phức tạp, có thể dễ dàng vượt quá 100 triệu lá, do đó Cam kết nên giảm xuống như càng nhiều càng tốt Không gian khối bị chiếm dụng và phạm vi của bằng chứng gian lận.
Mặc dù bằng chứng gian lận một bước chỉ yêu cầu một đoạn dữ liệu rất nhỏ và tập lệnh cổng logic trên chuỗi, nhưng Cây Merkle hoàn chỉnh cần phải được được lưu trữ trong Off-chain, trong trường hợp có ai đó thách thức, dữ liệu trên cây có thể được đưa vào chuỗi bất kỳ lúc nào.
Mọi giao dịch xảy ra trong Lớp 2 sẽ tạo ra Cây Merkle lớn. Áp lực tính toán và lưu trữ lên các nút có thể được tưởng tượng. Hầu hết mọi người có thể tưởng tượng được không sẵn sàng chạy các nút (nhưng những dữ liệu lịch sử này có thể hết hạn và bị loại bỏ, đồng thời mạng B^2 đặc biệt giới thiệu bằng chứng lưu trữ zk tương tự như Filecoin để khuyến khích các nút lưu trữ lưu dữ liệu lịch sử trong thời gian dài)
Tuy nhiên, Rollup lạc quan dựa trên bằng chứng gian lận không cần phải có quá nhiều nút, vì mô hình tin cậy của nó là 1/N, miễn là 1 trong số N nút là trung thực , Nếu bằng chứng gian lận có thể được bắt đầu vào những thời điểm quan trọng thì mạng Lớp 2 sẽ an toàn.
Tuy nhiên, vẫn còn nhiều thách thức trong việc thiết kế các giải pháp Lớp 2 dựa trên BitVM, chẳng hạn như:
1.Về mặt lý thuyết, để nén dữ liệu hơn nữa, không cần phải xác minh trực tiếp opcode trong Lớp 1. Luồng xử lý opcode có thể được nén lại thành bằng chứng zk. Hãy để những người thách đấu thử thách các bước xác minh của bằng chứng zk. Điều này có thể nén rất nhiều lượng dữ liệu trên chuỗi. Nhưng các chi tiết phát triển cụ thể sẽ phức tạp.
2. Người đề xuất và Người thách thức phải tương tác nhiều lần ngoài chuỗi, giao thức nên được thiết kế như thế nào, cam kết và thách thức Quá trình, làm thế nào để tối ưu hóa hơn nữa quy trình xử lý, đòi hỏi rất nhiều tế bào não.
Tài liệu tham khảo:
1.BitVM White giấy
https://bitvm.org/bitvm.pdf
2.Đi sâu vào BitVM -Mô hình điện toán để thể hiện các hợp đồng Bitcoin hoàn chỉnh Turing-
https://medium .com/crypto-garage/deep-dive-into-bitvm-computing-paradigm-to-express-turing-complete-bitcoin-contracts-1c6cb05edfca
3.Cây cú pháp trừu tượng được Merkelized
https://hashingit.com/elements/research-resources/2014-12- 11-merkelized-abstract-syntax-trees.pdf