
Lược sử các giải pháp mở rộng hệ sinh thái BTC: BitVM, nghệ thuật ăn mòn
Tuyển chọn TechFlowTuyển chọn TechFlow

Lược sử các giải pháp mở rộng hệ sinh thái BTC: BitVM, nghệ thuật ăn mòn
Làm thế nào hợp đồng thông minh được thực hiện trên mạng Bitcoin?
Tác giả: Simon shieh
Tổng quan phần trước
Trong bài viết trước "Các giải pháp mở rộng hệ sinh thái BTC: Số phận của các chỉ thị sẽ ra sao?", chúng ta đã thảo luận về nguyên lý công nghệ và các vấn đề an toàn tiềm tàng của hệ sinh thái chỉ thị nổi bật, đồng thời đề cập đến khả năng sử dụng chỉ thị đệ quy để thực hiện hợp đồng thông minh. Tuy nhiên, do những hạn chế của Luke đối với kịch bản Taproot, việc áp dụng chỉ thị đệ quy dường như gặp phải một số trở ngại. Vậy thì, liệu có cách nào 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ông ty phát triển blockchain ZeroSync, đã công bố một bài nghiên cứu vào ngày 9 tháng 10 năm 2023 mang tên "BitVM: Thực hiện mọi phép tính trên Bitcoin (BitVM: Compute Anything on Bitcoin)", trong đó đưa ra một kế hoạch nhằm tích hợp hợp đồng thông minh vào blockchain Bitcoin.

Bài nghiên cứu này đề xuất một ý tưởng rất thú vị: có thể sử dụng taproot để hoàn tất gần như mọi phép tính tùy ý, và dùng những phép tính này để xác minh các sự kiện xảy ra bên ngoài chuỗi Bitcoin. Mấu chốt nằm ở chỗ đặt toàn bộ logic xuống dưới chuỗi, sau đó khi người khác tuyên bố kết quả sai lệch, hãy thách thức kết quả đó bằng vài bước tính toán đơn giản trên chuỗi.
Nói cách khác, nghĩa là đặt logic của một Verifier (bộ xác minh) vào mạng lưới Bitcoin, tận dụng tính bảo mật cao nhờ cơ chế đồ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 tính toán nào đầy đủ Turing, sau đó sử dụng nguyên lý Optimistic Rollups để xác minh kết quả tính toán bên ngoài chuỗi.
Vậy làm thế nào để triển khai logic Verifier này lên mạng Bitcoin? Để tạo sự liên kết với phần "khắc ghi" ở trên, tôi muốn gọi đây là kỹ thuật "khắc mạch" (etching circuit) trên mạng Bitcoin.
Mạch cổng logic
Bên trong máy tính hoặc điện thoại của bạn, dòng điện truyền đi hàng loạt bit 1 và 0 để thực hiện mọi chức năng máy tính. Điều này được thực hiện qua hàng triệu thành phần vi mô —— các cổng logic (logic gates). Những cổng logic này chính là các yếu tố cơ bản cấu thành chip máy tính.
Mỗi cổng logic nhận một hoặc hai thông tin dạng "bit", mỗi bit chỉ có giá trị là 1 hoặc 0. Sau đó, cổng logic thực hiện một phép toán logic đơn giản theo quy tắc đã định như các thao tác "và (AND)", "hoặc (OR)" hay "phủ định (NOT)". Kết quả từ các phép toán này cũng là một bit, tức là 1 hoặc 0. Sau khi hoàn tất phép toán, kết quả này lại được truyền tới cổng logic tiếp theo.
Hệ thống dựa trên các phép toán logic đơn giản này mang lại một sự gợi mở: ngay cả những tính toán và chức năng phức tạp nhất cũng đều có thể được thực hiện bằng cách kết hợp vô số các phép toán logic đơn giản. Sự phối hợp và kết nối giữa các cổng logic này là nền tảng giúp máy tính hiện đại và các thiết bị điện tử có thể thực hiện các nhiệm vụ phức tạp. Thông qua các thao tác 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, render hình ảnh, v.v.
Hình dưới đây mô tả một loại cổng logic đặc biệt gọi là cổng "và-phủ-định" (NAND gate), có thể dùng để xây dựng mọi loại mạch logic. Dĩ nhiên, nó sẽ không hiệu quả bằng các 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 được cấu tạo hoàn toàn từ các cổng NAND.

Làm thế nào khắc cổng NAND lên Bitcoin
Việc xây dựng cổng NAND (cổng và-phủ-định) trên kịch bản Bitcoin hiện tại có thể thực hiện bằng cách kết hợp khóa băm và hai opcode ít phổ biến hơn: OP_BOOLAND và OP_NOT.
Đầu tiên, khóa băm có thể được dùng để tạo một kịch bản phân nhánh, có thể chi tiêu theo một trong hai cách: hoặc thỏa mãn khóa băm A, hoặc thỏa mãn khóa băm B. Khi đó, nhánh A sẽ đưa 1 vào ngăn xếp, còn nhánh B sẽ đưa 0 vào ngăn xếp.
Bằng cách thỏa mãn một khóa băm cụ thể, bạn có thể "mở khóa" một bit, bit này sẽ làm đầu vào cho cổng NAND mà ta muốn xây dựng. Vì bạn chỉ có thể thỏa mãn yêu cầu của một trong hai nhánh, phương pháp này chỉ cho phép người dùng gửi một bit duy nhất tại một thời điểm.
Nguyên lý của cổng NAND là nhận hai bit đầu vào và đưa ra một bit đầu ra. Nếu cả hai bit đầu vào đều là 1, thì đầu ra là 0; nếu tổ hợp đầu vào là bất kỳ trường hợp nào khác, thì đầu ra là 1. Sử dụng kỹ thuật hai khóa băm, ta có thể gửi cả hai đầu vào và kiểm tra xem đầu ra có đúng hay không – đây chính là vai trò của OP_BOOLAND và OP_NOT.
OP_BOOLAND hoạt động ngược với cổng NAND: nếu cả hai đầu vào đều là 1, thì đầu ra là 1; bất kỳ tổ hợp đầu vào nào khác đều cho ra 0. OP_NOT trả về giá trị ngược lại với đầu vào. Do đó, bằng cách kết hợp hai opcode này, ta có thể lấy hai đầu vào trong ngăn xếp kịch bản và thực hiện thao tác phủ định của phép AND. Cuối cùng, có thể dùng OP_EQUALVERIFY cùng kỹ thuật khóa băm để xác minh đầu ra đã tuyên bố. Nếu kết quả thực tế của phép NAND trong ngăn xếp không khớp với đầu ra mà người dùng tuyên bố, kịch bản sẽ không vượt qua được xác minh.
Như vậy, ta đã "khắc" thành công mạch cổng NAND vào kịch bản Bitcoin, thực chất là dùng kịch bản Bitcoin để buộc thực hiện thao tác cổng NAND ảo.

Làm thế nào để khắc mạch quy mô lớn
Dù ý tưởng sử dụng kịch bản Taproot để khắc mạch rất thú vị, nhưng nói gì đến các mạch siêu lớn như trên PC, ngay cả việc thực hiện một nhóm tính toán bất kỳ cũng cần hàng ngàn cổng NAND. Trong giới hạn dung lượng kịch bản Taproot trên Bitcoin, làm thế nào để bao quát các phép tính phức tạp?
BitVM đề xuất phương pháp Cây Taproot (Taproot Tree). Để thực hiện quá trình tính toán phức tạp trong kịch bản Bitcoin, người ta có thể nối tiếp các cổng logic để xây dựng mạch tính toán. Trong phương án này, khóa băm được dùng để liên kết các cổng riêng lẻ, từ đó đạt được logic thực thi tuần tự. Cụ thể, nếu kịch bản của một cổng tạo ra các kết quả đầu ra khác nhau C1 hoặc C2 tùy theo các tiền ảnh băm (giá trị rõ của băm) đầu vào 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ể tạo ra cơ chế trừng phạt: nếu cố tình báo cáo sai kết quả của cổng trước đó, người dùng chỉ có thể tiết lộ tiền ảnh của khóa băm khác. Cơ chế này có thể được dùng trong tính toán tương tác giữa hai người dùng, khi họ trước tiên đồng ý tham gia một nhiệm vụ tính toán cụ thể, sau đó chia nhỏ quá trình tính toán thành mạch chỉ gồm các cổng NAND. Họ cần chọn khóa băm phù hợp cho từng cổng trong mạch và mã hóa chúng vào cây kịch bản của UTXO bị khóa.
Sau đó, bằng cách sử dụng nhiều địa chỉ để tạo thành ma trận địa chỉ Taproot, rồi dùng phương pháp Cây Taproot để "khắc" mạch logic vào chuỗi các kịch bản Taproot của các giao dịch UTXO liên kết dạng cây, cuối cùng hình thành một mạch logic "kiểu hợp đồng" có thể xử lý một nhiệm vụ tính toán nhất định.
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) (dù đến nay vẫn chưa thật sự được triển khai~), tư tưởng là trước khi một batch giao dịch được gửi hàng loạt, bên thách thức có thể khởi động thử thách gian lận (đặt cược đảm bảo) đối với các giao dịch bị nghi ngờ sai. Hợp đồng Verifier trên mạng chính sẽ dựa vào sự thay đổi gốc trạng thái sau khi thực thi để xác định người gửi có hành vi xấu hay không, sau đó phân bổ tài sản ký quỹ của hai bên.
Trong BitVM, cây kịch bản được thiết kế gồm hai mạch, ngoài việc cho phép người chứng minh gửi vào một mạch, còn phải cho phép bên thách thức có thể thách thức 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 đã ký trước này được nối với nhau theo chuỗi "thử thách -> phản hồi -> thử thách -> ...". Nếu một bên ngừng phản hồi trong một khoảng thời gian, bên kia sẽ thắng thử thách và thu hồi khoản ký quỹ của cả hai bên.

Hình trên minh họa một chuỗi giao dịch đã ký trước:
-
Thử thách: Vicky (người thách thức / người xác minh) tiết lộ một tiền ảnh trong đường dẫn kịch bản (những tiền ảnh này chỉ người thách thức biết), dùng để thách thức tuyên bố;
-
Phản hồi: Paul (người chứng minh) thực thi cổng logic tương ứng, chuyển tiền về lại kịch bản ban đầu;
Sau vài vòng hỏi đáp, có thể nhanh chóng bác bỏ bất kỳ tuyên bố sai lệch nào. Nếu người chứng minh ngừng hợp tác với người thách thức bên ngoài chuỗi, người thách thức sẽ buộc người chứng minh phải hợp tác trên chuỗi: cứ mỗi lần người thách thức mở khóa một khóa băm, khiến mỗi nút lá Taproot tương ứng với cổng NAND trong UTXO của người chứng minh chỉ có thể được chi tiêu khi người chứng minh biết một tiền ảnh mà người thách thức đang nắm giữ. Người chứng minh có thể chứng minh rằng một nút lá Taproot nhất định đã thực thi đúng bằng cách tiết lộ đầu vào và đầu ra của mình. Tiền đề là người thách thức mở khóa bằng cách tiết lộ tiền ảnh tương ứng với băm của Tapleaf, 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 chứng minh sau một số hữu hạn vòng (O(logn)) thử thách và phản hồi.
Toàn bộ quá trình này liên quan đến nhiều vòng tương tác, nhằm đảm bảo hợp đồng có thể thanh toán chính xác. Người thách thức có thể liên tục thách thức người chứng minh cho đến khi người chứng minh xác minh thành công kết quả đúng của từng cổng, hoặc nếu người chứng minh không thể phản hồi thử thách, người thách thức có thể rút tiền sau một khoảng thời gian nhất định. Trong trường hợp lý tưởng, mọi thao tác đều diễn ra bên ngoài chuỗi, hai bên hợp tác hoàn tất thanh toán; nhưng nếu sự hợp tác đổ vỡ, cả hai bên đều có thể sử dụng trò chơi thử thách trên chuỗi để đảm bảo hợp đồng được giải quyết chính xác.
Khó khăn triển khai và các vấn đề an ninh
Đề xuất này liên quan đến khối lượng dữ liệu xử lý và tạo ra cực kỳ lớn. Cây kịch bản 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 đã ký trước liên quan có thể mất ít nhất vài giờ để đảm bảo thanh toán chính xác. Mỗi điều kiện mở khóa được thiết lập sẵn cho địa chỉ Taproot đều phải trả phí thợ mỏ, do đó số lượng tổ hợp địa chỉ càng nhiều thì chi phí càng lớn.
Một hạn chế lớn của phương án này là nó chỉ phù hợp với tương tác giữa hai bên tham gia: một bên làm người chứng minh, chứng minh độ chính xác việc thực thi của mình; bên kia làm người xác minh, thách thức tuyên bố của bên trước. Mặc dù trong tương lai nghiên cứu có thể tìm ra cách để thêm nhiều bên tham gia hơn, nhưng hiện tại vẫn chưa có giải pháp rõ ràng.
Trong kịch bản thanh toán hợp tác, tất cả các bên tham gia đều phải trực tuyến, điều này gây ra một số hạn chế nhất định đối với tính tiện dụng và tính thực tiễn của giao thức.
Về mặt an ninh, tồn tại một số rủi ro chính sau đây:
1. Do giới hạn chi phí, chắc chắn phần lớn công việc tính toán phải được thực hiện bên ngoài chuỗi, và tính toán bên ngoài chuỗi tiềm ẩn các rủi ro an ninh phổ biến của dịch vụ tập trung.
2. Việc lưu trữ lượng lớn dữ liệu bên ngoài chuỗi cũng đặt ra các điểm rủi ro về tính sẵn có dữ liệu và an toàn dữ liệu.
3. Việc mạch đã "khắc" có tồn tại lỗ hổng logic hay không cũng là một điểm rủi ro an ninh. Do mạch khó đọc, chi phí kiểm toán hoặc chi phí xác minh hình thức sẽ phải tăng lên đáng kể.
Metatrust từng hỗ trợ Uniswap thực hiện xác minh hình thức toàn diện, và có kinh nghiệm phong phú trong kiểm toán mạch ZK và xác minh hình thức, có thể cung cấp sự bảo đảm cho việc triển khai an toàn hệ sinh thái BitVM.
Hai phương án vừa nêu đều là các giải pháp công nghệ mới nổi lên trong năm nay. Ở bài tiếp theo, chúng ta sẽ giới thiệu một phương án lâu đời hơn, mang tính "chính thống" hơn: phiên bản nâng cấp của Mạng lưới Sét —— Taproott Assets.
Chào mừng tham gia cộng đồng chính thức TechFlow
Nhóm Telegram:https://t.me/TechFlowDaily
Tài khoản Twitter chính thức:https://x.com/TechFlowPost
Tài khoản Twitter tiếng Anh:https://x.com/BlockFlow_News












