
Bằng chứng không kiến thức có thể cải thiện trải nghiệm người dùng bằng cách giảm số lần tương tác giữa game toàn chuỗi và blockchain?
Tuyển chọn TechFlowTuyển chọn TechFlow

Bằng chứng không kiến thức có thể cải thiện trải nghiệm người dùng bằng cách giảm số lần tương tác giữa game toàn chuỗi và blockchain?
Lĩnh vực trò chơi ZKP phù hợp để làm những việc gì?
Tác giả: Yooma

Hình ảnh: https://unsplash.com/photos/people-inside-library-1mwPOXb_pB8
Vấn đề gặp phải
PopCraft là một trò chơi loại bỏ hoàn toàn trên chuỗi, mỗi ván kéo dài 4 phút. Người chơi sẽ loại bỏ tất cả các phần tử trên bàn cờ trong thời gian quy định để nhận thưởng bằng token.
Vì đặc tính hoạt động hoàn toàn trên chuỗi, mọi thao tác của người chơi trong quá trình chơi đều cần tương tác với blockchain. Thời gian khối trung bình của Layer 2 Ethereum thường là 2 giây, dẫn đến mỗi thao tác trong game cần chờ ít nhất 2 giây mới hoàn tất — điều này vượt xa thời gian chờ trong các trò chơi Web2 cùng loại, khiến trải nghiệm chơi PopCraft kém hấp dẫn.

Giao diện chính của trò chơi PopCraft
Giải pháp đề xuất
Chúng tôi đề xuất sử dụng công nghệ Chứng minh Không kiến thức (Zero-Knowledge Proof - viết tắt là ZKP) trong PopCraft nhằm giảm số lần tương tác giữa người chơi và blockchain trong quá trình chơi.
Cách thực hiện dự kiến là: quá trình chơi không đưa lên chuỗi, nhưng có cơ chế đảm bảo không thể gian lận. Mỗi bước thao tác của người chơi sẽ tạo ra một ZKP, ZKP của bước sau được sinh dựa trên ZKP của bước trước, từ đó hình thành một cấu trúc ZKP tự bao hàm tương tự như blockchain. Khi kết thúc ván chơi, chỉ cần gửi ZKP của bước cuối cùng lên chuỗi để hợp đồng thông minh xác minh kết quả.
Khảo sát và phân tích giải pháp
1. Ngăn chặn gian lận trong quá trình và kết quả chơi: Chỉ tạo ZKP cho kết quả cuối cùng là chưa đủ, vì quá trình chơi cũng có nguy cơ bị gian lận. Do đó, không chỉ cần tạo ZKP cho kết quả mà còn phải xác minh cả quá trình chơi.
2. Thách thức kỹ thuật khi tạo ZKP từng bước: Để ngăn gian lận, cần tạo ZKP cho từng thao tác của người chơi, rồi gửi ZKP cuối cùng lên chuỗi khi kết thúc trò chơi. Trong quá trình này, mỗi ZKP đều phụ thuộc vào ZKP trước đó, nối tiếp nhau cho đến khi kết thúc ván.
Nhưng khó khăn nằm ở:
1> Việc tạo ZKP mới phụ thuộc vào ZKP trước đó, làm cho quá trình xác minh trở nên phức tạp và chưa chắc chắn về khả năng triển khai. Hơn nữa, việc xác minh ZKP được thực hiện qua hợp đồng thông minh (trên chuỗi), vậy làm thế nào để khi tạo ZKP bước sau, có thể xác minh rằng ZKP bước trước đã đúng?
2> Khi dùng hợp đồng thông minh để xác minh từng ZKP, làm sao đảm bảo tính liên tục giữa ZKP hiện tại và ZKP trước đó? Vấn đề này hiện chưa rõ liệu có giải pháp khả thi hay không.
3. Vấn đề dữ liệu trò chơi công khai: Dữ liệu trò chơi PopCraft là công khai, do đó việc dùng ZKP để ẩn dữ liệu là không cần thiết. Giả sử các bước xác minh trên đều khả thi, bước tiếp theo cần xem xét là lưu trữ dữ liệu trò chơi tại hợp đồng. Tuy nhiên, bản chất của ZKP là không thể giải mã ra dữ liệu cụ thể, lúc này cũng không thể tin tưởng hoàn toàn dữ liệu kết quả trò chơi do client gửi lên hợp đồng thông minh, nghĩa là hợp đồng không thể trực tiếp lưu trữ dữ liệu này.
4. Vấn đề tiêu thụ đạo cụ trong PopCraft (tiêu hao Token): Khi quá trình chơi liên quan đến việc dùng đạo cụ để loại bỏ phần tử bị cô lập, về bản chất đây là việc tiêu hao Token, cần chuyển Token tương ứng từ ví người dùng. Việc xử lý bước tạo và xác minh ZKP ở điểm này cũng là một vấn đề.
1> Một giải pháp khả dĩ là: Tiếp tục tạo ZKP theo quy trình trước đó, xác minh số lượng Token tiêu hao rồi gửi đến hợp đồng thông minh. Tuy nhiên, vì hợp đồng thông minh không thể biết dữ liệu cụ thể qua ZKP, nên không thể xác định được số lượng Token cần chuyển.
Hơn nữa, giả sử người chơi chỉ có 3 Token A nhưng lại cố gắng tiêu 4 Token A trong trò chơi, lỗi này chỉ được phát hiện khi kết thúc ván chứ không thể phát hiện tức thì khi người dùng thao tác.
2> Một giải pháp khác có thể là: Khi dùng Token để loại bỏ phần tử bị cô lập, thực hiện tương tác trực tiếp với hợp đồng thông minh để hoàn tất việc loại bỏ, đồng thời cập nhật số dư Token của người chơi. ZKP được tạo ra chỉ cần ghi nhận bằng chứng về thao tác và trạng thái trò chơi tại thời điểm đó.
Tuy nhiên, sau khi chuyển Token thành công, vẫn cần tiếp tục tạo ZKP như các bước trước. Nếu không tạo, sẽ có một bước tương tác với hợp đồng thông minh chen giữa ZKP trước và ZKP sau, gây mâu thuẫn về trạng thái trò chơi trong chuỗi ZKP, từ đó đặt ra câu hỏi chưa có lời giải: liệu ZKP cuối cùng tạo ra khi kết thúc trò chơi có còn hiệu lực hay không?
5. Vấn đề ẩn dữ liệu bằng ZKP: Với những trò chơi như PopCraft, nơi dữ liệu không cần được ẩn, việc dùng ZKP để ẩn dữ liệu là thừa thãi, đồng thời làm tăng độ khó trong việc lấy dữ liệu và sự bất định trong phương án kỹ thuật. PopCraft chỉ cần đảm bảo quá trình và kết quả chơi không thể gian lận, chứ không cần che giấu dữ liệu quá trình chơi.
Kết luận
Trong các trò chơi như PopCraft, dữ liệu trò chơi không cần được ẩn, do đó việc dùng ZKP để ẩn thông tin là không cần thiết. Để cải thiện trải nghiệm chơi bằng cách rút ngắn thời gian phản hồi, có thể cân nhắc không đưa quá trình chơi lên chuỗi, chỉ đưa kết quả cuối cùng lên chuỗi. Mấu chốt nằm ở việc tìm ra một phương pháp đảm bảo rằng từ bước đầu tiên đến bước cuối cùng trong trò chơi đều không thể gian lận, sau đó chỉ cần đưa kết quả đúng lên chuỗi để xác minh.
Nếu dùng ZKP để ẩn thông tin, ngược lại sẽ làm tăng độ phức tạp trong triển khai kỹ thuật. Thứ hai là làm sao đảm bảo không có gian lận trong suốt quá trình chơi. Dùng ZKP có thể đảm bảo từng thao tác đơn lẻ là trung thực, nhưng để giảm số lần tương tác với blockchain, ta lại không thể tạo và gửi ZKP sau mỗi lần thao tác. Vậy làm thế nào để đảm bảo toàn bộ quá trình từ bước đầu đến bước cuối là minh bạch và không thể gian lận? Hiện tại, ZKP dường như không thể giải quyết được vấn đề này.
Theo khảo sát của chúng tôi, ZKP trong lĩnh vực trò chơi phù hợp với hai loại nhiệm vụ:
-
Ẩn thông tin trong các trò chơi chiến lược thông tin không đầy đủ, ví dụ: Dark Forest, Poker Texas Hold'em, Ma Sói, Hearthstone, v.v.
-
Chứng minh kết quả cho các trò chơi một bước duy nhất, ví dụ: xổ số, đoán số, oẳn tù tì, trò chơi xúc xắc, v.v.
Do kinh nghiệm hạn chế về công nghệ Chứng minh Không kiến thức, nội dung bài viết này có thể chứa sai sót thực tế hoặc giả định kỹ thuật chưa hợp lý. Rất mong các chuyên gia giàu kinh nghiệm trong lĩnh vực ZKP đóng góp ý kiến phê bình và chỉnh sửa.
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









