Tác giả: The Mandalorian, Giao thức mạng Manta

Trong khoảng một năm trở lại đây, ngày càng nhiều người nhận thức được sức mạnh của các công cụ mật mã như ZK (bằng chứng không có kiến ​​thức). Chúng tôi cũng đã chứng kiến ​​​​sự gia tăng của nhiều ứng dụng chứng minh không có kiến ​​thức, chẳng hạn như mạng xã hội riêng tư, riêng tư. bỏ phiếu và DAO riêng tư, v.v. Trên thực tế, việc áp dụng bằng chứng không có kiến ​​thức rất rộng và bất kỳ ứng dụng nào yêu cầu quyền riêng tư trên chuỗi đều có thể sử dụng bằng chứng không có kiến ​​thức.

Tại sự kiện ETHGlobal Hackathon trong ETHSanFrancisco 2022 vừa kết thúc, những người bạn của nhóm phát triển mật mã Manta Network đã tạo ra một trò chơi poker dựa trên zkSNARK chỉ trong 36 giờ và ra mắt thành công trên ApeCoin, Bốn đơn vị cạnh tranh do ENS, SKALE và Sự lạc quan đã giành được giải thưởng.

Dark Forest mà nhiều người quen thuộc là một trò chơi chiến lược thời gian thực (thông tin không hoàn hảo) dựa trên zkSNARK. Trò chơi thông tin không đầy đủ là trò chơi mà người chơi không biết tất cả các trạng thái. Ví dụ: trong poker, các lá bài trên tay người chơi là thông tin riêng tư và quá trình rút bài cũng hoàn toàn riêng tư. Điều thú vị về thông tin không đầy đủ là nó có thể dẫn đến hàng loạt chiến lược trò chơi phức tạp.

Trên blockchain công khai, rất khó để xây dựng một trò chơi với thông tin không đầy đủ do tính công khai và minh bạch của dữ liệu trên chuỗi. Tuy nhiên, thông qua công nghệ chứng minh không có kiến ​​thức, người chơi có thể gửi công khai các hành động hợp lệ có thể kiểm chứng trong khi vẫn duy trì quyền riêng tư.

Trong sự kiện hackathon này, Manta Network đã xây dựng một hệ thống chia bài và xáo bài poker trực tuyến dựa trên zkSNARK. Hệ thống này chủ yếu giải quyết hai vấn đề tồn tại trong các trò chơi poker trực tuyến: cách xáo bài một cách công bằng và cách chia bài giữa những người chơi một cách bí mật (nếu không trò chơi có thể không được chơi do vấn đề MEV).

Về bản chất, poker trực tuyến dựa trên bằng chứng không có kiến ​​thức sẽ phân quyền cho người chia bài và người chia bài không thể kiểm soát trò chơi bài bằng cách kiểm soát người chia bài.

Khi chơi Texas Hold'em trên máy khách tập trung Web2, bạn sẽ gặp phải tình huống mà xác suất có một lá bài cực thấp sẽ được chia cho bạn. Khả năng cao là lấy được bài nhưng không lấy được ra.

Mục đích là thao túng trò chơi bằng cách chia bài để đối thủ có thể đánh bại bạn trực tuyến khi xác suất thắng ngoại tuyến là cực kỳ thấp.

Đây là lý do tại sao chúng ta cần poker phi tập trung.

Hệ thống ZKShuffle có ba chức năng:

ZKShuffle.setup: Mỗi người chơi tạo một cặp khóa và đặt các khóa chung tương ứng của mỗi người chơi lại với nhau để tạo khóa chung tổng hợp.

ZKShuffle.shuffle_encrypt: Khi xáo trộn, mỗi người chơi cần gọi lần lượt shuffle_encrypt.

Để đảm bảo rằng việc mã hóa và giải mã có thể được thực hiện theo bất kỳ thứ tự nào, chúng tôi sử dụng sơ đồ mã hóa đồng cấu (sơ đồ mã hóa đồng cấu). Ví dụ: có ba người chơi trong trò chơi này. Sau một vòng mã hóa, mỗi thẻ sẽ có ba khóa mã hóa: Card{Alice, Bob, Charlie}.

ZKShuffle.decrypt: Nếu bạn muốn chia bài cho một người chơi cụ thể, mỗi người chơi cần gọi hàm giải mã. Ví dụ: nếu logic của trò chơi là chia bài cho Charlie thì trình tự đúng sẽ là: Alice lấy thẻ được mã hóa Thẻ {Alice, Bob, Charlie}, sử dụng chìa khóa của mình để giải mã nó, sau đó gửi thẻ đã được giải mã Thẻ {Bob, Charlie} gửi trên chuỗi và gửi bằng chứng không có kiến ​​thức để xác minh tính hợp lệ của việc giải mã.

Sau khi Bob nhận được thẻ được giải mã một phần Card{Bob, Charlie} do Alice gửi trên chuỗi, anh ấy giải mã nó bằng khóa riêng của mình và gửi thẻ Card{Charlie} và khóa để xác minh tính hợp lệ của việc giải mã trên chuỗi. Không có bằng chứng kiến ​​​​thức. Cuối cùng, Charlie nhận được Thẻ{Charlie} và có thể xem các thẻ của mình bằng cách giải mã nó bằng khóa riêng của mình.

Nhóm phát triển mật mã Manta Network đã xây dựng bản demo Texas Hold'em bằng ZKShuffle, một ứng dụng phi tập trung dựa trên Solidity, React và Ether.js. Trong bản demo này, mỗi khi một vòng mới của trò chơi bắt đầu, tất cả người chơi phải thực hiện một vòng sắp đặt để đảm bảo rằng các lá bài trên chuỗi được xáo trộn khá đều nhau. Sau đó, mỗi người chơi cần thực hiện một lượt giải mã và nhận được hai lá bài. Với những thứ này, người chơi có thể chơi Texas Hold'em Poker trên chuỗi khối EVM.

Manta hiện đã triển khai DApp này trên các chuỗi khối Optimism Goerli, Ethereum Goerli và Skale.

Nguyên tắc thực hiện

Toàn bộ dự án bao gồm 3 phần:

  • mạch ZK;

  • Các hợp đồng thông minh để xác minh quá trình giải mã và xáo trộn, bao gồm hợp đồng ZKShuffle và giao diện người dùng DApp của hợp đồng logic trò chơi, Bản demo được xây dựng bằng React và ether.js cũng như thư viện Circomlib JS;

  • Circomlib mật mã JS.

Trong quá trình triển khai Circom, sơ đồ mã hóa ElGamal được áp dụng và các thư viện Circom hiện có như hàm băm poseidon được sử dụng.

Mạch mã hóa có 87308 ràng buộc R1CS và thời gian tạo bằng chứng trong DApp là 4,5 giây. Mạch giải mã có 1522 ràng buộc R1CS và thời gian tạo bằng chứng trong DApp là 0,1 giây. Sử dụng SnarkJ để tạo bằng chứng không có kiến ​​thức trong DApps.

Hợp đồng thông minh bao gồm hai phần: hợp đồng khung ZKShuffle và hợp đồng logic trò chơi Poker. Hợp đồng ZKShuffle chỉ đơn giản gói gọn logic xác minh ZKP và hai mạch. Hợp đồng logic triển khai một máy trạng thái để có được giai đoạn hiện tại của trò chơi và thứ tự lượt của người chơi từ nút RPC.

DApp được triển khai bằng khung React và Ether.js để hiển thị bàn poker và hoạt ảnh hành động của mỗi người chơi. Khi người chơi được yêu cầu thực hiện hành động, người chơi chỉ cần nhấp vào nút trong giao diện người dùng và sử dụng siêu dữ liệu để ký giao dịch.

Xem bản demo

Giới thiệu về mạng Manta

Manta Network cam kết xây dựng một thế giới Web3 tốt hơn thông qua bảo vệ quyền riêng tư. Thiết kế sản phẩm của Manta bắt đầu từ những nguyên tắc đầu tiên và cung cấp khả năng bảo vệ quyền riêng tư từ đầu đến cuối cho người dùng blockchain thông qua các kiến ​​trúc mật mã hàng đầu như zkSNARK. Trong khi đảm bảo quyền riêng tư, Manta kết hợp khả năng tương tác, sự tiện lợi, hiệu suất cao và khả năng kiểm toán, cho phép người dùng thực hiện chuyển khoản và giao dịch riêng tư giữa bất kỳ tài sản parachain nào. Tầm nhìn của Manta là cung cấp các dịch vụ bảo vệ quyền riêng tư thuận tiện hơn cho toàn bộ thế giới blockchain.

Nhóm sáng lập của Manta bao gồm một số cựu chiến binh tiền điện tử, giáo sư và học giả có kinh nghiệm bao gồm Đại học Harvard, MIT và Algorand. Các tổ chức đầu tư của Manta bao gồm Polychain, ParaFi, Binance Labs, Multicoin, CoinFund, Alameda, DeFiance và Hypersphere, v.v. Manta cũng là người nhận tài trợ chính thức của Quỹ Polkadot Web3, thành viên của Chương trình xây dựng nền tảng và là thành viên của Công cụ tăng tốc chuỗi khối của Đại học Berkeley.