Smart Contract chạy trên mạng lưới Bitcoin

Sự phát triển của các giải pháp mở rộng trên Ethereum gần đây có lẽ đã tác động tới các nghiên cứu trên hệ sinh thái Bitcoin, BitVM được ra đời như một sự kết hợp giữa Optimistic Rollup và State Channel.

BitVM – Smart Contract chạy trên mạng lưới Bitcoin

Mở đầu

Cộng đồng Bitcoin những ngày qua đã được phen dậy sóng sau công bố Whitepaper của BitVM – một hệ thống tự định nghĩa là cho phép tính toán mọi thứ on-chain trên mạng lưới Bitcoin.

Bài viết này nhanh chóng nhận được hơn 3 triệu lượt xem, tác giả của đề xuất là Robin Linus thuộc ZeroSync.

Nếu bạn chưa biết thì mạng lưới Bitcoin không hỗ trợ Smart Contract, đó là điểm khác biệt lớn khi so sánh với các blockchain thế hệ sau này (Ethereum, BNBChain, Solana). Trong suốt nhiều năm qua cộng đồng yêu thích Bitcoin luôn tìm cách mở rộng mạng lưới và đưa smart contract lên nó, nhưng cho đến nay chưa giải pháp nào thực sự hoàn hảo để kế thừa được tính phi tập trung và bảo mật từ mạng lưới gốc.

Sự phát triển của các giải pháp mở rộng trên Ethereum gần đây có lẽ đã tác động tới các nghiên cứu trên hệ sinh thái Bitcoin, BitVM được ra đời như một sự kết hợp giữa Optimistic Rollup và State Channel.

Sau đây chúng ta sẽ cùng đi tìm hiểu về hệ thống tính toán mọi thứ trên chuỗi Bitcoin này.

BitVM là gì?

BitVM là mô hình cho phép tính toán và thực hiện các logic phức tạp trên chuỗi mà không cần thay đổi quy tắc đồng thuận. Hay nói cách khác, BitVM cho phép thực thi smart contract ngay trên chuỗi Bitcoin.

Ở một điểm khác, BitVM áp dụng cơ chế lạc quan tương tự Optimistic Rollups. Những người tham gia tin tưởng lẫn nhau để thực hiện tất cả hoạt động trong contract ngoài chuỗi. Chỉ khi xảy ra tranh chấp và không thể phân xử off-chain chúng mới được đưa lên on-chain để giải quyết.

Nhưng nếu xảy ra tranh chấp thì làm sao xác định được ai đúng ai sai? Và làm sao để quy trình chứng minh đúng sai này diễn ra trên mạng lưới Bitcoin trong khi nó không hỗ trợ smart contract?

Đây mới chính là điểm hay của BitVM so với các giải pháp khác, thứ đã làm dậy sóng cộng đồng những ngày qua. Chúng ta sẽ tìm hiểu ngay sau đây trong phần tiếp theo của bài viết.

Cơ chế hoạt động của BitVM

Hiểu về các cổng logic

Đầu tiên, để hiểu được cơ chế hoạt động của BitVM, bạn cần biết một chút về cổng logic, lớp hạ tầng sâu nhất của máy tính.

Chúng ta biết rằng mọi máy tính đều vận hành dựa trên hai số 0 và 1. Để xác định một logic, các con chip nhận thông tin dạng bit (0 hoặc 1) ở đầu vào, sau đó thực hiện phép tính để cho ra kết quả ở đầu ra là 0 hoặc 1. Kết quả đầu ra mỗi phép tính phụ thuộc vào dữ liệu đầu vào và loại cổng sử dụng.

Một số cổng logic phổ biến như sau:

  • Cổng AND: Nhận vào hai hoặc nhiều tín hiệu đầu vào và chỉ trả về tín hiệu đầu ra 1 nếu tất cả các tín hiệu đầu vào đều là 1.
  • Cổng OR: Nhận vào hai hoặc nhiều tín hiệu đầu vào và chỉ trả về tín hiệu đầu ra 1 nếu ít nhất một trong các tín hiệu đầu vào là 1.
  • Cổng NOT: Chỉ nhận một tín hiệu đầu vào và trả về giá trị ngược lại của tín hiệu đó. Nếu đầu vào là 1, thì đầu ra sẽ là 0 và ngược lại.
  • Cổng XOR: Nhận vào hai tín hiệu đầu vào và chỉ trả về 1 khi chỉ có một trong hai tín hiệu đầu vào là 1.
  • Cổng NAND: Nhận vào hai tín hiệu đầu vào, trả về 0 khi cả hai tín hiệu đầu vào là 1, và ngược lại.
  • Bằng việc sử dụng các cổng logic, chúng ta có thể tạo ra mạch logic lớn để xử lý tất cả chương trình máy tính.

Quay lại với BitVM, cổng logic bạn cần quan tâm là cổng NAND (NOT AND), vì hệ thống BitVM sẽ hoạt động dựa trên cổng này.

Cách hoạt động của cổng NAND

Cổng NAND nhận vào hai tín hiệu A và B (dưới dạng mã nhị phân 0 hoặc 1) sau đó trả về kết quả Q (0 hoặc 1) dựa vào giá trị của A và B được mô tả trong bảng trên. Điều thú vị là bạn có thể xây dựng bất kỳ loại cổng logic nào khác bằng việc kết hợp các cổng NAND, vì thế nó còn có tên gọi khác là “Universal Gate – Cổng tự hoàn chỉnh”.

Tóm lại, các giải thích phía trên chỉ nhắm mục đích giúp bạn hiểu rằng xây dựng được cổng logic NAND sẽ giải quyết được mọi bài toán máy tính.

Cổng NAND trên mạng lưới Bitcoin

Nhiệm vụ bây giờ là cần tạo ra một cổng NAND trên mạng lưới Bitcoin và “ép” trình biên dịch phải thực thi nó.

Mạng lưới Bitcoin sử dụng Bitcoin Scripts bao gồm một loạt các mã thực thi (op_code), các mã này giúp nó hiểu các điều kiện và quy tắc cho việc tính toán đầu ra của giao dịch. Nhưng số lượng op_code rất hạn chế, chỉ đủ để thực hiện các tính toán theo kịch bản đơn giản.

Nhà sáng lập BitVM, Robin Linus đã để ý tới hai mã op_code là OP_BOOLAND và OP_NOT.

  • OP_BOOLAND: tương tự cổng AND, nó nhận vào hai giá trị đầu vào và cho ra kết quả là TRUE (1) nếu cả hai giá trị ban đầu đều là TRUE (1), và FALSE (0) trong tất cả các trường hợp còn lại.
  • OP_NOT: Nó nhận vào một giá trị đầu vào và cho ra kết quả đầu ra là phủ định của đầu vào. Ví dụ nhận vào là TRUE (1) thì cho đầu ra là FALSE (0) và ngược lại.

Khi kết hợp hai mã op_code này lại với nhau, chúng ta đã tạo ra một cổng NAND – thứ có thể giải quyết tất cả mọi bài toán máy tính. Trình biên dịch của mạng lưới Bitcoin buộc phải thực thi khi gặp các mã op_code này.

Taptree – Smart Contract của Bitcoin

Bên trên, chúng ta đã tạo ra một cổng NAND đơn lẻ, việc phải làm tiếp theo là đưa chúng vào một mạch logic để thực thi.

BitVM sử dụng thêm mã thực thi OP_EQUALVERIFY và chuỗi hashlock kết hợp với cổng NAND để tạo ra một cây tapleaf (tatree) hoàn chỉnh, nó bao gồm mọi logic trong chương trình tính toán. Để làm được điều này, BitVM sắp xếp các cổng logic theo dạng chuỗi, đầu ra của mỗi cổng sẽ trở thành đầu vào cho một cổng khác. Các giá trị hashlock được sử dụng để chứng minh tính đúng đắn của mỗi bước và cũng là để người khác tìm ra sự sai phạm nếu có.

Mô hình cây tapleaf – Nguồn: BitVM Whitepaper

Việc tiếp theo cần làm để hệ thống vận hành được là viết các logic thực thi (smart contract) tương thích với mô hình này và đưa lên chuỗi. Công chuyện còn lại là việc của mạng lưới Bitcoin, BitVM chỉ ngồi chờ kết quả cuối cùng được trả ra sau khi mạng Bitcoin lưới thực hiện hằng hà sa số cổng NAND.

Quy trình hoạt động của hệ thống BitVM

Sau khi đã hiểu cách mà hệ thống BitVM vận hành phía dưới lớp hạ tầng. Chúng ta sẽ tiến lên lớp phía trên để xem cách BitVM tương tác với người sử dụng.

Như đã đề cập trong phần đầu, BitVM hoạt động dựa trên sự tin tưởng lẫn nhau giữa những người tham gia. Toàn bộ các công việc nặng nhọc mô tả bên trên sẽ được thực thi off-chain, khi và chỉ khi kết quả tính toán bị thách thức mà không phân xử được dưới off-chain thì mới mang lên on-chain tính toán lại xem ai đúng, ai sai.

Quy trình hoạt động của BitVM như sau:

Lưu ý: Hiện tại BitVM mới hỗ trợ sự tham gia hợp đồng giữa hai người.

Bước 1- Xác lập điều khoản hợp đồng: Hai bên tham gia xác lập mục tiêu và các điều khoản, bao gồm tất cả các trường hợp có thể xảy ra có trong hợp đồng.

Bước 2 – Biên dịch hợp đồng: Biên dịch hợp đồng thành những câu lệnh theo dạng Taptree như mô tả trong phần trước để đảm bảo nó chạy được trên mạng lưới Bitcoin. Cây Taptree này sau đó được lưu trữ một bản trên mạng lưới Bitcoin để sử dụng trong trường hợp cần kiểm chứng on-chain.

Bước 3 – Kích hoạt hợp đồng: Hai bên thỏa thuận và phân vai thành Người chứng minh (Prover) và Người xác minh (Verifier). Sau đó hai bên cùng xác lập một giao dịch đa chữ ký – multisig và nạp tiền cược vào hệ thống để kích hoạt hợp đồng.

Khoản tiền này được sử dụng để trả cho chi phí công việc, chi phí cho các hoạt động thách thức (nếu có, nói dễ hiểu là chi phí kiện tụng) và tiền phạt gian lận (nếu có).

Bước 4 – Hoàn thành công việc: Sau khi công việc hoàn thành và hết thời gian chờ đợi mà không có bất kỳ thách thức nào, Prover nhận được số tiền theo hợp đồng.

Bước 5 – Giải quyết tranh chấp: Nếu Người xác minh (Verifier) nhận thấy có sai phạm trong quá trình làm việc, họ có thể gửi một bằng chứng gian lận – fraud proof lên hệ thống để yêu cầu xác minh. Có một khoảng thời gian xác định để Người xác minh (Prover) minh oan cho mình.

Có 3 trường hợp xảy ra:

  • Nếu bằng chứng gian lận là đúng: Người xác minh (Verifier) sẽ nhận được tiền
  • Nếu bằng chứng gian lận là sai: Người chứng minh (Prover) sẽ nhận được tiền
  • Nếu hết thời gian mà Prover chưa chứng minh oan được: Verifier nhận được tiền

Ngoài ra BitVM cũng có chức năng cho phép: Verifier nhận được tiền ngay lập tức nếu họ có thể thực thi thay Prover bằng cách chứng minh dữ liệu gốc (preimage) cho tất cả các trường hợp.

Các công việc cần thực hiện trong hợp đồng bao gồm cả thách thức và chứng minh sẽ được thực hiện off-chain, chỉ khi hai bên không thể thỏa thuận off-chain mới đưa lên on-chain để giải quyết.

Nhận xét

Trên đây mình đã trình bày toàn bộ quy trình và cơ chế hoạt động của BitVM từ phần hạ tầng tới thực thi. Về mặt lý thuyết nó đúng là có khả năng thực thi tất cả mọi logic như một máy tính và dĩ nhiên là chạy smart contract trên mạng lưới Bitcoin.

Nhưng trên thực tế, hoạt động biên dịch smart contract thành mạch NAND sẽ tạo ra số lượng khổng lồ cổng NAND, chúng ta đang nói tới hàng tỷ cổng NAND cần thực thi. Nó không mang lại hiệu quả về mặt kinh tế, kể cả khi thực thi off-chain.

Trong phần mở đầu, mình cũng có đề cập BitVM như một sự kết hợp giữa Optimistic Rollup và State Channel (cụ thể là Lightning Network) là do cách thức vận hành của nó.

Cho những bạn chưa biết, Lightning Network là mạng lưới mở rộng trên Bitcoin theo phương pháp State Channel. Nó cho phép người dùng mở kênh riêng để thực hiện các giao dịch off-chain sau đó cập nhất kết quả cuối cùng xuống mạng lưới gốc.

Nhưng yếu điểm của State Channel là nó yêu cầu tất cả người tham gia cùng có mặt để xác thực các giao dịch, nếu phát sinh tranh chấp, giao thức off-chain sẽ là người phán xử.

BitVM nâng cấp độ phi tập trung lên một cấp khi chuyển người phán xử từ off-chain thành on-chain. Và vận dụng cơ chế tin tưởng của Optimistic để giúp hợp đồng tự động được thông qua mà không cần sự xác thực của tất cả các bên – miễn giao dịch được tin tưởng là chính xác.

Cơ chế hoạt động của BitVM được tóm tắt lại trong 5 thành phần sau:

  • Bit Value Commitment: Cho phép Prover đặt giá trị bit (0 hoặc 1). Theo thời gian, việc tiết lộ những giá trị này làm cho cam kết trở nên ràng buộc.
  • Logic Gate Commitment: BitVM phân giải các mạch phức tạp bằng cách sử dụng cổng NAND, là cổng logic toàn năng. Các đầu vào và đầu ra phụ thuộc vào cam kết bit.
  • Binary Circuit Commitment: Một mê cung của các cổng NAND được biên dịch logic theo điều khoản hợp đồng, ở đó từng bước được cam kết một vào một tapleaf tạo thành cây Taptree.
  • Challenges & Responses: Cơ chế khởi tạo thách thức – phản hồi là phản hồi là biện pháp bảo vệ hệ thống khỏi gian lận.
  • Inputs & Outputs: Các giá trị đầu vào (input) và giá trị đầu ra (output) trong mạch logic BitVM. Các Input và Output có thể được cam kết bằng cách sử dụng Bit Value Commitments để đảm bảo tính đúng đắn của chúng.

Hạn chế của BitVM

Độ phức tạp và Chi phí

Chúng ta đã biết rằng để hợp đồng thông minh có thể thực thi trên mạng lưới Bitcoin nó cần được biên dịch thành một chuỗi mạch NAND theo dạng Taptree. Sự phức tạp chính là nằm ở đây, theo đề cập của nhà sáng lập BitVM, với một smart contract thông thường đã có thể tạo ra hàng tỷ lá của cây Taptree.

Với độ cồng kềnh như thế, việc biên dịch hợp đồng đã là vấn đề khó khăn rồi chứ chưa nói tới việc chạy hợp đồng. Chi phí tài nguyên để làm các công việc này là cực lớn và không mang lại hiệu quả về mặt kinh tế.

Hợp đồng thông minh dùng một lần

Điểm hạn chế thứ hai là các hợp đồng thông minh này đã được biên dịch này sẽ chỉ có thể sử dụng một lần hoặc nhiều lần với cùng một người, một mục đích. Sở dĩ vậy là vì các nội dung hợp đồng được biên dịch thành dạng Taptree đã bao gồm toàn bộ các điều khoản ràng buộc cụ thể cho hai bên tham gia là Prover và Verifier. Nên khi người khác muốn sử dụng họ cần biên dịch một hợp đồng mới.

Điều này cũng chưa mang lại tính hiệu quả về mặt kinh tế và mở rộng.

Chỉ có thể tham gia bởi hai bên

Hiện tại BitVM mới hỗ trợ cho sự tham gia của hai bên là Prover và Verifier. Đây cũng là một hạn chế khá nghiêm trọng cho tính mở rộng của mạng lưới.

Mặc dù nhà sáng lập Robin Linus đã đưa ra một concept về hợp đồng có sự tham gia của nhiều người, nhưng cho đến hiện tại vẫn chưa có thông tin chính thức nào.

Quan điểm của cộng đồng về BitVM

Adam Back, CEO Blockstream và là Bitcoin OG cho rằng mọi người chưa nên quá hào hứng với sự phát triển này.

Dotta, builder của hệ sinh thái Bitcoin bày tỏ sự thú và lưu ý rằng đã có proof-of-concept trên Github.

Eric Wall, nhà nghiên cứu blockchain thể hiện sự ủng hộ đối với sáng kiến này nhưng anh cũng bày tỏ về các vấn đề mà BitVM phải giải quyết.

Dan Robinson, nhà nghiên cứu của quỹ đầu tư Paradigm chỉ trích đó không phải hệ thống Turning hoàn thiện, ông nói và nói thêm rằng nó sẽ không hoạt động trong thực tế cho bất kỳ mục đích nào mà bạn có thể muốn sử dụng.

Kết luận

Sau Ordinals, BitVM là một trong những sáng kiến thú vị nhất trên Bitcoin trong nhiều năm qua. Mặc dù còn nhiều hạn chế nhưng BitVM mới chỉ được vài ngày tuổi, các nhà phát triển vẫn đang tích cực làm việc để hoàn hiện hệ thống. Hy vọng chúng ta sẽ sớm được thấy nhiều ứng dụng hữu ích phát triển trên nền tảng này.

Kudō

Add Comment