詳解儲存證明:如何提升預言機性能?

原文:《What are Storage Proofs and how can they improve Oracles?》

翻譯及校對:「Starknet 中文社區」

Starknet 上無需信任的跨鏈信息訪問

介紹

存儲證明是一種跟踪區塊鏈信息的加密方式,可以跨鏈共享。與預言機類似,存儲證明提供信息真實性的證明。然而與預言機的區別在於,存儲證明不需要第三方來證明。相反,有了存儲證明,信任就建立在存儲中。

在某些情況下,存儲證明可以替代預言機。而在另一些情況下,存儲證明可以增強預言機,甚至開闢一些全新的區塊鏈用例。

本文將詳細探討存儲證明的定義、工作原理、使用案例以及如何增強或替代預言機。

什麼是存儲證明?

存儲證明允許公開狀態的加密承諾,還可以通過與SNARK/STARK 技術結合來進行優化。有效性證明可以證實特定狀態在歷史某個特定區塊中是存在且有效的。

本質上來說,區塊鍊是包含使用Merkle 樹、Merkle Patricia 樹和Verkle 樹等以加密方式提交數據的數據庫。由於所有數據都已提交,可以證明某些信息已封裝在給定的狀態中。然而,對於簡單的承諾方案,隨著它囊括的數據規模越來越大,這個證明的規模也會愈加變大。在鏈上驗證此類證明變得過於昂貴而不實用。

另一方面,當與STARK 或SNARK 技術結合使用時,存儲證明可以變得相對較小,並可以在特定時間點和任意域上驗證特定狀態,且無需信任第三方。存儲證明不依賴第三方,而是依賴底層鏈本身的安全性。

存儲證明為何如此重要?如今的以太坊已不再是簡單的單片鏈(L1)。隨著L2 解決方案的出現,數據現在分佈在多條鏈上。

無法再對鏈的狀態進行同步假設。許多共享數據的解決方案已經上線,例如L1 → L2 消息系統、跨鏈橋和預言機。但這些解決方案的問題在於,需要信任中繼器、多重簽名器、委員會這些第三方。存儲證明允許在無需信任第三方的情況下使用加密承諾在任何時間點驗證區塊鏈的狀態。

存儲證明的用例

由於存儲證明可以有效地「壓縮」區塊鏈並傳送數據到其它地方,所以出現了不少應用。負擔得起的驗證成本是存儲證明的一個整體屬性,讓證明可以在目的鏈上得到驗證,最大限度地減少了開發跨鏈信息傳遞系統的需要。

潛在用例包括:

  • 關於區塊鏈上的狀態和交易的通用信息訪問。
  • 簡化的跨鏈投票系統。經常有用戶在緩慢但更安全的A 鏈上持有資產,但一些基於代幣的投票會選擇在交易成本更低的B 鏈上進行。這就迫使用戶要么跳過投票,要么支付巨額交易費用,將資產從A 跨鏈到B 上,投票後再將資產轉回A 鏈。在這種情況下,存儲證明讓用戶可以證明他們在某個給定區塊的A 鏈上的代幣餘額,並在B 鏈上無縫進行投票。
  • 跨鏈橋的替代方案。目前,跨鏈橋因通常涉及中介,都假定對第三方有一定程度的信任,例如託管人或去中心化自治組織(DAO)。該中介負責確保中介在源鏈上收到一定數量的代幣,並負責持有源鏈上的資產。之後,在目標鏈上鑄造相應的代幣。存儲證明可以實現無需信任的跨鏈橋接,因為目的鏈上的智能合約應用可以驗證資產轉移到源鏈上的跨鏈智能合約交易,並鑄造跨鏈資產。然而,在多數情況下,由於另一條鏈上的資產所有權可以簡單地用存儲證明來證實,所以在鏈之間轉移資產的需求也可能不復存在。
  • 增強帳戶抽象(AA)用例的用戶體驗。帳戶抽像已在不同的鏈上實施,公認為是將第一批十億用戶引入區塊鏈的關鍵創新。有了存儲證明,錢包可以新增其他功能。例如錢包長時間沒有轉賬,可以恢復存取權限。還可以強制使用來自其它鏈的數據進行額外檢查。

詳解儲存證明:如何提升預言機性能?

存儲證明示例

在EVM 兼容鏈上生成存儲證明非常簡單。例如,Web3.js 庫具有getProof 函數,可以生成以太坊(以及其他EVM 兼容鏈,如Polygon 或BSC)上合約狀態的證明。必須將合約地址和合約的存儲槽傳遞給函數。

在以太坊中,智能合約使用鍵值存儲將數據存儲在其存儲器中。每條數據都存儲在稱為「存儲槽」的特定位置。存儲槽是合約存儲中的內存位置,由唯一索引標識。來看下示例的智能合約0xcc…da8b,其代碼如下,部署在以太坊主網。

詳解儲存證明:如何提升預言機性能?

其中owner 變量存儲在0 號槽。現在,要生成該合約的owner 是地址A 的證明,可以使用getProof 函數,如下所示:

詳解儲存證明:如何提升預言機性能?

上面的代碼輸出:

詳解儲存證明:如何提升預言機性能?

返回的stotageProof 包含owener 變量的存儲證明。由於以太坊使用Merkle Patricia 樹將帳戶狀態及其存儲提交給以太坊狀態,因此生成的存儲可以用於證明存儲槽(或帳戶狀態)。然而,如前所述,這些證明的可擴展性不足以討論跨鏈消息傳輸。在此之上使用複雜的零知識數學可以減少驗證證明所需的計算。

存儲證明如何與預言機之比較

按照設計,區塊鏈無法檢索鏈下數據。這讓區塊鏈有無需信任的優勢,但也限制了智能合約根據現實世界事件做出決策的能力。因直接獲取歷史區塊鏈信息非常具有挑戰性,且很容易出錯,預言機常用於獲取這些信息。

為解決這個問題,創建了名為預言機的特殊實體來檢索鏈下數據(或檢索一些繁重的鏈下計算結果)。目前,預言機需要第三方(例如機構或節點運營商的去中心化網絡)提交鏈上數據,這些數據對用戶和智能合約公開。這種信任假設目前是無法避免的,有幾個團隊正在努力最小化這種信任要求,如Pragma,但並不理想。

Chainlink 就是區塊鏈預言機的一個例子,它提供各種現實世界的數據(股票價格、天氣數據等)和鏈下計算服務來降低鏈上繁重計算的成本,以及讀寫不同鏈上信息的跨鏈服務。

由於智能合約除了使用預言機之外,沒有其他方式可以了解現實世界中發生的事情,因此預言機成為了區塊鏈生態系統中不可或缺的一部分。

Starknet 上的預言機

在Starknet 測試網上,前面提到的Chainlink 目前為七對加密貨幣提供價格數據,並與StarkWare 團隊合作來「進一步加速Starknet 生態系統的應用程序開發和總體增長」。 Chainlink 通過去中心化的節點網絡最大限度地減少信任假設,這些節點網絡提供來自鏈下的數據,數據匯總也在鏈下進行。

Pragma 和Stork Network 是Starknet 上最大的兩家預言機提供商,在主網和測試網上均有運營。除了多個加密貨幣交易對價格外,Pragma 在主網上實現可驗證的隨機性餵價,允許協議請求鏈上的安全隨機性。 Pragma 上的價格源基於大型機構和做市商提供的價格,價格聚合利用高效的零知識技術在鏈上進行。

詳解儲存證明:如何提升預言機性能?

存儲證明如何替代或者改進預言機?

在某些情況下,存儲證明可以替代預言機。

實際上並非預言機提供的所有數據都需要第三方來提供。在某些情況下,預言機提供的數據已經在鏈上可用(以鏈上存儲或交易的形式),並且可用通過查看區塊鏈的歷史狀態來檢索。在這些情況下,存儲證明可以取代第三方和預言機的信任,並允許智能合約完全依賴加密承諾的安全性。

在其它情況下,存儲證明並不能完全取代預言機,但仍然可以通過額外的功能來增強預言機,例如:

  • 預言機將信息從數據提供商傳輸到數據消費者。然而並不是所有的數據消費者都在同一條鏈上。借助存儲證明,可以在一條鏈上完成來自不同來源的數據計算,並將結果導出到其他鏈。
  • 這類數據的首選計算成本較低的源鏈,而驗證證明可以在其它目的鏈上以低成本完成。
  • Herodotus 是該領域的研究領軍者,使用存儲證明和零知識數學提供跨不同以太坊鏈的跨域數據訪問。 Pragma 還與Herodotus 合作,不久將啟用跨鏈預言機支持。
  • 存儲證明可以統一多個Rollup 鏈的狀態,甚至可以在以太坊層之間同步讀取。
  • 另一個增強功能是對發佈在鏈上的歷史數據進行無需信任的檢索。以太坊、Starknet 等有狀態區塊鏈通過Merkle/Verkle 樹和Merkle Patricia 樹專門的數據結構,來記錄和加密保存其狀態。證明包含存儲在這些結構中的任何數據也就有了可行性。因此,任何在鏈上發布的歷史數據也可以被信任、檢索並用於其他應用程序(甚至不一定在同一條鏈上)。這些存儲證明允許智能合約訪問,甚至可以追溯到創世區塊的信息。
  • Pragma 正在研究在Starknet 上開發一個作為L3 預言機的可行性,可以將數據「拉」到其他鏈上並使用存儲證明進行驗證。在像Starknet 這樣計算成本低廉的網絡上的不同域中使用預言機的好處包括:
  • 由於L3 是一條高度可定制的鏈,可以調整各種參數以更快地在區塊上達成共識,從而大大降低預言機的數據延遲。
  • 結合存儲證明,在源鏈上達成共識後,低延遲數據可以異步傳遞到其他鏈上。
  • 通過在L3 中開發內置系統來加強對數據的信任,懲罰不誠實的數據提供商。如果給予適當激勵,L3 上的數據提供商可以抵押他們的資產作為發布正確數據的保障。由於在其他鏈可以使用數據之前,需要整個網絡在L3 上達成共識,因此預言機提供的數據可以被認為是由驗證器在L3 上的質押來保證的。

結論

過去的幾個月,以太坊上L2 實現飛速增長,也讓我們對行業的未來有了更清晰的認識。 Starknet、Optimism 和Arbitrum 等網絡的L2 敘事越來越受關注。實施去中心化的跨鏈消息傳遞系統是其發展的主要支持。儘管現在還處於初期階段,但存儲證明有望對這一問題做出顯著的改進。

特別鳴謝Marcello Bardus 和Kacper Koziol 審閱本文。

Total
0
Shares
Related Posts