Hợp đồng thông minh được triển khai trên mạng Bitcoin như thế nào?
Người viết: Simon shieh
Trong bài viết trước “Tham quan các kế hoạch mở rộng sinh thái BTC: Đi đâu để tìm chữ khắc”, chúng tôi đã thảo luận về 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 chữ khắc phổ biến, đồng thời đề cập đến khả năng sử dụng chữ khắc đệ quy để triển khai hợp đồng thông minh. 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 có tiêu đề “BitVM: Tính toán mọi thứ trên Bitcoin” vào ngày 9 tháng 10 năm 2023, trong đó ông đề xuất đưa ra kế hoạch đưa các hợp đồng thông minh vào blockchain Bitcoin.

Bài viết đề xuất một ý tưởng rất thú vị là sử dụng taproot để thực hiện hầu hết mọi phép tính tùy ý và sử dụng những phép tính này để 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 hoàn chỉnh Turing nào, sau đó sử dụng nguyên tắc Tổng hợp lạc quan để hiện thực hóa -chuỗi tính toán Xác minh kết quả.
Vậy làm cách nào để đưa một phần logic của Trình 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.
Bên 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 cung cấp một loạt các 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, có thể 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 đã dẫn đến phát hiện rằng ngay cả những phép tính và hàm phức tạp nhất cũng có thể đạt được 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 dưới đây 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 vẫn có thể thực hiện được. . Mạch cổng logic của BitVM bao gồm các cổng NAND.

Có thể đạt được việc 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. Do đó, đường dẫn A đặt số 1 vào ngăn xếp và đường dẫn B đặt số 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à đầ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.
Hoạt động của OP_BOOLAND 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 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, bạn có thể sử dụng OP_EQUALVERIFY và 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, buộc cổng NAND ảo hoạt động thông qua tập lệnh Bitcoin một cách hiệu quả.

Mặc dù ý tưởng sử dụng tập lệnh Taproot để đạt được khả năng khắc mạch là rất hay, 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ũng cần hàng nghìn mạch cổng NAND, vốn bị giới hạn trong Bitcoin. các phép tính phức tạp trong không gian tập lệnh Taproot?
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ổng trước, bạn chỉ có thể tiết lộ hình ảnh gốc của một khóa băm khác. 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 pháp Taproot Tree, cuối cùng tạo thành logic “giống như hợp đồng” mà có thể xử lý một số tác vụ tính toán nhất định.
Thử thách gian lận là cốt lõi của công nghệ OP (Optimism Rollup) (mặc dù nó vẫn chưa được triển khai ~). Ý tưởng là trước khi một loạt giao dịch được gửi theo đợt, người thách thức sẽ đưa ra một thử thách gian lận (cam kết so với đặt cược) trên các giao dịch được coi là sai, hợp đồng Verifier trên mainnet sẽ xác định xem người gửi có làm điều xấu hay không 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ổ tài sản được thế chấp bởi 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 tuân theo 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 ảnh trên thể hiện một loạt các giao dịch được ký trước:
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 một vài vòng điều tra. 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 hợp đồng được giải quyết 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.
Đề xuất này liên quan đến việc xử lý và tạo ra 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 cao.
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, với tư cách là người chứng minh, xác nhận tính chính xác của việc thực hiện nó; và người kia, với tư cách là người xác minh, thách thức cá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:
Do hạn chế về chi phí, một lượng lớn công việc điện toán phải được thực hiện ngoài chuỗi. Điện toán ngoài 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.
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 phải được xem xét.
Bản thân mạch khắc có lỗ hổng logic hay không cũng là một điểm rủi ro về bảo mật, do mạch không thể đọc được nên cần phải trả thêm chi phí kiểm tra hoặc chi phí xác minh chính thức.
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 trở nên 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, đó là phiên bản nâng cấp của Lightning Network - Taproott Assets.