當(dāng)前位置:區(qū)塊鏈 >區(qū)塊鏈 > 全鏈游戲新篇章:用 zkWASM 開發(fā)可證明游戲

全鏈游戲新篇章:用 zkWASM 開發(fā)可證明游戲

更新時間:2024-01-30 08:25:43 | 作者:佚名
鏈上游戲和可驗證游戲的未來開發(fā)者體驗,將會是高度模塊化,可插拔式的。 撰文:wangyao、0xbrawler 太長不看版: ZK協(xié)處理器方法提供了可驗證游戲所需的信任假設(shè),以及開發(fā)引人入勝的游戲體驗所需的計算能力 對于經(jīng)驗豐富的游戲開發(fā)人員來說,【非?!啃枰猆nity/Unreal原生解決方案,而不是把在Solidity/Cairo的核心游戲邏輯,...
鏈上游戲和可驗證游戲的未來開發(fā)者體驗,將會是高度模塊化,可插拔式的。


撰文:wangyao、0xbrawler


太長不看版:


  • ZK 協(xié)處理器方法提供了可驗證游戲所需的信任假設(shè),以及開發(fā)引人入勝的游戲體驗所需的計算能力
  • 對于經(jīng)驗豐富的游戲開發(fā)人員來說,【非?!啃枰?Unity/Unreal 原生解決方案,而不是把在 Solidity/Cairo 的核心游戲邏輯,和 Unity 中的動畫 / 渲染二者進(jìn)行同步
  • 鏈上游戲和可驗證游戲的未來開發(fā)者體驗,將會是高度模塊化,可插拔式的(到底有多上鏈算上鏈?我們認(rèn)為應(yīng)該由開發(fā)者和用戶決定)
  • 未來,我們相信將會有彈性的方法,來 tradeoff 信任假設(shè)、證明成本、開發(fā)成本,從而開發(fā)成本可控的可驗證游戲


為什么要開發(fā)可證明游戲?


2023 年是鏈上游戲(FOCG)/ 自主世界(AW)蓬勃發(fā)展的一年,出現(xiàn)了大量的基礎(chǔ)設(shè)施。這包括 Mud.dev、Dojo、World Engine、Keystone、Paima 等等。此外,Altlayer、Caldera、Conduit 等 Rollup 服務(wù)供應(yīng)商也吸引了眾多全鏈游戲開發(fā)者進(jìn)行開發(fā)。


然而,通過開發(fā)和運(yùn)營我們的第一個鏈上大逃殺游戲 Loot Royale,并在一個月內(nèi)達(dá)到了每日活躍用戶 600–800 人的過程中,我們發(fā)現(xiàn)了一個重要問題:


如果把游戲邏輯全部放在鏈上,那么 EVM 本身的有限計算能力將會成為游戲開發(fā)最大的瓶頸。


計算能力的不足限制了游戲類型(低計算量、單線程、異步游戲為主),以及用戶體驗(大家要等交易打包、RPC hydration 等)。


簡單舉幾個例子。我們收到了很多反饋,比如「我希望我的交易能及時被打包,這樣那次攻擊就能命中了」,以及「RPC 數(shù)據(jù)什么時候才能完成加載」。這必須改變。


玩家們等 RPC hydration 真是急得不行


在嘗試在各種技術(shù)棧上開發(fā)之后,我們相信如果能夠在鏈下證明計算,那么其可信性效果應(yīng)當(dāng)極度接近于全鏈上的交易 / 計算。我們通過采用「鏈下執(zhí)行,鏈上驗證」的原則來解決 EVM 的有限計算能力。這有幾個優(yōu)勢:


  • 改善用戶體驗,減少等待時間
  • 擴(kuò)展游戲類別,包括像塔防這樣需要更多計算的「硬核休閑」(mid-core)游戲
  • 支持隱藏信息(hidden information)在游戲中的應(yīng)用


我們將首先簡要介紹我們?nèi)绾问褂?zkWASM 開發(fā)可證明的游戲。然后我們將討論我們的 zkwasm-unity 解決方案,這是行業(yè)內(nèi)首個允許直接從 Unity 開發(fā)可證明游戲的方案。


Blade Games 的技術(shù)架構(gòu)


基于 zkwasm 開發(fā)簡單的塔防游戲


技術(shù)架構(gòu)這里分成兩部分,第一部分是用 Rust 編寫簡單的 PvE、PvP 塔防游戲,并通過 zkwasm 進(jìn)行驗證。


第二部分是我們的路線圖,我們計劃開發(fā)一個將 C#編譯成 wasm 的編譯器,并對現(xiàn)有 zkwasm 架構(gòu)進(jìn)行適當(dāng)修改,從而實(shí)現(xiàn)一個更加模塊化、彈性化的可證明游戲開發(fā)方案。(zkwasm 由 Delphinus Labs 開發(fā),是一個運(yùn)行 wasm 代碼并生成其執(zhí)行軌跡的 zkSNARK 證明的 zkVM。)


讓我們從 PvE 示例開始?—?我們用 Rust 和 Bevy Engine 編寫游戲。


Rust 可以輕松編譯成 wasm,并在 zkwasm VM 中處理之前生成一個 wasm 映像(image)。然后我們可以選擇將處理后的執(zhí)行軌跡發(fā)布到數(shù)據(jù)可用性層(Data Availability Layer)并稍后證明它。或者用戶也可以選擇立刻證明,并將 zkSNARK 證明發(fā)送到鏈上(使用單張 RTX4090 GPU 大約 45 秒就可以處理 100 萬字碼規(guī)模的證明,這對于較慢節(jié)奏的塔防游戲來說已經(jīng)足夠了)。


游戲然后被分解為幾個步驟。


  • 玩家將確認(rèn)地圖設(shè)置并將相關(guān)信息 commit 到鏈上
  • 游戲邏輯在 rust 代碼中運(yùn)行一波戰(zhàn)斗;相關(guān)的 execution trace 可以由 zkwasm 證明,玩家提交 zk 證明到鏈上
  • 新一波怪物來臨,玩家可以選擇保持之前的炮塔設(shè)置,或者再次提交新的 commit
  • 玩家在每波戰(zhàn)斗中間不能更改塔的設(shè)置,如果他們更改地圖設(shè)置,他們可以再次提交新 commit



(玩家將確認(rèn)地圖設(shè)置并將 zkwasm 輸出提交到鏈上)



(游戲邏輯在 rust 代碼中運(yùn)行一波戰(zhàn)斗。相關(guān)的 execution trace 可以由 zkwasm 證明,玩家提交 zk 證明到鏈上)


Zinity:第一個允許直接從 Unity 開發(fā)可驗證游戲的解決方案


對于許多游戲開發(fā)者來說,在鏈上開發(fā)游戲意味著他們需要學(xué)習(xí) solidity、rust 或 cairo。這意味著他們需要停止使用他們熟悉的 C#。此外,嘗試將 Unity 引擎的渲染和動畫與基于 Mud/dojo 的 solidity/cairo 游戲邏輯代碼統(tǒng)一起來,是一個非常耗時費(fèi)力的過程。


我們將發(fā)布第一個使用 zk 協(xié)處理器、Unity 原生的解決方案,用于鏈上游戲的「zkServer」開發(fā)框架。我們稱之為 Zinity。


游戲代碼被解耦為:


1)核心邏輯代碼(攻擊,戰(zhàn)利品箱,單位坐標(biāo)等)

2)其余代碼。然后,這兩部分代碼都從 C#編譯成 wasm,核心游戲邏輯由 zkwasm runtime 運(yùn)行,其余代碼在普通的 C# runtime 運(yùn)行。將有一個處理消息的通信協(xié)議來負(fù)責(zé)兩邊的通信。


zkWASM 將以二進(jìn)制代碼形式,見證諸如「玩家 A 在時間 X 在坐標(biāo)(x,y)放置了一個炮塔」的動作。隨著新的一局游戲開始,我們開始獲取初始游戲狀態(tài)。隨著游戲的進(jìn)行,zkwasm 將見證并計算更多玩家輸入。當(dāng)本局游戲結(jié)束時,將會生成附帶哈希值的新游戲狀態(tài)和相關(guān)的執(zhí)行軌跡(execution trace)。


我們可以選擇將整個執(zhí)行軌跡(execution trace)發(fā)布到諸如 Eigenlayer/Celestia/Avail/Greenfield 之類的數(shù)據(jù)可用性層(DA layer)上。或者用戶可以選擇只將哈希值放在數(shù)據(jù)可用性層上,將軌跡(trace)存儲在云存儲中。此外,我們還會設(shè)計一個挑戰(zhàn)期,以 fault proof 的方式,來驗證游戲狀態(tài)。


此外,對于重要的、玩家參與經(jīng)濟(jì)單位較大的游戲結(jié)果,用戶還可以選擇為全部游戲過程生成 zk 證明,并直接發(fā)布在 DA 層上。



最后,所有流程將被整合并作為 Unity SDK(非動畫和渲染)或 CLI 工具來指導(dǎo)整個工具鏈。


我們還可以將此解決方案擴(kuò)展到其他游戲引擎,如 Unity/Unreal/Godot。未來計劃還包括與其他 zkVM(如 RiscZero)以及各種 DA 層(Eigenlayer/Celestia)集成。


通過這種方法,我們可以大大擴(kuò)展鏈上游戲 / 可驗證游戲開發(fā)者社區(qū),吸引 web2 游戲開發(fā)者和各種游戲工作室。


帶有 ERC-6551 的鏈上街機(jī) + 塔防游戲玩法


此外,我們還在探索圍繞可驗證游戲的鏈上街機(jī)概念。例如,玩家也可以在鏈上提交某種塔 / 炮塔 / 障礙物的設(shè)置,另一個玩家可以提交他們選擇的怪物和小兵,以嘗試完成關(guān)卡。戰(zhàn)斗結(jié)果在本地計算,只有 zk-snark 證明提交到鏈上,以驗證游戲結(jié)果。這是為了確保通過關(guān)卡的方法,不會被廣播到鏈上被大眾可見。


ERC-6551(代幣綁定賬戶)將使這些 PvP 對局,變成自主街機(jī)(autonomous arcade)。開設(shè)房間的玩家可以向智能合約存入獎勵,而挑戰(zhàn)者需要支付固定入場費(fèi),該費(fèi)用累積到獎金池中,以獎勵完成關(guān)卡的玩家。前 10 名完成關(guān)卡的玩家,可以拿走一定比例的獎金池獎勵。


我們正在積極探索這個自主街機(jī)的想法,并歡迎在 twitter 上(@BladeGamesHQ)進(jìn)行任何類型的討論。在我們即將發(fā)布的文章中,我們會討論塔防游戲的 PvP 示例。



我們即將在 ETHdenver 上展示的游戲


我們將在 ETHdenver 展示一個可驗證的游戲演示。這款游戲?qū)⑹褂?Rust 和 React 開發(fā),在 zkwasm 上運(yùn)行。在twitter上聯(lián)系我們,我們會把你加入早期試玩人員名單!


結(jié)論,和我們接下來要發(fā)布的內(nèi)容


  • ZK 協(xié)處理器方法提供了所需的信任假設(shè),以及開發(fā)人員打造引人入勝的游戲體驗所需的計算能力
  • 對于經(jīng)驗豐富的游戲開發(fā)人員來說,(非常)需要 Unity/Unreal 原生解決方案,而不是必須在 Unity 中統(tǒng)一 Solidity/Cairo 中的核心游戲邏輯和 Unity?中的動畫 / 渲染
  • 鏈上游戲和可驗證游戲的未來開發(fā)者體驗,將會是高度模塊化,可插拔式的(到底有多上鏈算上鏈?我們認(rèn)為應(yīng)該由開發(fā)者和用戶決定)
  • 未來,我們相信將會有彈性的方法來權(quán)衡信任假設(shè)、證明成本、開發(fā)成本來開發(fā)可驗證游戲


我們的 Zinity 解決方案為 web2 和 web3 開發(fā)者,提供了開發(fā)可驗證游戲的順暢上手體驗。我們相信,讓開發(fā)者使用各種類型的游戲引擎,以及不同的 DA 層和 zkVM 進(jìn)行開發(fā)的即插即用方法,也將提供更大的開發(fā)體驗靈活性。


我們設(shè)想未來的開發(fā)者體驗是這樣的:Zinity 可以為可證明游戲提供「彈性」支持,并為 crypto 開發(fā)者、 Web2 游戲開發(fā)者提供可證明游戲的可插拔開發(fā)選項。


比如開發(fā)者可以用 Rust 編寫核心游戲邏輯,用 C# 和 Unity 編寫游戲的其余部分,并在鏈上 commit 執(zhí)行軌跡 / 軌跡的哈希,延后生成 ZKP,這樣開發(fā)成本、證明成本都會好很多。


這種彈性模型還可以幫助開發(fā)人員,在 C#和 unity 引擎內(nèi)部快速測試早期游戲創(chuàng)意,然后繼續(xù)迭代他們所希望的游戲「上鏈程度」(到底有多上鏈算上鏈?我們認(rèn)為應(yīng)該由開發(fā)者和用戶決定)。同時也提前壓力測試游戲設(shè)計 vs. 區(qū)塊鏈性能的 tradeoff。


當(dāng)我們開發(fā)自己的游戲,并測試各種技術(shù)棧時,我們意識到我們?nèi)匀恍枰?jīng)驗豐富的 web2 游戲開發(fā)者嘗試開發(fā)可驗證游戲,以獲得更好的游戲心流和 UIUX。因此,我們提出了自己的首創(chuàng)解決方案,并希望為更廣泛的鏈上游戲開發(fā)者社區(qū)做出貢獻(xiàn)。



我們已經(jīng)就使用 zkwasm 和可驗證游戲開發(fā)的一些話題寫了很多內(nèi)容,并正在進(jìn)行剩余的工作。這里是一些話題:


  • 修改 zkwasm 以實(shí)現(xiàn)可驗證游戲(進(jìn)行中)
  • 這種方法的 DA 成本和證明成本估算(已完成)
  • 可驗證游戲的 modding、可互操作性和鏈上無許可的交互(進(jìn)行中)
  • 相關(guān)的可驗證游戲設(shè)計思路(進(jìn)行中)


感謝 Sinka、Wangyao、Will Robinson、Mohamed Fouda、LoneSCV、0xAiko、Simon Chan、Maggie Wu、James Fang、Zee 等人對本文的貢獻(xiàn)

本站提醒:投資有風(fēng)險,入市須謹(jǐn)慎,本內(nèi)容不作為投資理財建議。