如何使用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建設設計。

如何使用Zypher开发可验证化链上游戏?

零知識證明的模塊化框架 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 節點來擴展多人事件處理能力。

如何使用Zypher开发可验证化链上游戏?

上圖描述了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除了可以把遊戲邏輯進行“可驗證化”之外,還可以把“多人對戰系統”進行“可驗證化”操作。

如何使用Zypher开发可验证化链上游戏?

上圖是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得到證明。

如何使用Zypher开发可验证化链上游戏?

這張圖片描述了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的原理。

如何使用Zypher开发可验证化链上游戏?

在遊戲中,我們需要將“洗好的牌堆”結果存儲在鏈上。這不僅作爲當前洗牌的結果,同時也作爲後續’洗牌’的公共輸入,如在設置牌堆操作中所演示的。最初,設置牌堆默認存儲初始化的牌堆。然而,衆所周知,鏈上存儲成本高昂,尤其是對於大數據量。一副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都可以擁有自己的共識機制、狀態機和治理模型,同時仍然保持與主鏈的兼容性。

如何使用Zypher开发可验证化链上游戏?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

如何使用Zypher开发可验证化链上游戏?

上圖是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生態的鏈上游戲開發引擎。

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 留言
  • 轉發
  • 分享
留言
0/400
暫無留言
交易,隨時隨地
qrCode
掃碼下載 Gate App
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)