Micro-Rollups 的可驗證鏈下運算、可審計狀態及鏈上應用整合能力,或促使鏈上現實世界用例爆炸性成長。
原文:Micro-Rollups for On-chain Attestations
作者:Stackr Labs
編譯: Frank,Foresight News
證明(Attestation),這是一個含義廣泛的詞,幾乎每個人都對它的意思有一些理解,並且每個人在生活中都曾經在不知不覺中使用過這個概念。
那麼讓我們試著定義它,證明本質上是對某一資訊所做的陳述或聲明,它們作為可信賴方提供的證據或確認,以驗證特定陳述的真實性。證明的可信度取決於提供證明的實體的聲譽,在 Web3 世界中,證明帶有數位簽名,確保真實性和不可變性。
讓我們來看一些例子,無論是現實世界還是加密領域,你可能都沒有意識到它們其實就是某種形式的證明。
Web3 世界的證明:以太坊證明服務登場
以太坊證明服務(Ethereum Attestation Service,EAS)是 Web3 領域支援證明用例的領先項目之一,它是一個開源的基礎設施公共產品,用於鏈上或鏈下進行證明。 EAS 的運作方式非常簡單,你只需註冊一個關於任何主題的架構(或使用現有的架構),然後根據該架構進行證明。
限制
儘管 EAS 為 Web3 中的證明推理和利用提供了堅實的基礎,但它並非沒有限制。使用 EAS 進行鏈上證明的成本可能會非常高昂,並且需要編寫 EVM 智能合約來實現任何自訂邏輯。對於鏈下證明,架構仍然需要放在鏈上,開發人員經常將這些證明儲存在私有資料庫中,損害了使用者的可驗證性。
這種情況凸顯了使用 Stackr SDK 建構的 Micro-Rollups 如何用於增強 EAS 或整體證明的功能。
快速介紹 Micro-Rollups
Micro-Rollups 本質上是一種狀態機,可以在鏈下執行特定的邏輯,然後將執行結果的驗證外包到另一個稱為「Vulcan」的層,而 Vulcan 會更新驗證狀態並將計算資料上鍊。
- Micro-Rollups 的狀態機具有定義良好的狀態格式,並透過創世條件進行初始化;
- 狀態機可以執行動作(即交易類型),當觸發這些動作時,會呼叫狀態機上的狀態轉換函數;
- 狀態轉換函數(STF)負責執行計算並更新狀態機的狀態;
在 STF 執行後,所有動作將被打包成一個區塊並發送到 Vulcan 層。
Vulcan 層會執行以下操作:
- 以「悲觀」(Pessimistically)的方式重新執行區塊中的動作,以檢查狀態轉換函數(STF)的有效性;
- 為經過驗證的區塊產生元資料;
- 在 L1(主鏈)和資料可用性層(DA)上結算;
- 將 Micro-Rollups 的更新狀態傳送到 DA 層;
- 將經過驗證的區塊的元資料和更新後的狀態根雜湊值寫入 L1 上 Micro-Rollups 的 inbox 合約;
上述流程共同構成了 Stackr 的 Micro-Rollups 框架。
證明系統 Micro-Rollups
那麼,為什麼 Micro-Rollups 特別適合建構證明系統呢? Micro-Rollups 具有以下優勢:
- 可驗證的鏈下計算:Micro-Rollups 在功能上類似於後端服務,但它為應用程式的狀態和計算增加了一層可驗證性,這可以確保證明的頒發者沒有篡改系統規則;
- 可審計的狀態:一旦狀態機部署完成,狀態轉換函數(STF)的邏輯就無法被修改,這可以讓使用者確信提供者不會任意更改系統的規則;
- 可與鏈上應用集成:Micro-Rollups 可以與鏈上應用集成,Micro-Rollups 會將應用程式的狀態根哈希值寫入 L1,其他應用程式可以使用此哈希值來證明性地訪問 Rollup 的狀態;
Micro-Rollups 用於證明的三種方式
1.EAS 鏈下證明的可驗證存儲
如前所述,EAS 的鏈下證明只是一個包含證明資料和簽署的 JSON 文件,這些資料不會儲存在鏈上,而是儲存在私人資料庫或去中心化儲存解決方案中。
與 EAS 推薦的「Ceramic 網路的可驗證資料帳本」非常相似,Micro-Rollups 是儲存這些鏈下證明的理想解決方案。從本質上講,Micro-Rollups 是一個可驗證的資料帳本,因為:
- 可驗證的計算確保了狀態轉換的正確性;
- 狀態被「匯總」成一個哈希值(稱為 Merkle 根哈希),並在每個 epoch 結束後發佈到以太坊 L1 主網上;
- 所有資料都對底層的 DA 層可用;
這樣的系統將是一個通用型的 Micro-Rollups,旨在儲存任何已在 EAS 上註冊的架構的證明,同時不會影響最終用戶的可驗證性。
2. 適用於特定架構證明的 Micro-Rollups
其核心即 Micro-Rollups 本質上只是一個由狀態和狀態轉換函數組成的狀態機,當透過架構和證明的視角審視這個框架時,我們可以發現一些相似之處。
狀態類似於架構,它定義了資料結構,而證明類似於狀態轉換,它們是經過驗證的符合架構的更新,這種對比凸顯了 Micro-Rollups 的真正潛力:可以建立針對特定架構的 Micro-Rollups,使證明能夠適應特定的架構,並賦予開發人員將自訂邏輯納入轉換函數的靈活性,類似於 EAS 中的解析器合約(Resolver contracts)。
更棒的是,由於計算完全在鏈下、EVM 之外進行,因此用戶在進行證明時無需支付任何 Gas 費用。
我們最近的一篇關於「積分系統 Micro-Rollups」的文章討論了應用程式如何利用積分作為激勵機制,這正是一個這樣的系統的直接例子,因為積分本質上是應用程式授予用戶的證明。
也可以使用 Stackr 的 SDK 建立封裝器,以便輕鬆啟動一個具有自訂架構和解析器邏輯的新 Micro-Rollups,同時保持相同的 API 以實現跨 Micro-Rollups 的互通性。
3.Micro-Rollups 作為 EAS 的改良方案
由於 Micro-Rollups 可以抽象化構建去中心化應用的大部分複雜性,因此可以相當快速地將一個接近功能完備的 EAS 替代方案作為 Micro-Rollups 來實現,這種替代方案可以提供相同的三個核心功能:
- 用於儲存所有架構的架構註冊表;
- 根據架構創建證明的能力;
- 撤銷現有證明的選項;
在下一節中,我們將更深入地研究如何建構它。
讓我們用 Micro-Rollups 建構一個 EAS
免責聲明:此演示展示了框架的功能,代表了一個不完整的構建,不適用於生產環境,請將內容視為說明性而非最終產品。
在開發 Micro-Rollups 時,至關重要的是使用狀態機的方式來理解您的邏輯,這需要仔細考慮 Micro-Rollups 的狀態(即它將持有的資料)以及將支配狀態轉換函數行為的動作,而狀態轉換函數又會操作此狀態。
了解以上內容,我們現在開始使用 Stackr 的 SDK 設計 Micro-Rollups 的狀態。
設計
- 架構和證明儲存在狀態機內部的鏈下;
- 使用者發送動作,觸發狀態機內部的狀態轉換函數;
- 使用者可以發送動作來註冊架構、針對任何儲存的架構建立證明或撤銷現有證明;
- 每隔一個既定時間戳就會產生一個區塊,其中包含架構和證明狀態的詳細資訊;
- 該區塊被發送到 Vulcan 網路進行驗證;
- 如果區塊符合狀態機的規則,則該區塊將被批准;
- 區塊資料將拆分到 L1 和 DA 進行結算;
確定初始狀態
類似於 EAS,我們需要儲存架構和證明的清單。為了清晰地說明這一點並提供明顯的對比,我們將使用與 EAS 相同的結構定義。
1. 首先,讓我們在我們的狀態中定義架構和證明。
分析細節如下:
- schemas: 此欄位儲存了一個哈希映射,鍵為架構的 UID,值為 SchemaRecord 結構體,SchemaRecord 結構體對應使用者提交的證明架構。
- attestations: 此欄位儲存另一個哈希映射,鍵為證明的 UID,值為 Attestation 結構體。 Attestation 結構體對應引用特定架構的單一證明。
新增狀態更新處理程序
在設定了最小可行狀態之後,我們需要定義用於更新狀態的狀態轉換函數。
2. 讓我們定義兩個函數:
- schema: 負責建立架構條目;
- attest: 負責創建證明條目;
分析 registerSchema 函數:
- 當使用者提交註冊新證明架構的指令時,需要提供兩個欄位:schema:證明架構的 ABI(Application Binary Interface),revocable:架構是否明確允許撤銷證明;
- 發起註冊動作的使用者將被記錄為架構的註冊者;
- 狀態轉換函數會根據所提供的數值計算該架構條目的唯一識別碼;
- 最後,將新的架構條目加入狀態;
分析 attest 函數:
- 使用者提交建立新證明的指令,其中包含相關 schemaUID 等欄位;
- 發起創建動作的使用者將被記錄為證明者;
- 狀態轉換函數會根據所提供的數值計算該證明條目的唯一識別碼;
- 狀態轉換函數會對比傳入的證明資料與相關架構的 ABI;
- 最後,將新的證明條目加入狀態;
至此,我們已經建構了一個最低可行系統。
智能合約 vs. Micro-Rollups
要取得針對某個架構所創建的所有證明,或是由某個位址所發出的所有證明,我們就需要遍歷所有的證明條目。當我們每次想要進行這樣的尋找時,都需要重複這個過程。
為了緩解這個問題,EAS 實作了一個名為 Indexer.sol 的智慧合約,專門用於索引多個映射變數中的值。然而,由於以太坊虛擬機(EVM)中的儲存成本與 Micro-Rollups 相比非常昂貴,這會產生額外的 Gas 費用。
但由於我們正在建立一個 Micro-Rollups,我們可以更自由地使用狀態和計算,以使用者體驗為優先考慮,而不是成本。
新增索引欄位以提高查找效率
3. 在狀態中新增 schemaAttestations 字段,該字段將用於維護架構與其證明之間的映射關係。
因此,當新增新的證明時,我們也更新 attest 函數,以更新架構的映射關係。
這樣就可以輕鬆建立一個類似以太坊證明服務的可追溯性的鏈上證明系統,賦予後端伺服器鏈上超能力,聽起來是不是很簡單?
將鏈下證明引入鏈上→ 現實世界用例和更多可能
在 Web3 世界中,證明對於啟用大多數現實世界用例至關重要,它們彌合了 Web2 和現實身分與Web3 之間的差距,保留了分散式信任。
上述系統的妙處在於,它允許證明在鏈上無縫使用,而不會產生大量開銷。
如同開頭所提到的,Micro-Rollups 的狀態根會結算在 L1 上。值得注意的是,開發人員可以選擇哪些狀態部分結算在 L1 上,哪些部分作為元資料放在 DA 上,從而解鎖混合安全假設。
在這種情況下,如果我們提取證明並將其默克爾根(merklized root)結算在 L1 上,那麼我們就可以在默克爾樹中進行證明的直接包含性證明。
這項特性解鎖了鏈上身分驗證、所有權證明以及存取各種服務和權益的功能。例如,摩根大通最近使用了一種名為可驗證憑證的證明形式來執行其在公共區塊鏈上的首筆 DeFi 交易。當證明數據連同包含性證明一起引入鏈上時,鏈上現實世界用例的潛力將呈爆炸性增長。
這種方法使證明可以在鏈上進行驗證,而無需將證明嚴格存儲在鏈上,並且成本更低,用戶體驗更佳。
總結
雖然證明在 Web3 中看起來像是一種新事物,但它們一直是我們所感知的「信任體驗」的一部分。它們對於將現實世界的身份和資產引入鏈上至關重要,這直接促進了區塊鏈的合法性。從本質上講,證明只是人類協調的另一種工具。有了這個心智模型,只剩下一個問題:我們如何在網路層面上協調?
Micro-Rollups 憑藉其可驗證和快速的鏈下運算、可審計狀態以及與鏈上應用整合的能力,為建立強大的證明系統以及協調機制提供了理想的框架。
我們才剛開始彌合 Web2 和 Web3 之間的差距。
免責聲明:作為區塊鏈資訊平台,本站所發布文章僅代表作者及來賓個人觀點,與 Web3Caff 立場無關。文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。