以PopCraft為例,闡釋零知識證明在全鏈遊戲中所扮演的角色

全鏈遊戲《PopCraft》面臨玩家操作需頻繁與區塊鏈互動導致延遲的問題,團隊考慮引入零知識證明(ZKP)技術改善體驗,但實際應用中發現多項挑戰:

  • 問題核心:遊戲為全鏈上消除類,每次操作需等待區塊確認(約2秒),遠超Web2遊戲流暢度。
  • ZKP方案構想:遊戲過程不上鏈,但透過逐步生成ZKP確保無作弊,最終僅提交最後一步證明至智能合約驗證。

技術挑戰

  1. 過程驗證複雜性:需確保每一步ZKP與前一步連貫,且能透過智能合約驗證,但現有技術可能無法實現連貫性檢查。
  2. 公開資料矛盾:遊戲資料本需透明,ZKP的隱藏特性反增加數據存取難度,且合約無法直接儲存ZKP驗證後的具體數據。
  3. 道具消耗問題:涉及代幣消耗時,ZKP無法即時驗證玩家餘額,可能導致錯誤延遲發現;若改為直接鏈上交互,又會破壞ZKP的連續性。
  4. 適用性限制:ZKP更適合需隱藏資訊的遊戲(如撲克)或單步驟驗證(如彩票),而《PopCraft》這類多步驟互動遊戲難以直接套用。

結論:ZKP在當前技術下無法完美解決全鏈遊戲的延遲與防作弊平衡問題,團隊建議優先考慮「僅結果上鏈」模式,並持續探索其他技術方案。

總結

撰文:Yooma

以PopCraft為例,闡釋零知識證明在全鏈遊戲中所扮演的角色

圖片來源:https://unsplash.com/photos/people-inside-library-1mwPOXb_pB8

遇到的問題

PopCraft 是一款全鏈上的消除遊戲,每局遊戲時長4 分鐘,玩家在規定時間內消除棋盤上所有元素,會獲得代幣獎勵。

由於全鏈上的特性,玩家在遊戲過程中的每次操作都需要跟區塊鏈互動。以太坊二層的區塊時間通常為2 秒,導致玩家在遊戲中每次操作需要至少等待2 秒才能完成,這遠遠超過同類Web2 遊戲中的等待時間,從而使PopCraft 遊戲體驗欠佳。

以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 適合做兩類事情:

非完全資訊遊戲遊戲的資訊隱藏,例如:黑暗森林、德州撲克、狼人殺、爐石戰記等。

遊戲過程為單步驟的遊戲結果證明,例如:彩票、猜數字、石頭剪刀布、骰子遊戲等。

由於我們在零知識證明技術上的儲備有限,本文內容可能存在事實性錯誤或不合理的工程設想,懇請具備豐富經驗的零知識證明領域專家批評指正。

分享至:

作者:MetaCat

本文為PANews入駐專欄作者的觀點,不代表PANews立場,不承擔法律責任。

文章及觀點也不構成投資意見

圖片來源:MetaCat如有侵權,請聯絡作者刪除。

關注PANews官方賬號,一起穿越牛熊
推薦閱讀
2分鐘前
37分鐘前
1小時前
2小時前
3小時前
3小時前

熱門文章

行業要聞
市場熱點
精選讀物

精選專題

App内阅读