CaptainZ

CaptainZ

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

為什麼 Argus 使用分片技術構建 FOC 遊戲基礎設施

原標題:我如何學會停止擔心並愛上執行分片
視頻鏈接:https://www.youtube.com/watch?v=A0OXif6r-Qk
講師:Scott Sunarto (@smsunarto) 在研究日
文章編輯:Justin Zhao (@hiCaptainZ)

 
大家好,我叫 Scott (@smsunarto),是 Augus Labs (@ArgusLabs_) 的創始人。今天,我將討論一個我們已經有一段時間沒有觸及的主題。隨著 roll-up 成為當前的熱點,我們不常談論執行分片,與數據分片相比。因此,讓我們重新審視這個有些被忽視的執行分片主題。
 
這將是一場輕鬆的演講。我知道大家整天都在聆聽複雜的概念,所以我會儘量保持實用。我為這次演講準備了一個合適的幻燈片設計。
 
對於那些不認識我的人,一個有趣的事實是我在 Twitter 上被稱為動漫女孩。我還錯過了我的大學畢業典禮來到這裡,這讓我的父母非常不滿。目前,我是 Argus Labs 的創始人。我們自認為是一家遊戲公司,而不是基礎設施或加密公司。我最大的抱怨之一是,所有的加密遊戲都想建立工具,但沒有人想創建內容或應用程序。我們需要更多用戶實際可以使用的應用程序。
 
之前,我是 Dark Forest (@darkforest_eth) 的共同創建者,與我出色的朋友 Brian Gu (@gubsheep) 和 Alan Luo (@alanluo_0) 一起。Brian 現在在運營 0xPARC (@0xPARC),他比我聰明得多。
 
今天的演講將專注於執行分片,但在一個對於我們通常討論執行分片的背景來說是陌生的。我們通常在一層一的背景下討論執行分片,比如以太坊分片或 Near 分片。但今天,我想稍微改變一下背景。讓我們想想在 roll-up 環境中,分片會是什麼樣子。
 
這裡的根本問題是,為什麼一家遊戲公司要架構自己的 roll-up,以及我們可以從《魔獸世界》中學到什麼來設計 roll-up。此外,我們還將探討 roll-up 的設計空間如何超越當前的現實。
 
為了回答這些問題,讓我們回到 2020 年,當時 Dark Forest 的想法首次被提出。我們問自己,如果我們創建一個每一個遊戲行動都是鏈上交易的遊戲會怎樣?那時這是一個荒謬的前提,今天對許多人來說仍然如此。但這是一個有趣的假設,所以我們構建了它,Dark Forest 因此誕生。
 
Dark Forest 是一個完全鏈上的太空探索 MMORTS 遊戲,運行在以太坊上,使用 ZK-Snarks。回到 2020 年,ZK 並不像今天那樣流行,因為文檔幾乎不存在。Circom 唯一可用的文檔是 Jordi Baylina (@jbaylina) 的 Google 文檔。儘管面臨挑戰,我們從過程中學到了很多,Dark Forest 就是這種學習的體現。
 
Dark Forest 是一個超出我們預期的實驗。我們擁有超過 10,000 名玩家,消耗了數萬億的燃氣,並且在遊戲中出現了大量的混亂,玩家們在鏈上互相背叛。Dark Forest 和鏈上遊戲最迷人的地方是平台化的本質。通過擁有一個鏈上遊戲,你為新興行為打開了設計空間,並允許人們構建與遊戲互動的智能合約,以及替代客戶端和遊戲模式,例如 Dark Forest Arena 和 GPU 礦工。
 
然而,強大的力量伴隨著巨大的責任。當我們在 xDai 上推出 Dark Forest 時,現在被稱為 Gnosis Chain,我們最終填滿了整個鏈的區塊空間。這使得該鏈幾乎無法用於其他任何事情,包括 DeFi、NFT 或任何其他 xDAI 的東西。
 
那麼,現在該怎麼辦?我們是否到了死胡同?鏈上遊戲是否永遠無法成為現實?還是我們回到製作只有 JPEG 在鏈上的遊戲,並說服人們錢是從樹上長出來的?答案是,我們讓軟件做事情。我們中的許多人以非常僵化的方式思考區塊鏈和 roll-up,彷彿沒有太多改進的空間。但我不同意。我們可以實驗並發現新的可能性。
 
我們問自己這個問題:如果我們要從零開始設計一個專門為遊戲而設的區塊鏈,它會是什麼樣子?我們需要高吞吐量,因此需要同時擴展讀取和寫入。大多數區塊鏈都是設計來進行大量寫入的。每秒交易數是人們所宣傳的指標,但現實是,讀取同樣重要。如果你無法從區塊鏈節點讀取,你怎麼知道你的位置在哪裡?這實際上是我們在區塊鏈建設中發現的第一個瓶頸。
 
Dark Forest 遇到了一個問題,完整的節點被大量使用,I/O 爆炸,因為我們需要從鏈上狀態讀取數據。這導致了數千美元的伺服器成本,xDAI 團隊慷慨地為我們支付了這些費用。然而,這對於長期來說並不理想。我們需要高吞吐量,不僅僅是每秒寫入交易,還需要讀取,例如從區塊鏈本身獲取數據。
 
我們還需要一個水平可擴展的區塊鏈,以避免噪音鄰居問題。我們不希望一個受歡迎的遊戲突然在一個區塊鏈上崩潰,導致所有其他功能停止運作。我們還需要靈活性和可定制性,以便我們可以修改狀態機,使其設計為遊戲。這包括擁有遊戲循環,使其自我執行,等等。
 
最後但同樣重要的是,對於不熟悉在線遊戲架構的人來說,這可能有些模糊,我們需要高 tick 率。Tick 是遊戲世界中的原子時間單位。在區塊鏈上下文中,我們有區塊作為原子時間單位。在遊戲中,我們有 tick。這在構建完全鏈上遊戲時幾乎是類似的,區塊鏈的 tick 速度或區塊生成速度等於遊戲本身的 tick。
 
如果你有更高的 tick 或每秒更多的區塊,遊戲感覺會更靈敏。相反,如果你有較低的 tick,遊戲感覺會更遲鈍。需要記住的一個關鍵點是,如果區塊生成延遲,你會在遊戲中視覺上感受到延遲。這是一個糟糕的體驗。如果你曾經處理過因為輸掉遊戲而對著電腦大喊的憤怒玩家,那真的是一個非常糟糕的情況。
 
目前,我們的 rollup 每秒一個區塊,這等於一個 tick 率。如果我們想要更酷的遊戲,我們需要更高的 tick 率。例如,Minecraft 這個簡單的像素藝術遊戲每秒有 26 個 tick。我們還有很長的路要走,才能構建出像 Minecraft 那樣靈敏的遊戲。
 
一個可能的解決方案是部署我們自己的 rollup。雖然這似乎在表面上解決了問題,但實際上並沒有解決問題的根本原因。例如,你的寫入吞吐量會更高,但並不完全達到遊戲所需的水平。當然,如果你的遊戲有一百名玩家,那就足夠了。但如果你想構建需要更高吞吐量的遊戲,由於當前建設中 I/O 的方式,會有非常嚴格的限制。
 
在讀取方面,你並不會真正獲得性能提升。你仍然需要依賴索引器。你並不真正擁有水平可擴展性。如果你試圖啟動一個新的 rollup 來水平擴展你的遊戲,你會使現有的智能合約生態系統碎片化。玩家部署的市場將無法與你為水平擴展遊戲而啟動的其他鏈兼容。這會帶來很多問題。
 
最後,高 tick 率和每秒區塊數根本不是一回事。我們可以盡力推進。我們可能會達到每秒兩個區塊,也許三個,但這真的是這些區塊鏈能達到的極限,因為有很多開銷,比如重新編組等,這對計算周期非常耗費。
 
為了解決這個問題,我們回顧 2000 年代初和 1990 年代末,當時在線遊戲如 MMO 剛剛興起。他們有分片的概念。這不是一個新概念;它在過去就已經存在。我們在數據庫架構中使用的 “分片” 一詞實際上來自於《Ultima Online》的參考。他們是第一個使用 “分片” 這個術語來解釋他們不同伺服器的遊戲。
 
那麼,分片在遊戲中是如何運作的?這不是一個通用的解決方案。它是工具箱中的一個工具,如何將其融入你的遊戲因上下文而異。例如,第一種分片結構是我喜歡稱之為基於位置的分片。思考它的一個良好心理模型是想像一個被分成四個象限的笛卡爾圖,每個象限都有自己的遊戲分片。每當你想跨越一個分片時,你會向另一個分片發送通信,說:“嘿,我想移動到那裡,” 然後你會被傳送到你的分片,留下你之前的玩家身體。通過這樣做,你將伺服器的工作負載分配到多個物理實例,而不是強迫單個伺服器為整個遊戲世界進行所有計算。
 
第二種結構在當今更受歡迎。它被稱為多元宇宙分片,你有多個彼此鏡像的遊戲實例。你可以選擇想要去的任何分片,並且它是默認負載均衡的,這樣每個伺服器不會變得過於擁擠。
 
現在,這裡的關鍵問題是如何將這個概念引入 rollup?這就是我們創建 World Engine 的原因。World Engine 是我們的旗艦基礎設施,基本上是一個有意見的分片序列器,旨在啟動。與我們在過去幾次演講中看到的許多分片序列器設計相比,我們的設計不同,更適合我們的需求。我們優化的目標是:A、吞吐量,B、我們想確保沒有鎖定阻塞運行時,以確保 tick 率和區塊時間盡可能高效,因此它默認是同步的,並且我們設計序列器的方式是部分順序,而不是強制總排序,這樣每個交易需要在其他交易之後發生。

 
這裡的關鍵組件是我們有兩個主要的東西。我們有基於 EVM 的分片,這就像一個純 EVM 鏈,玩家可以部署智能合約來與遊戲組合,創建帶有稅收的市場等等。這將像一個正常的鏈,對吧?每秒一個區塊或每秒一個事物,足夠讓你完成所有典型的設備和市場操作。
 
這裡的秘密成分是我們使用遊戲分片,這本質上是一個設計為高性能遊戲伺服器的迷你區塊鏈。我們有一個自帶實現的接口,這樣你可以根據自己的喜好自定義這個分片。你可以構建自己的分片並注入到基礎分片中。你只需要實現一組標準接口,就像如果你熟悉 Cosmos,Cosmos 有一個 ABC 接口。你基本上可以將其符合類似的規範,將自己的分片帶入世界引擎堆棧。
 
這裡的關鍵是我們擁有一個目前無法通過當前分片結構實現的高 tick 率。這就是我想介紹 Cardinal 的地方。Cardinal 是世界引擎的第一個遊戲分片實現。它使用實體 - 組件 - 系統,這是一種數據導向架構。這使我們能夠對遊戲進行並行處理,並提高遊戲計算的吞吐量。它具有可配置的 tick 率,最高可達每秒 20 個 tick。對於這裡的區塊鏈人來說,這是每秒 20 個區塊。
 
我們還可以進行地理定位以減少延遲。現在,你有可能位於美國的序列器,而亞洲的人們必須等待大約 300 毫秒的延遲,才能讓該交易到達序列器。這在遊戲中是一個巨大的問題,因為 300 毫秒是很長的時間。如果你嘗試以 200 毫秒的延遲玩 FPS 遊戲,那基本上就是永遠,你已經死了。
 
對我們來說,另一個重要的關鍵是它是自索引的。我們不再需要外部索引器。我們不需要這些框架來緩存遊戲內狀態。這也使我們能夠構建更多實時的遊戲,而不會有延遲問題,因為索引器仍在試圖跟上序列器區塊。
 
我們還有一個插件系統,允許人們並行化 ZK 驗證等等。對我來說,最好的部分是你可以用 Go 編寫代碼。不再需要與 Solidity 掙扎,試圖讓你的遊戲運行。如果你曾經嘗試用 Solidity 構建區塊鏈遊戲,那真的是一場噩夢。
 
但對於我們的分片結構來說,關鍵是你可以將任何東西構建為分片。它們基本上是一個無限的設計空間,分片可以是什麼。
 
假設你不喜歡用 GO 編寫遊戲代碼,你可以選擇退出,但我們正在開發一個 Solidity 遊戲分片,允許你用 Solidity 編寫遊戲實現,同時保留 Cardinal 的許多優勢。你還可以創建一個 NFT 鑄造分片,擁有獨特的內存池和一個排序結構,解決基本鑄造噪音鄰居問題。你甚至可以擁有一個遊戲身份分片,讓你可以使用 NFT 來表示你的遊戲身份,允許你輕鬆地使用 NFT 交易你的遊戲身份,而不必給出你的私鑰,這是不建議的。
 
這是一個高層次的結構,由於時間限制,我不會深入探討。這裡的關鍵是,我們允許 EVM 智能合約通過使用自定義選擇和傳遞與遊戲分片組合。我們在 Geth 周圍創建了一個包裝器,以允許它們之間的通信。這在雙向上打開了很多設計空間。我們默認是同步的,並且在分片之間無鎖地實現無縫的可組合互操作性。
 
我們的共享序列器不同之處在於,它不使用共享序列結構,這種結構優先考慮總排序原子包,這需要鎖定機制,並導致主線程阻塞等問題,導致不可靠的 tick 率和區塊時間,從而導致遊戲延遲。它還對每個分片的區塊時間施加限制,並需要各種加密經濟學和結構來防止拒絕服務。還有一個大象在房間裡,我沒有看到很多 VCR 序列器結構提到:如果你有不同的分片相互依賴並導致死鎖,你如何解決死鎖?使用異步設計,這些都不是問題,因為每個人都在做他們想做的事情,然後放手不管。
 
現實是,跨分片和 Roll-Ups 的原子包通常不是必需的。對於我們的用例,我們不需要任何需要原子包的東西,我們認為不應該圍繞用例純度來設計我們的 Roll-Ups。這還會導致許多其他有趣的特性。例如,每個遊戲分片可以擁有一個單獨的 DA 層,用於基礎鏈。例如,你可以使用基礎分片將數據推送到以太坊,而遊戲分片可以像數據可用性委員會一樣將數據推送到 Celestia。你還可以減少運行完整節點的硬件要求,因為你可以單獨運行基礎分片 Geth 完整節點,而不必運行遊戲分片節點,這使得你更容易與 Alchemy 等事物集成。
 
總結一下,我想在這裡保持知識上的誠實。很多人想聲稱他們的結構解決了所有生活中的問題,但對我們來說並非如此。我們認為我們的結構對我們有用,但可能不適合你的用例。假設我們的結構適用於每個人的用例並不現實。它符合我們的需求,提供高吞吐量、水平可擴展性、靈活性和高 tick 率,但並不能治癒癌症。如果你需要一個需要同步可組合性的 DeFi 協議,那麼這個結構可能不適合你。
 
總之,我真的相信以人為本的區塊鏈架構的概念。通過圍繞特定用戶角色和用例進行設計,你可以更好地導航權衡空間,而不是試圖解決每個人的問題。文藝復興的時代已經來臨,每個人都可以設計自己的 Roll-Ups 來滿足他們的特定需求,而不是依賴於通用解決方案。我相信我們應該擁抱寒武紀大爆發。不要像一個通用的第一層那樣構建 roll-ups,因為它根本不是為了解決同樣的問題而設計的。我個人期待看到更多人探索更多針對特定用例或行業的 Roll-Up 設計空間。例如,專門為資產交換設計的 Roll-Up 會是什麼樣子?它會是基於意圖的嗎?專門為鏈上 CLOB 設計的 Roll-Up 會是什麼樣子?說完這些,我將把麥克風交回 MJ。謝謝你們的接待。
 
 

中文版鏈接:
https://captainz.xlog.app/wei-shen-me-Argus-shi-yong-fen-pian-lai-gou-jian-quan-lian-you-xi-ji-chu-she-shi

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