CaptainZ

CaptainZ

Prompt Engineer. Focusing on AI, ZKP and Onchain Game. 每周一篇严肃/深度长文。专注于AI,零知识证明,全链游戏,还有心理学。
twitter

如何使用Zypher開發可驗證化鏈上遊戲?

自從 Starknet 生態的 Dojo 提出了可驗證化鏈上遊戲(provable onchain game)的概念之後,有不少團隊開始在這個領域進行探索,比如利用 NFT 狀態壓縮的 paima,利用默克爾樹和狀態銘文的 redux,等等。Zypher Network (@Zypher_Network)同樣基於零知識證明技術發布了一系列開發者套件來幫助製作可驗證化鏈上遊戲。

什麼是可驗證化鏈上遊戲#

我們現在已經知道,遊戲行業和區塊鏈技術的結合,要麼走資產上鏈的 GameFi 模式,要麼走狀態上鏈的鏈上遊戲模式。對於鏈上遊戲的普遍定義是這樣的:所有的遊戲邏輯、狀態(資產及其他)都在鏈上,通過智能合約來實現。

作為智能合約平台的以太坊,天然的是一個分佈式的狀態機,可以做稍微簡單一些的鏈上計算和狀態驗證。於是大家試著把遊戲邏輯寫入智能合約,如此一來,遊戲成為一種無需伺服器後端的去中心化遊戲,並帶來了更高程度的遊戲規則方面的可組合性。但問題也隨之而來:以太坊主網的計算能力太弱,使用成本也非常高,即便考慮使用高性能的 layer2 鏈或者其他公鏈,也無法滿足鏈上遊戲的需求。

受到 layer2 rollup 的啟發,既然更大規模的轉帳操作都可以進行鏈下計算鏈上驗證,那麼為什麼不把遊戲邏輯的執行也同樣處理呢?於是可驗證化鏈上遊戲的技術路線由此誕生。雖然說遊戲邏輯由鏈下計算,但每一步操作都可以在鏈上進行驗證,同樣保證了遊戲的去中心化和去信任化,這就是 “可驗證化” 一詞的來源,甚至我們可以簡單的來類比:layer2 rollup 中的 TX 是普通的轉帳交易,而可驗證化鏈上遊戲中的 TX 是遊戲的上鏈交易。

根據鏈上驗證方式的不同,rollup 分為 OP-rollup 和 ZK-rollup。同樣的,使用零知識證明技術的可驗證化鏈上遊戲,無論在狀態驗證的最終性還是性能方面都有著較為突出的優勢,這也是為什麼 Dojo 和 Zypher Network 選擇 ZKP 來開發可驗證化鏈上遊戲的原因。

Zypher Network 開發者套件#

Zypher Network 的開發者套件總共有 3 個部分,分別是 AW Engine, Secret Engine 和 Zytron kit。

  1. AW Engine:利用 ZKP 的信息壓縮能力提供可擴展性。一個使遊戲能夠垂直超級擴展的模組化框架。可通過電路或 zkVM 進行編程。其 z4 SDK 可以支持即時的遊戲內多人事件(玩家對戰)。
  2. Secret Engine:利用 ZKP 的信息隱藏能力提供非對稱信息博弈。一套零知識證明即服務(zk-as-a-service)的軟體開發工具包,為需要策略機制的遊戲提供信息不對稱性。零知識證明(ZKP)能夠在鏈上完全實現隱私計算和隨機性,並且可以證明其公平性。
  3. Zytron kit:Layer3 堆棧。一個主權 rollupL3 鏈堆棧,提供便捷的遊戲基礎設施部署,包括點對點層優化、伺服器分片等。專為大規模多人遊戲和 AW 建設設計。

Snip20240406_25

零知識證明的模組化框架 AW Engine#

AW Engine 負責 ZKP 電路的搭建,證明的生成和驗證,因此在套件中處於核心地位。它包括以下幾個部分:

  1. Gadgets(小工具):支持遊戲電路開發中使用的各種小工具,包括基本的哈希、ecc、掩碼、洗牌等。
  2. 特定應用的電路:使用特定應用的 plonk 作為 zk 證明的基本方案,通過 SDK 提供的各種小工具編寫特定的遊戲電路。它支持直接將電路編譯成 wasm,並可以在瀏覽器或應用程序中運行。同時,還提供在不同虛擬機(EVM/WASM/…)上運行的驗證合約,這些合約可以在不同的區塊鏈系統中運行,實現鏈下生成證明和鏈上驗證。
  3. 鏈上驗證器:為證明者和驗證者優化的 wasm,以及對所有 EVM 鏈的常見 solidity 驗證器的支持,以及對基於 Move 的鏈的 Move-lang 驗證器。
  4. Z4 多人 PVP 引擎:Z4 是用於即時多人遊戲的系統。它通過將玩家對戰事件(PvP)外包給專門的 zk-rollup 節點來擴展多人事件處理能力。

image (36)

上圖描述了 AW Engine 的工作原理和架構。這個遊戲引擎分為幾個主要部分,我將分步驟解釋每個部分的功能:

  1. Zypher Plonk / Bulletproofs / Groth16 / STARKs: 這些都是不同的零知識證明方案。這表明遊戲引擎支持多種類型的 ZKP 方案,使得遊戲開發者可以根據需求選擇合適的證明系統。

  2. General VM/DSL: 這指的是一種通用的虛擬機或者特定領域語言(Domain-Specific Language, DSL),用於編寫和執行遊戲邏輯。Zypher Network 已和 Risc Zero 官宣了戰略合作,預計會把他家的通用 zkVM 集成進來。

  3. Zypher gadgets & circuits: 這些小工具和電路是構建 ZKP 的基礎模組。在零知識證明中,小工具是預先定義的函數或邏輯片段,而電路是這些小工具連接起來的更大的計算過程。

  4. Game Proof Circuit: 遊戲證明電路是整個遊戲邏輯的零知識證明版本。這裡會創建一種電路,用於驗證遊戲規則而不洩露玩家的具體行動或策略。

  5. Prover API:證明者 API 是一個介面,開發者通過它生成證明。在遊戲上下文中,這意味著證明玩家的行動是按照遊戲規則進行的。

  6. Onchain Verifier API: 鏈上驗證者 API 是另一個介面,用於驗證前述提供的證明。這是在區塊鏈上進行的,以確保遊戲的每步都是公正和透明的。

  7. ZK Proof Market: 對於移動設備上的玩家,有一個去中心化的證明計算市場,玩家可以將證明計算外包;這進一步使鏈上遊戲變得與硬體無關。

  8. Game: 鏈下計算的遊戲部分包含實際的遊戲邏輯和用戶界面,允許玩家進行遊戲。

  9. Onchain Game: 提交證明到區塊鏈後,遊戲變成去中心化和去信任化的鏈上遊戲。可以類比 layer2 中的 DA Proof 進行上鏈操作。

總的來說,AW Engine 利用零知識證明來保障遊戲的安全性和公平性。它允許遊戲邏輯被驗證而不暴露任何關鍵信息,提供了一種建立在區塊鏈上的遊戲開發和運行的新方法。

最後讓我們從開發者的角度來看下整個引擎的工作流程:

1. 開發階段:

   - 首先,開發人員選擇合適的零知識證明方案(如 Plonk、Bulletproofs、Groth16 或 STARKs)。

   - 然後,他們使用這些方案中的一個來創建 “Zypher gadgets & circuits”,這些是遊戲邏輯的構建塊。

   - 這些構建塊被組合成一個完整的 “Game Proof Circuit”,這是一個零知識電路,能夠證明遊戲狀態的有效性而不洩露具體信息。

2. 證明生成(Prover API):

   - 遊戲的每個動作或者狀態改變都通過 “Prover API” 在後端轉換成一個證明,這個證明是不可偽造的,並且不洩露任何關鍵遊戲數據。

   - 這個證明代表玩家的遊戲動作或者遊戲狀態符合遊戲規則。

3. 鏈上驗證(Onchain Verifier API):

   - 生成的證明隨後通過 “Onchain Verifier API” 提交到區塊鏈上。

   - 這個鏈上驗證器會驗證證明的有效性,確認遊戲動作或者狀態的合法性,確保遊戲的公平性和正確性。

上面的流程並沒有把 Z4 多人對戰系統包括進去,實際上,ZKP 除了可以把遊戲邏輯進行 “可驗證化” 之外,還可以把 “多人對戰系統” 進行 “可驗證化” 操作。

image (37)

上圖是 Z4 引擎的工作流程圖,可以看出,Z4 引擎支持即時多人遊戲的方式,是通過創建無狀態的房間來進行玩家匹配和遊戲,這些房間由 zk-rollup 節點支撐,節點不保存數據。當遊戲邏輯在節點上運行時,所有操作都將排序和總結,並且通過零知識證明來證實。遊戲結束後,操作和結論的證明被上傳到鏈上進行驗證。Z4 節點可以不使用虛擬機直接運行遊戲邏輯,從而避免了交易和 gas 費用。如果需要,也可以在節點上使用虛擬機(如 WASM/EVM)來運行遊戲邏輯。整個過程旨在支持網絡範圍內每秒數百萬甚至數十億的交易量,以確保遊戲的即時性和高並發性能。

非對稱信息模組 Secret Engine#

"戰爭迷霧" 是一種常見於遊戲中的機制,典型的例子包括《星際爭霸》和《魔獸爭霸 3》。這種設計通過覆蓋遊戲地圖的某些區域來隱藏信息,只有當玩家探索這些區域時,這些區域才會顯示出來。這種機制增加了遊戲環境的不可預測性,是所謂的非對稱信息遊戲的典型特徵。大多數流行的 MMO 遊戲都採用了非對稱信息的遊戲機制,這為玩家提供了更多探索和制定戰略的空間。

然而,在區塊鏈技術中,數據通常是完全公開和透明的,這使得實現非對稱信息機制變得困難。但是,Dark Forest 遊戲通過採用零知識證明技術 zkSNARKs,成功地在玩家需要公開提交可驗證的有效動作的同時,還能保持其隱私狀態。這樣,Dark Forest 在區塊鏈上創造了一個不完全信息的遊戲環境。但是這種複雜的信息隱藏方法需要用到定制化的 ZK 電路編程,因此廣泛的信息隱藏就無法在鏈上遊戲中實現。

Secret Engine 通過優化的 WASM 和預編譯合約部分的解決了這一問題,通過 Shuffle SDK 實現了高性能、低成本的去中心化洗牌過程。洗牌電路和協議保證了可驗證的加密計算的安全執行,確保策略元素在鏈上保持機密。除了撲克、大富翁、交易卡牌遊戲之外,該 SDK 還可以應用於其他需要無信任和隨機性的 SLG 用例,比如:

  • Social Deception:社交欺騙遊戲中,可以保護玩家的秘密身份或策略。
  • Secret Placing:遊戲中的秘密放置動作,如隱藏單位或資源位置,可以安全實現。
  • Fog of War:即戰爭迷霧,可用於確保地圖的某些部分對某些玩家保密,直到某些條件得到滿足。

經常用到的 SDK 是有兩個:

  • zk-Shuffle-as-a-service:玩家輪流加密和洗牌,生成一個 “密封” 的且隨機排序的牌組,它提供了傳統隨機數生成器(如可驗證隨機函數,VRF)無法提供的解決方案。
  • zk-Matchmaking-as-a-service:玩家提交一個 “證明種子” 來生成一個隨機數並在鏈上進行匹配,整個過程可以通過 zkp 得到證明。

Snip20240406_29

這張圖片描述了 Shuffle SDK 的工作流程:

1. Zypher PlonK:

   - Basic PlonK: 這是一種通用的零知識證明方案,允許生成證明以驗證複雜計算的正確性而無需揭示其它信息。

   - Shuffle selectors: 這是特定於洗牌過程的邏輯或配置,允許 PlonK 證明系統正確執行牌的洗牌操作。

2. Shuffle Circuit:

   - Chaum Pedersen: 這個子組件用於確保洗牌過程的隱私。它通常與數字簽名或者加密有關,在這裡確保每張牌的加密是安全的。

   - Reveal: 這一步涉及在需要時安全地揭示牌的身份,而不洩露其它牌的信息。

   - Permutation: 這指的是洗牌的實際過程,即牌的重新排列。

   - Card Model: 這定義了牌的數據模型,在創建牌的加密版本以及之後驗證洗牌過程中至關重要。

3. Shuffle SDK:

   - Prover SDK (Rust/WASM): 這個軟體開發工具包允許遊戲開發者生成零知識證明,以證明洗牌過程是正確的,而不需要揭露牌的實際順序。

   - Onchain Verifier SDK (Solidity/WASM/Move): 這個 SDK 用於創建鏈上驗證者,驗證洗牌證明的正確性。

上述介紹可能還是太抽象,我們以一個鏈上德州撲克為例,來說明 Shuffle SDK 的原理。

107b17d7-a4c8-4537-adb6-ec712b573dec_888x616 (1)

在遊戲中,我們需要將 “洗好的牌堆” 結果存儲在鏈上。這不僅作為當前洗牌的結果,同時也作為後續 ' 洗牌 ' 的公共輸入,如在設置牌堆操作中所演示的。最初,設置牌堆默認存儲初始化的牌堆。然而,眾所周知,鏈上存儲成本高昂,尤其是對於大數據量。一副 52 張牌由總共 208 個 uint256 類型數據組成,使得存儲成本成為重要考慮因素。

Zypher 的解決方案是在洗牌後只存儲部分數據在鏈上,具體來說,只需要存儲 2n+5 張牌,其中 n 是玩家數量。鑑於目前支持最多 6 名玩家,因此最多使用 17 張牌。這意味著最終只需要將這 17 張牌存儲在鏈上。但如前所述,鏈上存儲的另一個目的是這些牌也將作為後續洗牌的公共輸入。因此,如果只存儲 17 張牌,就無法驗證洗牌的正確性。

為了解決這個問題,Zypher 的 zk-shuffle 電路將額外輸出完整牌堆的哈希值作為公共輸入,也存儲在鏈上。在驗證 zk-shuffle 時,用戶將上傳洗牌前的牌堆作為公共輸入,電路將計算用戶上傳的牌的哈希值,並與鏈上存儲的哈希值進行比較。最後,由於只有部分數據被保存在鏈上,用戶可能需要獲取完整的 52 張牌。對此,可以使用合約事件。事件是一種極低成本的通信方式,允許用戶通過監聽事件獲得完整的遊戲數據。

總而言之,整個流程的核心是使用零知識證明保證洗牌的隱私性和正確性。通過這種方式,即使在區塊鏈上公開記錄所有操作,玩家的決策和策略也可以保持隱私。

主權 L3 堆棧 Zytron kit#

Zytron Kit 是一個高度可定制的 Layer 3 主權 rollup 堆棧,支持 Zypher 的遊戲引擎作為預編譯合約。

現有的 Dapp 基礎設施,主要是 EVM,沒有針對鏈上遊戲這類需要高響應的用例進行優化,且未能提供所需的成本效率、可擴展性。MMO 和其他高性能遊戲需要專用的、定制的基礎設施,配備高效且可預測的計算資源。Zytron 的首個 alpha 網絡,特性包括 0 gas,0.2S 區塊時間,專為遊戲設計的預編譯合約,將在近期推出,有 10 款遊戲計劃作為先驅測試者。

該套件提供 4 個即插即用的核心組件:

  • 主權 Rollup: 遊戲中最重要的是可玩性,這需要在分佈式系統中具有最高的可用性(CAP),並且整個系統可以快速升級和自動部署。
  • 伺服器分片: 將遊戲的世界地圖分布到不同的節點上,以提高單個節點的承載能力。同時,它提供了一套高效的檢索算法,以快速在全球地圖上的不同節點間移動,切換不同的節點服務,並同步信息。
  • 數據兼容性: 一個對於存儲抽象至關重要的組件,該協議集成了更加用戶友好的關係型和快取數據庫,以加快遊戲數據處理。這個功能解決了高效數據管理和快速訪問的需求,這對於保持流暢的遊戲體驗至關重要。
  • 定制網絡: 鑒於遊戲的高網絡需求,該框架優化了底層的點對點 (P2P) 網絡層,以支持遊戲場景。這包括對小組內消息傳輸的優化,使用 NAT 穿越和打洞技術實現快速高效的連接。此外,網絡還針對遊戲設計了一種特殊的 UDP 協議,旨在將延遲保持在 10 毫秒以下。這確保了快速可靠的數據傳輸,這對於即時遊戲體驗至關重要。

主權 Rollup 是一種較新的概念,它在普通 Rollup 的基礎上增加了更高級別的自主性和靈活性,允許在其上構建獨立的、具有完全自治功能的區塊鏈網絡。這意味著,每個主權 Rollup 都可以擁有自己的共識機制、狀態機和治理模型,同時仍然保持與主鏈的兼容性。

Screenshot 2024-01-22 at 7.24.41 PM (1)

通過上面框架圖,我們可以了解 Zytron 套件的各個組件功能:

1. 核心組件提供了遊戲鏈的基礎設施,允許高度的定制和優化。

   - 主權 Rollup 保證了遊戲的可玩性和高可用性,支持系統的快速升級和自動部署。

   - 伺服器分片通過將遊戲世界分布在多個節點上,提高了單個節點的負載能力。

   - 數據兼容性通過集成用戶友好的數據庫系統,確保遊戲數據的快速處理。

   - 定制網絡優化了底層 P2P 網絡層,滿足遊戲的高網絡需求,包括優化小組間的消息傳遞和減少延遲。

2. 鏈上組件包含運行在鏈上的基礎部分,以保障遊戲邏輯的正確性和資產的安全性。

   - 鏈上驗證器確保所有交易和遊戲操作都是有效和合法的。

   - 智能合約作為遊戲規則和邏輯的編碼載體,處理玩家之間的互動和遊戲狀態的變更。

3. 模組組件提供了特定遊戲功能和服務的實現。

   - ZK 系統為隱私保護提供支持,如隱私計算和驗證。

   - 賬戶系統和即時通訊系統提供用戶管理和實時通信功能。

   - 監控系統用於監控網絡狀況和遊戲運行狀況。

   - 房間系統、金融系統和 AI 系統提供遊戲內房間管理、財務交易和人工智能支持。

   - 日誌系統記錄所有操作和事件,以便分析和調試。

Untitled (12) (1)

上圖是 Zytron kit 堆棧的工作流程:

  • 交易首先在 Layer 3 上產生,由 Sequencer 排序。
  • Runner 節點監聽 Layer 1/2 的事件和 Sequencer 的輸出,它們之間進行通信以執行交易並達成共識實現服務分片功能。
  • 數據定期提交到 Celestia,用於確保數據的可用性和安全性。
  • 客戶端通過輕量級同步與 Layer 3 交互,並可以調用 Layer 3 提供的服務。

更有意思的是,前面兩個引擎套件,包括 AW Engine 和 Secret Engine 都可以以預編譯的形式與 Zytron kit 集成,以更為簡約的形式為鏈上遊戲提供高效、響應快速、功能豐富的基礎設施。開發者也可以根據自己的需求選擇相應的組件,以創建符合他們遊戲設計的鏈環境。Zypher 不僅支持 ETH 生態,也正在積極的探索 BTC 生態中鏈上遊戲以及 L3 的可能性,Zypher 和 BTC 的 Layer2 B² Network 官宣合作稱將基於 B² Network 以及其 DA Layer B² Hub 部署鏈上遊戲專屬 Layer 3,這將是 BTC 生態中首個支持鏈上遊戲的 Layer 3。Zypher 已經成為首批支持 BTC 生態的鏈上遊戲開發引擎。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。