遇到的問題
PopCraft 是一款全鏈上的消除游戲,每局游戲時長 4 分鐘,玩家在規定時間內消除棋盤上所有元素,會獲得代幣獎勵。
由于全鏈上的特性,玩家在游戲過程中的每次操作都需要跟區塊鏈交互。以太坊二層的區塊時間通常為 2 秒,導致玩家在游戲中每次操作需要至少等待 2 秒才能完成,這遠遠超過同類 Web2 游戲中的等待時間,從而使 PopCraft 游戲體驗欠佳。


PopCraft 游戲主界面
設想的方案
我們設想在 PopCraft 中利用零知識證明技術(以下簡稱 ZKP),減少玩家在游戲過程中與區塊鏈的交互次數。
預期的方式是:游戲過程不上鏈,但有機制可以確保無作弊風險。玩家在游戲中每一步操作都會生成 ZKP,后一步操作的 ZKP?基于前一步的 ZKP 來生成,從而形成一種類似區塊鏈結構的自包含 ZKP,游戲結束時將最后一步操作的 ZKP 發送到鏈上,交由智能合約驗證其結果。
方案調研與推導
1. 游戲過程與結果的防作弊:僅對游戲結果生成 ZKP 是不夠的,因為游戲的過程同樣存在作弊可能。因此,既要對游戲結果生成 ZKP,也要對游戲過程進行驗證。
2. 逐步生成 ZKP 的技術挑戰:為了防作弊,需要對玩家在游戲中的每一個操作都生成 ZKP,在游戲結束時將最后一個 ZKP 上鏈進行驗證。這個過程中,每一步的 ZKP 都會依賴于前一步的 ZKP,直到游戲結束為止。
但難點是:
1> 新的 ZKP 生成需要依賴前一步的 ZKP,這使得驗證過程復雜且不確定能否可實現。此外, ZKP 驗證通過智能合約(鏈上)來做,后一步生成 ZKP 時該如何去驗證前一步的 ZKP 是正確的。
2> 在通過智能合約驗證每一步的 ZKP 是否正確時,如何確保每個 ZKP 與前一個 ZKP 的連貫性,該問題不確定是否有方案可以解決。
3. 公開游戲數據的問題:PopCraft 的游戲數據是公開的,因此通過 ZKP 做信息隱藏沒必要。如果上述驗證步驟均可實現的話,下一步需要考慮在合約端保存游戲數據。然而問題在于 ZKP 的性質無法解出具體的游戲數據,此時也不可直接相信客戶端傳給智能合約的游戲結果數據,這意味著智能合約無法直接存儲這些數據。
4. PopCraft 中消耗游戲道具(消耗 Token)的問題:當游戲過程涉及到通過游戲道具完成孤立元素的消除時,本質上對應的是 Token 消耗,需要將用戶錢包中對應的 Token 轉移,如何處理這一步 ZKP 生成和驗證也是一個問題。
1> 一個可能的解決方案是:這一步繼續按照之前的流程生成 ZKP,驗證消耗的 Token 數量并最終發送給智能合約。然而,由于智能合約無法通過 ZKP 得到具體游戲數據,因此無法判斷應該轉移的 Token 數量。
此外,假設玩家擁有 3 個 Token A,卻嘗試在游戲中消耗 4 個 Token A,這種錯誤會在游戲結束時才被發現,而不是在用戶操作實時被發現。
2> 另一個可能的解法是:在使用 Token 完成孤立元素的消除時,直接與智能合約交互完成消除,然后更新玩家的 Token 余額。生成的 ZKP 只負責保存此時游戲操作和狀態的證明。
那么此時在轉移 Token 成功之后,還需要像前面操作一樣繼續生成 ZKP,如果不生成,那么在轉移 Token 操作的上一步生成的 ZKP 與下一次生成的 ZKP 中間,多了一次與智能合約交互的步驟,那么 ZKP 中的游戲狀態就會沖突,這樣游戲結束時生成的 ZKP 是否有效也是一個懸而未決的問題。
5. ZKP 的數據隱藏問題:對于 PopCraft 這種不需要隱藏游戲數據的場景來說,通過 ZKP 做數據隱藏是多余的,且增加了游戲數據獲取的難度以及工程實現方案的不確定性。PopCraft 只需確保游戲過程和結果無作弊風險即可,并不需要隱藏游戲過程數據。
結論
在 PopCraft 這樣的游戲中,游戲數據不需要隱藏,因此通過 ZKP 做信息隱藏沒有必要。為了通過縮短響應時間來提升游戲體驗,可以考慮游戲過程不上鏈,僅將最終結果上鏈。關鍵在于找到一種方法,可以確保從玩游戲的第一步到最后一步都沒有作弊可能,最后將正確的結果上鏈驗證即可。
如果通過 ZKP 進行信息隱藏,反倒是增加了工程實現難度。其次是如何確保游戲過程無作弊風險,使用 ZKP 能確保單個游戲操作無作弊風險,但為了減少跟區塊鏈的交互次數,又不能生成一次 ZKP 就提交一次。所以從游戲開始的第一步操作到游戲結束整個過程,又該如何保證無作弊風險,目前看來 ZKP 無法解決該問題。
從我們的調研來看,游戲領域 ZKP 適合做兩類事情:
- 非完全信息博弈類游戲的信息隱藏,比如:黑暗森林、德州撲克、狼人殺、爐石傳說等。
- 游戲過程為單步的游戲結果證明,比如:彩票、猜數字、石頭剪刀布、骰子游戲等。
由于我們在零知識證明技術上的儲備有限,本文內容可能存在事實性錯誤或不合理的工程設想,懇請具備豐富經驗的零知識證明領域專家批評指正。