原文標題:《Introducing Steel》

編譯:Chris,Techub News

Steel,連接 RISC Zero 和以太坊

以太坊網絡的成功推動了 DApp 生態的蓬勃發展,但隨之而來的是越來越嚴峻的可擴展性挑戰。開發者們面臨一個兩難境地:要麼限制應用程序的功能和數據豐富性,要麼忍受高昂的 Gas 費和其使用限制。那麼,如果開發者能夠找到繞過這些限制的方法,將會怎樣呢?

RISC Zero 是 zkVM 開發者之一。你可能經常聽說 zkEVM,但對它的衍生概念 zkVM 還不太熟悉。RISC Zero 最近推出了一項名爲 Steel 的新技術,這是一種基於 Alloy 的視圖調用證明庫,它將徹底改變開發者與以太坊 L1 或其他 EVM 兼容鏈的交互方式。通過利用零知識證明和 RISC Zero 的 zkVM 技術,Steel 爲開發者提供了一個可擴展、安全且成本效益高的方法,使他們能夠執行視圖調用並驗證地讀取及計算以太坊狀態。

Solidity 的便利,藉助 ZK 的力量

Steel 架起了以太坊應用開發與零知識證明技術之間的橋樑,極大地便利了開發者在智能合約中應用零知識證明(ZK)技術的過程。通過整合 RISC Zero 的 zkVM 功能,Steel 爲開發者在以太坊 L1 或任何 EVM 兼容鏈上打造更安全、可擴展且效率更高的應用提供了工具。

使用 Steel,開發者能夠在以下方面獲得顯著提升:

  1. 直接執行復雜鏈上邏輯:在 zkVM 上直接執行 Solidity 智能合約,以支持更復雜的鏈上邏輯。

  1. 訪問歷史狀態:在 zkVM 中訪問歷史以太坊狀態,爲數據分析和驗證提供更廣泛的資源。

  1. 突破計算限制:使用 continuations 進行計算,不受區塊大小或交易數據大小的限制。

  1. 確保鏈下計算的安全性:保證鏈下計算的安全性與鏈上執行同等可靠。

  1. 經驗證的 zkVM:利用第一個經多個合作伙伴嚴格測試並用於生產環境的 zkVM。

  1. 私有計算:進行以太坊狀態的私有計算,增強數據保護。

  1. 開源靈活性:通過開源代碼庫實現,確保靈活性,擺脫供應商限制。

Steel 的引入爲開發者在現有區塊鏈技術中融入先進的零知識證明技術提供了有力工具,推動了區塊鏈應用開發的進一步革新。

無縫集成並節省成本

使用 Steel,執行視圖調用像指定所需的 Solidity 方法一樣簡單。無論是檢索 ERC-20 代幣餘額 (example) 還是訪問以太坊狀態等各個方面,Steel 都可以通過與 RISC Zero zkVM 無縫集成來簡化流程,同時確保安全性和效率。測試表明,Steel 有能力在單個視圖調用中處理超過 100K SLOAD 操作,這節省了主網上數千美元的 Gas 費用。我們可以使用 Bonsai 在大約 15 分鐘內證明它,這至少需要 210M 的 Gas,超出區塊限制 7 倍。

示例:ERC20 balanceOf

下面的代碼片段演示了使用 Steel 證明以太坊上部署的 ERC-20 合約的特定地址餘額的過程。此示例展示了開發人員如何利用 Steel 在 zkVM 內與以太坊鏈上數據進行交互。完整代碼可在此處查看。

定義視圖函數簽名

首先,使用 sol! 宏來定義 ERC-20 的 balanceOf 函數簽名。這將解析 Solidity 語法以生成相應的 Rust 結構體,該結構體實現了 SolCall trait,可用於調用 balanceOf 方法,該方法接受一個賬戶地址並返回關聯的 ERC-20 代幣餘額。

準備調用

接下來,通過用目標賬戶地址實例化 balanceOfCall 結構體來設置調用。同時,爲希望查詢的合約地址和調用者的地址定義常量。

在 Main 中執行調用

主函數在 zkVM 中執行,生成零知識證明。它首先讀取輸入環境,然後構造一個 ViewCallEnv 對象,確保當前狀態與預期的狀態根匹配。在提交相關區塊哈希和編號後,執行視圖調用,並打印餘額。

原理

Steel 簡化了在 RISC Zero zkVM 中執行 Solidity 代碼的流程,通過三個清晰的步驟來實現代碼的證明:

  1. 預飛行階段:這一階段通過向以太坊的RPC節點發起視圖調用來啓動,此過程會緩存所需的存儲槽,並根據查詢需求填充EVM數據庫。所有的存儲槽都是通過視圖調用的執行過程自動發現和獲取的。

  1. 存儲驗證:此步驟涉及對存儲完整性的檢查,確保EVM數據庫中的數據與區塊鏈的狀態根一致,從而驗證數據的合法性。

  1. Solidity執行:在 RISC Zero zkVM 內部的EVM上執行指定的Solidity函數,確保代碼按預期運行。

通過這三個步驟,Steel 在 RISC Zero zkVM 中提供了一個高效且可靠的方法來證明並執行 Solidity 代碼,極大地簡化了整個過程。

這與存儲證明有何不同?

使用傳統的存儲證明,開發人員必須手動選擇其智能合約使用的存儲槽,並重新實現智能合約邏輯。而使用 Steel,所有存儲槽都會根據視圖調用執行自動發現和獲取。這爲開發人員節省了大量時間,減少了實施錯誤的可能性,從而減少了出現安全漏洞的機會。

獲取已驗證的區塊哈希

在以太坊智能合約中使用 blockhash 操作碼進行驗證時,驗證的 commitment 必須引用不超過 256 個區塊舊的區塊哈希。考慮到平均區塊時間爲 12 秒,這就設置了一個約爲 50 分鐘的狹窄時間範圍,用於完成證明生成並確認驗證交易已包含在一個區塊中。

當需要在鏈上獲取一個早於 256 個區塊的已驗證的區塊哈希時,可以使用以下幾種策略之一:

  • 當預先知道將需要的區塊哈希時(例如,在發起治理提案時),可以將該區塊哈希保存到合約狀態中。

  • 另一種方法是使用 RISC Zero 來證明從查詢的區塊到最近的 256 個區塊中的一個區塊的哈希鏈。

鏈上應用程序的未來

設想未來鏈下計算將與鏈上驗證無縫集成。 Steel 使開發人員能夠在 zkVM 內可靠地訪問和計算以太坊的完整歷史,從而能創建出下一代數據豐富且功能更強大的鏈上應用程序,爲實現這一願景做出不小的貢獻。

作者:TechubNews;來自鏈得得內容開放平臺“得得號”,本文僅代表作者觀點,不代表鏈得得官方立場凡“得得號”文章,原創性和內容的真實性由投稿人保證,如果稿件因抄襲、作假等行爲導致的法律後果,由投稿人本人負責得得號平臺發佈文章,如有侵權、違規及其他不當言論內容,請廣大讀者監督,一經證實,平臺會立即下線。如遇文章內容問題,請聯繫微信:chaindd123