如果你每小時都失去記憶怎麽辦?而且你需要不斷地請別人告訴你你做了什麽?這就是智能合約的現狀。在以太坊等區塊鏈上,智能合約無法直接訪問超過256個區塊的狀態。這個問題在多鏈生態繫統中進一步加劇,使繫統中跨不衕執行層的數據檢索和驗證更加睏難。
2020年,Vitalik Buterin 和 Tomasz Stanczak 提出了一種跨時間訪問數據的方法。雖然 EIP 已經停滯不前,但它的需求在以 Roll-up 爲中心的多鏈世界中重新出現。如今,存儲證明已經成爲一個前沿領域,能爲智能合約提供意識和記憶。
Aapp 可以通過多種方式訪問數據和狀態。所有方法都要求應用程序信任人類/實體或加密經濟安全或代碼,併進行一些權衡:
考慮到這些解決方案具有的挑戰和局限性,顯然需要在鏈上存儲併提供塊哈希。這就是存儲證明髮揮作用的地方。爲了更好地理解存儲證明,讓我們先快速了解一下區塊鏈中的數據存儲。
區塊鏈是一個公共數據庫,可以在網絡中的許多計算機之間更新和共享。數據和狀態存儲在稱爲塊的連續組中,每個區塊通過存儲前一個塊頭的哈希值以加密方式引用其父塊。
我們以以太坊區塊爲例。以太坊利用一種特殊類型的 Merkle 樹,稱爲“Merkle Patricia 樹”(MPT)。以太坊區塊頭包含四種不衕 Merkle-Patricia 樹的根,即狀態樹、存儲樹、收據樹和交易樹。這四種嘗試對包含所有以太坊數據的映射進行編碼。Merkle 樹因其具有數據存儲效率而被使用。使用遞歸哈希,最終隻需要存儲根哈希,節省了大量空間。它們允許任何人通過證明對節點進行遞歸哈希會導緻相衕的根哈希這一事實來證明樹中元素的存在。Merkle 證明允許以太坊上的輕客戶端穫得以下問題的答案:
“輕客戶端”隻能下載區塊頭鏈併使用 Merkle 證明驗證信息,而不是下載每筆交易和每個區塊。因此,整個過程非常高效。請參閲本博客中 Vitalik 和 Maven11 的這篇研究博文,以更好地了解與 Merkle樹相關的實現、優點和挑戰。
存儲證明使我們能夠證明某些內容已在數據庫中提交,併且使用加密承諾也是有效的。如果我們能夠提供這樣的證據,那麽區塊鏈上髮生的事情就是可驗證的。
存儲證明有兩個主要功能:
非常高級別的存儲證明負責檢查特定塊是否是區塊鏈規範歷史的一部分,然後驗證請求的特定數據是否是該區塊的一部分。這可以通過以下方式實現:
採用這種方法的一些項目有 Herodotus、Lagrange、Axiom、Hyper Oracle、Brevis Network 和 nil Foundation。盡管人們正在努力使應用程序跨多個區塊鏈進行狀態感知,但 IBC(區塊鏈間通信)作爲互操作性標準脫穎而出,支持 ICQ(鏈間查詢)和 ICA(鏈間賬戶)等應用程序。ICQ 使鏈 A 上的應用程序能夠通過將查詢包含在簡單的 IBC 數據包中來查詢鏈 B 的狀態,而 ICA 允許一個區塊鏈安全地控製另一個區塊鏈上的帳戶。將它們組合起來就能實現值得期待的跨鏈用例。Saga 等 RaaS 提供商默認使用 IBC 曏其所有應用程序鏈提供這些功能。
可通過多種方式優化存儲證明,以找到內存消耗、證明時間、驗證時間、計算效率和開髮人員體驗之間的適當平衡。整個流程大緻可以分爲3個主要分步驟。
數據訪問:在此分步中,服務提供者在執行層本地或通過維護鏈上緩存來訪問源鏈的塊頭。對於跨鏈數據訪問,需要在目的鏈上驗證源鏈共識。正在採用的一些方法和優化包括:
除了訪問數據之外,智能合約還應該能夠在數據之上進行任意計算。雖然某些用例可能不需要計算,但對於許多其他用例來説,它是一項重要的增值服務。許多服務提供商都可以對數據進行計算,因爲可以在鏈上生成併提供計算的 zk 證明以確保有效性。由於 Axelar、LayerZero、Polyhedra Network 等現有 AMP 解決方案可能用於數據訪問,因此數據處理可能成爲存儲證明服務提供商的區分因素。
例如,Hyper Oracle 允許開髮人員使用 JavaScript 定義自定義鏈下計算。Brevis 設計了一個開放的 ZK 查詢引擎市場,它接受來自 dApp 的數據查詢,併使用經過驗證的塊頭對其進行處理。智能合約髮送數據查詢,該數據查詢由市場上的證明者穫取。證明者根據查詢輸入、相關區塊頭(來自 Brevis 聚合層)和結果生成證明。Lagrange 引入了 ZK Big Data Stack 來證明 SQL、MapReduce 和 Spark/RDD 等分布式編程模型。證明是模塊化的,可以從源自現有跨鏈橋和 AMP 協議的任何塊頭生成。ZK MapReduce是Lagrange ZK BigData堆棧中的第一個産品,是一個分布式計算引擎(基於著名的MapReduce編程模型),用於證明涉及大量多鏈數據的計算結果。例如,單個 ZKMR 證明可用於證明在指定時間窗口內部署在 4-5 條鏈上的 DEX 的流動性變化。對於相對簡單的查詢,計算也可以直接在鏈上完成,就像Herodotus 目前所做的那樣。
狀態和存儲證明可以在應用程序、中間件和基礎設施層開啟智能合約的許多新用例。其中一些包括:
治理:
上述所有證據都可用來爲用戶提供定製化的體驗。Dapp 可以提供折扣或特權來留住有經驗的交易者或用戶,併爲新手用戶提供精簡的用戶體驗。
最後兩個用例將要求每次將新區塊添加到源鏈時更新證明。
意識使科技公司能夠更好地服務客戶。從用戶身份到購買行爲再到社交圖譜,科技公司利用意識來開啟精準定位、客戶細分和病毒式營銷等功能。傳統科技公司需要穫得用戶的明確許可,併且在管理用戶數據時必鬚小心謹慎。然而,非許可的區塊鏈上的所有用戶數據都是公開的,不一定會泄露用戶身份。智能合約應該能夠利用公開的數據來更好地服務用戶。隨著更專業的生態繫統的開髮和採用,將愈髮需要解決跨時間和區塊鏈的狀態意問題。存儲證明可以使以太坊成爲身份和資産所有權層以及結算層。用戶可以在以太坊上維護自己的身份和重要資産,這些資産可以在多個區塊鏈上使用,而無需一直橋接資産。我們將持續期待在未來將解鎖的新可能性和用例。
Compartilhar
如果你每小時都失去記憶怎麽辦?而且你需要不斷地請別人告訴你你做了什麽?這就是智能合約的現狀。在以太坊等區塊鏈上,智能合約無法直接訪問超過256個區塊的狀態。這個問題在多鏈生態繫統中進一步加劇,使繫統中跨不衕執行層的數據檢索和驗證更加睏難。
2020年,Vitalik Buterin 和 Tomasz Stanczak 提出了一種跨時間訪問數據的方法。雖然 EIP 已經停滯不前,但它的需求在以 Roll-up 爲中心的多鏈世界中重新出現。如今,存儲證明已經成爲一個前沿領域,能爲智能合約提供意識和記憶。
Aapp 可以通過多種方式訪問數據和狀態。所有方法都要求應用程序信任人類/實體或加密經濟安全或代碼,併進行一些權衡:
考慮到這些解決方案具有的挑戰和局限性,顯然需要在鏈上存儲併提供塊哈希。這就是存儲證明髮揮作用的地方。爲了更好地理解存儲證明,讓我們先快速了解一下區塊鏈中的數據存儲。
區塊鏈是一個公共數據庫,可以在網絡中的許多計算機之間更新和共享。數據和狀態存儲在稱爲塊的連續組中,每個區塊通過存儲前一個塊頭的哈希值以加密方式引用其父塊。
我們以以太坊區塊爲例。以太坊利用一種特殊類型的 Merkle 樹,稱爲“Merkle Patricia 樹”(MPT)。以太坊區塊頭包含四種不衕 Merkle-Patricia 樹的根,即狀態樹、存儲樹、收據樹和交易樹。這四種嘗試對包含所有以太坊數據的映射進行編碼。Merkle 樹因其具有數據存儲效率而被使用。使用遞歸哈希,最終隻需要存儲根哈希,節省了大量空間。它們允許任何人通過證明對節點進行遞歸哈希會導緻相衕的根哈希這一事實來證明樹中元素的存在。Merkle 證明允許以太坊上的輕客戶端穫得以下問題的答案:
“輕客戶端”隻能下載區塊頭鏈併使用 Merkle 證明驗證信息,而不是下載每筆交易和每個區塊。因此,整個過程非常高效。請參閲本博客中 Vitalik 和 Maven11 的這篇研究博文,以更好地了解與 Merkle樹相關的實現、優點和挑戰。
存儲證明使我們能夠證明某些內容已在數據庫中提交,併且使用加密承諾也是有效的。如果我們能夠提供這樣的證據,那麽區塊鏈上髮生的事情就是可驗證的。
存儲證明有兩個主要功能:
非常高級別的存儲證明負責檢查特定塊是否是區塊鏈規範歷史的一部分,然後驗證請求的特定數據是否是該區塊的一部分。這可以通過以下方式實現:
採用這種方法的一些項目有 Herodotus、Lagrange、Axiom、Hyper Oracle、Brevis Network 和 nil Foundation。盡管人們正在努力使應用程序跨多個區塊鏈進行狀態感知,但 IBC(區塊鏈間通信)作爲互操作性標準脫穎而出,支持 ICQ(鏈間查詢)和 ICA(鏈間賬戶)等應用程序。ICQ 使鏈 A 上的應用程序能夠通過將查詢包含在簡單的 IBC 數據包中來查詢鏈 B 的狀態,而 ICA 允許一個區塊鏈安全地控製另一個區塊鏈上的帳戶。將它們組合起來就能實現值得期待的跨鏈用例。Saga 等 RaaS 提供商默認使用 IBC 曏其所有應用程序鏈提供這些功能。
可通過多種方式優化存儲證明,以找到內存消耗、證明時間、驗證時間、計算效率和開髮人員體驗之間的適當平衡。整個流程大緻可以分爲3個主要分步驟。
數據訪問:在此分步中,服務提供者在執行層本地或通過維護鏈上緩存來訪問源鏈的塊頭。對於跨鏈數據訪問,需要在目的鏈上驗證源鏈共識。正在採用的一些方法和優化包括:
除了訪問數據之外,智能合約還應該能夠在數據之上進行任意計算。雖然某些用例可能不需要計算,但對於許多其他用例來説,它是一項重要的增值服務。許多服務提供商都可以對數據進行計算,因爲可以在鏈上生成併提供計算的 zk 證明以確保有效性。由於 Axelar、LayerZero、Polyhedra Network 等現有 AMP 解決方案可能用於數據訪問,因此數據處理可能成爲存儲證明服務提供商的區分因素。
例如,Hyper Oracle 允許開髮人員使用 JavaScript 定義自定義鏈下計算。Brevis 設計了一個開放的 ZK 查詢引擎市場,它接受來自 dApp 的數據查詢,併使用經過驗證的塊頭對其進行處理。智能合約髮送數據查詢,該數據查詢由市場上的證明者穫取。證明者根據查詢輸入、相關區塊頭(來自 Brevis 聚合層)和結果生成證明。Lagrange 引入了 ZK Big Data Stack 來證明 SQL、MapReduce 和 Spark/RDD 等分布式編程模型。證明是模塊化的,可以從源自現有跨鏈橋和 AMP 協議的任何塊頭生成。ZK MapReduce是Lagrange ZK BigData堆棧中的第一個産品,是一個分布式計算引擎(基於著名的MapReduce編程模型),用於證明涉及大量多鏈數據的計算結果。例如,單個 ZKMR 證明可用於證明在指定時間窗口內部署在 4-5 條鏈上的 DEX 的流動性變化。對於相對簡單的查詢,計算也可以直接在鏈上完成,就像Herodotus 目前所做的那樣。
狀態和存儲證明可以在應用程序、中間件和基礎設施層開啟智能合約的許多新用例。其中一些包括:
治理:
上述所有證據都可用來爲用戶提供定製化的體驗。Dapp 可以提供折扣或特權來留住有經驗的交易者或用戶,併爲新手用戶提供精簡的用戶體驗。
最後兩個用例將要求每次將新區塊添加到源鏈時更新證明。
意識使科技公司能夠更好地服務客戶。從用戶身份到購買行爲再到社交圖譜,科技公司利用意識來開啟精準定位、客戶細分和病毒式營銷等功能。傳統科技公司需要穫得用戶的明確許可,併且在管理用戶數據時必鬚小心謹慎。然而,非許可的區塊鏈上的所有用戶數據都是公開的,不一定會泄露用戶身份。智能合約應該能夠利用公開的數據來更好地服務用戶。隨著更專業的生態繫統的開髮和採用,將愈髮需要解決跨時間和區塊鏈的狀態意問題。存儲證明可以使以太坊成爲身份和資産所有權層以及結算層。用戶可以在以太坊上維護自己的身份和重要資産,這些資産可以在多個區塊鏈上使用,而無需一直橋接資産。我們將持續期待在未來將解鎖的新可能性和用例。