Tác giả: Simon shieh, Nguồn: MetaTrust Labs
Đánh giá lời nói đầu
Bài viết trước trong "Chuyến tham quan kế hoạch mở rộng sinh thái Bitcoin (1): Đi đâu với dòng chữ", chúng tôi đã thảo luận Các nguyên tắc kỹ thuật và các vấn đề bảo mật có thể có của hệ sinh thái dòng chữ phổ biến đã được thảo luận và khả năng sử dụng dòng chữ đệ quy để thực hiện hợp đồng thông minh đã được đề cập. Tuy nhiên, do những hạn chế của Luke đối với tập lệnh Taproot, việc ghi đệ quy dường như gặp một số trở ngại. Vậy có những khả năng khác để triển khai hợp đồng thông minh trên mạng Bitcoin không?
Robin Linus, đồng sáng lập của nhà phát triển blockchain ZeroSync, đã xuất bản một bài báo vào ngày 9 tháng 10 năm 2023 với tiêu đề "BitVM: Tính toán mọi thứ trên Bitcoin"), trong đó đề xuất kế hoạch đưa các hợp đồng thông minh vào Bitcoin chuỗi khối.

Bài viết này đưa ra một ý tưởng rất thú vị, có thể được sử dụng để hoàn thành hầu hết các dự án mọi thứ với taproot, các phép tính tùy ý và sử dụng những phép tính đó để xác minh những gì đang xảy ra ngoài chuỗi Bitcoin. Bí quyết là giữ tất cả logic ở ngoài chuỗi và thách thức các kết quả không trung thực trên chuỗi bằng một vài bước tính toán khi những người khác khẳng định chúng.
Nói cách khác, đó là đưa logic của Trình xác minh vào mạng Bitcoin, sử dụng tính bảo mật đồng thuận mạnh mẽ của Bitcoin để trở thành bên thứ ba đáng tin cậy cho bất kỳ lớp điện toán Turing-complete nào, sau đó sử dụng Optimistic Nguyên tắc tổng hợp để đạt được xác minh kết quả tính toán ngoài chuỗi.
Vậy làm cách nào để đưa một phần logic của Người xác minh vào mạng Bitcoin? Để lặp lại việc “khắc” ở phần trước, tôi xin gọi nó là công nghệ “khắc” mạch trên mạng Bitcoin.
Mạch cổng logic
Trong máy tính hoặc điện thoại di động của bạn, điện thực hiện tất cả các chức năng của máy tính bằng cách truyền một loạt số 1 và số 0. Điều này được thực hiện thông qua hàng triệu thành phần nhỏ gọi là cổng logic. Các cổng logic này là các khối xây dựng cơ bản của chip máy tính.
Mỗi cổng logic nhận một hoặc hai "bit" thông tin và mỗi bit là 1 hoặc 0. Sau đó, cổng logic thực hiện một thao tác logic đơn giản theo các quy tắc đã đặt, chẳng hạn như các thao tác "VÀ", "HOẶC" hoặc "KHÔNG". Kết quả của các thao tác này cũng là một bit, là 1 hoặc 0. Sau khi hoàn thành thao tác, kết quả được chuyển tới cổng logic tiếp theo.
Hệ thống này dựa trên các phép toán logic đơn giản đã truyền cảm hứng: ngay cả những phép tính và hàm phức tạp nhất cũng có thể được thực hiện bằng cách kết hợp một số lượng lớn các phép toán logic đơn giản. Sự kết hợp và cộng tác của các cổng logic này là cơ sở để máy tính và thiết bị điện tử hiện đại có thể thực hiện các tác vụ phức tạp. Thông qua các phép toán logic cơ bản này, máy tính có thể xử lý các phép tính số học phức tạp, lưu trữ dữ liệu, hiển thị hình ảnh và các chức năng khác.
Hình bên dưới là một cổng logic rất đặc biệt gọi là "Cổng NAND". Nó có thể xây dựng bất kỳ loại mạch cổng logic nào. Tất nhiên, nó không thể hiệu quả bằng các loại cổng chuyên dụng khác. , nhưng nó vẫn có thể được thực hiện. Mạch cổng logic của BitVM bao gồm các cổng NAND.

Cách khắc cổng NAND trên Bitcoin< / h2>
Có thể xây dựng cổng NAND trên các tập lệnh Bitcoin hiện có bằng cách kết hợp khóa băm với hai mã opcode có thể ít được biết đến: OP_BOOLAND và OP_NOT.
Đầu tiên, khóa băm có thể được sử dụng để tạo tập lệnh nhánh có thể được sử dụng theo một trong hai cách: đáp ứng khóa băm hoặc đáp ứng khóa băm B. Bằng cách này, đường dẫn A xuất 1 vào ngăn xếp, trong khi đường dẫn B xuất 0 vào ngăn xếp.
Bằng cách đáp ứng một khóa băm cụ thể, bạn có thể "mở khóa" một bit đóng vai trò là một trong những đầu vào của cổng NAND mà chúng ta sắp xây dựng. Vì bạn chỉ có thể đáp ứng các yêu cầu của một trong các đường dẫn nên phương pháp này chỉ cho phép người dùng gửi từng bit một.
Logic của cổng NAND là nhận hai bit làm một bit đầu vào và một bit đầu ra. Nếu cả hai bit đầu vào là 1 thì đầu ra là 0; nếu đầu vào là các kết hợp khác thì đầu ra là 1. Bằng cách sử dụng hai thủ thuật khóa băm, bạn có thể gửi hai thông tin đầu vào này và xác minh rằng đầu ra là chính xác, đó là mục đích của OP_BOOLAND và OP_NOT.
OP_BOOLAND hoạt động ngược lại với cổng NAND: nếu cả hai đầu vào là 1 thì đầu ra là 1; bất kỳ sự kết hợp đầu vào nào khác đều tạo ra số 0. OP_NOT xuất ra giá trị ngược lại với đầu vào. Vì vậy, bằng cách kết hợp hai mã opcode này, bạn có thể lấy hai đầu vào và thực hiện phép tính tổng nghịch đảo trong ngăn xếp tập lệnh. Cuối cùng, OP_EQUALVERIFY có thể được sử dụng cùng với thủ thuật khóa băm để xác minh đầu ra của xác nhận. Nếu kết quả hoạt động NAND thực tế trên ngăn xếp không nhất quán với kết quả đầu ra được người dùng xác nhận thì tập lệnh sẽ không xác thực được.
Bằng cách này, mạch cổng NAND được "khắc" vào tập lệnh Bitcoin, điều này thực sự buộc cổng NAND ảo hoạt động thông qua tập lệnh Bitcoin.

Cách khắc các mạch quy mô lớn
< /h2>
Mặc dù ý tưởng sử dụng tập lệnh Taproot để khắc mạch là rất hay, nhưng chưa nói đến các mạch có quy mô cực lớn như PC, thậm chí để thực hiện bất kỳ bộ tính toán nào, cần có hàng nghìn mạch cổng NAND , vậy làm cách nào để thực hiện các phép tính phức tạp trong không gian tập lệnh Taproot hạn chế của Bitcoin?
BitVM đã đề xuất phương pháp cây tập lệnh Taproot (Taproot Tree). Để thực hiện các quy trình tính toán phức tạp trong tập lệnh Bitcoin, người ta có thể xây dựng các mạch tính toán bằng cách kết nối các cổng logic nối tiếp. Trong sơ đồ này, khóa băm được sử dụng để liên kết các cửa riêng lẻ nhằm đạt được việc thực hiện tuần tự các hoạt động logic. Cụ thể, nếu tập lệnh của một cổng tạo ra kết quả đầu ra khác C1 hoặc C2 dựa trên đầu vào hình ảnh băm (giá trị văn bản băm) khác nhau, thì cổng tiếp theo sẽ sử dụng giá trị khóa băm phù hợp làm đầu vào.
Phương pháp này có thể thực hiện cơ chế phạt, tức là nếu bạn cố nói dối về kết quả của cửa trước, bạn chỉ có thể tiết lộ hình ảnh gốc của khóa băm còn lại. Cơ chế này có thể được sử dụng để tính toán tương tác giữa hai người dùng, trong đó họ đồng ý trước để tham gia vào một tác vụ tính toán cụ thể, sau đó phân tách quá trình tính toán thành các mạch chỉ bao gồm các cổng NAND. Họ cần chọn khóa băm thích hợp cho mỗi cổng trong mạch và mã hóa nó vào cây tập lệnh để khóa UTXO.
Sau đó, nhiều địa chỉ được sử dụng để tạo thành ma trận địa chỉ Taproot, sau đó mạch logic được khắc vào tập lệnh Taproot của một loạt giao dịch UTXO được kết nối trong cấu trúc cây thông qua phương thức Taproot Tree và cuối cùng là một Tập lệnh taperoot có khả năng xử lý các phép tính nhất định được hình thành Mạch logic “giống như hợp đồng” cho các tác vụ.
Thử thách gian lận
Thử thách gian lận là cốt lõi của công nghệ OP (Optimism Rollup) (mặc dù cho đến nay nó vẫn chưa được triển khai~) và ý tưởng là triển khai nó theo đợt Trước khi các giao dịch được gửi theo đợt, người thách thức bắt đầu một thử thách gian lận (cam kết so với đặt cược) đối với giao dịch được cho là sai. Hợp đồng Người xác minh trên mạng chính sẽ đánh giá xem người gửi có thực hiện điều ác dựa trên những thay đổi trong gốc trạng thái sau khi thực hiện, sau đó phân bổ số tiền cam kết của cả hai bên.
Trong bitVM, cây tập lệnh được thiết kế thành hai mạch. Ngoài việc cho phép người chứng minh phục tùng một mạch, người thách thức còn cần có khả năng phản đối tuyên bố của người chứng minh. Điều này có thể đạt được bằng cách ký trước một loạt giao dịch. Các giao dịch được ký trước này được kết nối thông qua "Thử thách ->Phản hồi ->Thử thách ->...". Nếu một bên dừng lại trong một khoảng thời gian, bên kia sẽ thắng thử thách và lấy lại tiền đặt cọc của cả hai bên.

Hình trên thể hiện một loạt các giao dịch được ký trước:
< p>^ Thử thách: Vicky (người thách đấu/người xác minh) đưa ra một tiền đề trong đường dẫn kịch bản (những tiền ảnh này chỉ có người thách đấu mới biết), được sử dụng như một thách thức đối với bằng chứng;
© Phản hồi : Paul (người chứng minh) thực thi cổng logic tương ứng và gửi tiền trở lại tập lệnh ban đầu;
Bất kỳ tuyên bố không nhất quán nào cũng có thể nhanh chóng bị bác bỏ sau vài vòng truy vấn. Nếu người thử thách ngừng hợp tác với người thách thức ngoài chuỗi, người thách thức sẽ buộc người thử thách hợp tác trên chuỗi: mỗi khi người thách thức mở khóa băm, nút lá Taproot tương ứng với mỗi cổng NAND trong UTXO của người thử thách sẽ chỉ có Nó chỉ có thể được sử dụng nếu người chứng minh biết tiền đề của người thách thức. Người chứng minh có thể chứng minh rằng nút lá Taproot nhất định thực thi chính xác bằng cách tiết lộ đầu vào và đầu ra của nó. Tiền đề là người thách thức mở khóa hình ảnh gốc của hàm băm tương ứng với Tapleaf bằng cách tiết lộ nó. Thông qua tìm kiếm nhị phân, người thách thức có thể khóa lỗi của người thử thách sau một vòng giới hạn (O(logn)) của các thử thách và phản hồi.
Toàn bộ quá trình bao gồm nhiều vòng tương tác để đảm bảo rằng hợp đồng có thể được giải quyết một cách chính xác. Người thách đấu có thể tiếp tục thách thức người chứng minh cho đến khi người chứng minh xác nhận kết quả chính xác cho mỗi cổng hoặc người thách đấu có thể rút tiền sau một thời gian nhất định trong trường hợp người thử thách không phản hồi lại thử thách. Trong một thế giới lý tưởng, tất cả các hoạt động diễn ra ngoài chuỗi và cả hai bên hợp tác để hoàn tất việc giải quyết, nhưng nếu sự hợp tác bị phá vỡ, cả hai bên có thể đảm bảo rằng hợp đồng được giải quyết chính xác thông qua trò chơi thử thách trên chuỗi.
Rào cản rơi xuống và các vấn đề an toàn
Đề xuất này liên quan đến việc xử lý và tạo ra một lượng dữ liệu cực lớn. Cây tập lệnh Taproot được sử dụng có thể chứa hàng tỷ nút lá và thời gian xử lý các giao dịch được ký trước liên quan có thể mất ít nhất vài giờ để đảm bảo giải quyết chính xác. Việc thực hiện các điều kiện mở khóa đặt trước cho mỗi địa chỉ Taproot yêu cầu một khoản phí khai thác, do đó, càng kết hợp nhiều địa chỉ thì chi phí càng lớn.
Hạn chế chính của sơ đồ này là nó chỉ hoạt động đối với sự tương tác giữa hai người tham gia: một người đóng vai trò là người chứng minh, chứng minh tính chính xác của việc thực hiện nó; người kia đóng vai trò là người xác minh, thách thức tuyên bố của người trước. Mặc dù các nghiên cứu trong tương lai có thể tìm cách thu hút nhiều người tham gia hơn nhưng tại thời điểm này dường như chưa có giải pháp rõ ràng.
Trong kịch bản giải quyết hợp tác, tất cả những người tham gia phải trực tuyến, điều này đặt ra những hạn chế nhất định về tính thực tế và tiện lợi của giao thức.
Về mặt bảo mật, chủ yếu có các rủi ro bảo mật sau:
1. Do hạn chế về chi phí, một lượng lớn công việc tính toán phải được thực hiện ngoài chuỗi và ngoài chuỗi tính toán chuỗi Có một số rủi ro bảo mật phổ biến của các dịch vụ tập trung.
2. Một lượng lớn dữ liệu được lưu trữ ngoài chuỗi, tính khả dụng và bảo mật dữ liệu cũng là những điểm rủi ro cần được xem xét.
3. Liệu có lỗ hổng logic nào trong Bản thân mạch khắc cũng là một mối quan tâm.Đối với các rủi ro bảo mật, do mạch không thể đọc được nên cần nhiều chi phí kiểm tra hoặc chi phí xác minh chính thức hơn.
Metatrust đã hỗ trợ Uniswap thực hiện công việc xác minh chính thức toàn diện và có kinh nghiệm rất phong phú về kiểm tra mạch ZK và xác minh chính thức, có thể đảm bảo cho việc triển khai an toàn hệ sinh thái BitVM.
Các giải pháp ở hai bài viết trước là những giải pháp kỹ thuật mới phổ biến trong năm nay, ở bài viết tiếp theo chúng tôi sẽ giới thiệu một giải pháp cũ hơn và “chính thống” hơn, một phiên bản nâng cấp của Lightning Network— —< strong>Tài sản Taproott.