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

零知識證明的模組化架構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生態的鏈上遊戲開發引擎。

Total
0
Shares
Related Posts