編輯:Alex Liu ,Foresight News

以太坊成功帶來了一個蓬勃發展的去中心化應用生態,但它的可擴展性挑戰也日益嚴峻。開發人員面臨著一個艱難的選擇:限制其應用程式的功能和資料豐富性,或忍受高昂的Gas 費用和Gas 用量限制。如果開發人員有辦法繞過這些限制,會怎麼樣?

Steel,連結RISC Zero 和以太坊

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,開發人員能夠:

  • 直接在zkVM 內執行Solidity 智能合約,相容於更複雜的鏈上邏輯
  • 存取zkVM 內的歷史以太坊狀態
  • 使用continuations 進行計算,不受區塊和交易資料大小的限制
  • 確保鏈下計算像在鏈上執行一樣安全可靠
  • 利用經過多個合作夥伴嚴格測試和使用的第一個勝任生產環境的zkVM
  • 以太坊狀態的私有計算
  • 透過開源程式碼庫保持靈活性,不受供應商限制

無縫整合並節省成本

使用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 tr​​ait,可用於調用balanceOf 方法,該方法接受一個帳戶地址並傳回關聯的ERC-20 代幣餘額。

RISC Zero Steel 如何加速以太坊的 ZK 採用​​?

準備調用

接下來,透過以目標帳戶位址實例化balanceOfCall 結構體來設定呼叫。同時,為希望查詢的合約位址和呼叫者的位址定義常數。

RISC Zero Steel 如何加速以太坊的 ZK 採用​​?

在Main 中執行調用

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

RISC Zero Steel 如何加速以太坊的 ZK 採用​​?

它的原理

Steel 透過三個步驟在RISC Zero zkVM 中證明Solidity 程式碼,簡化了執行的流程:

  1. 預飛行階段:透過對以太坊RPC 節點進行視圖呼叫來啟動預飛行,會快取必要的儲存槽,僅使用查詢所需的資料填入EVM 資料庫。所有儲存槽是根據視圖呼叫執行自動發現和取得的。
  2. 儲存驗證:進行儲存完整性檢查,確保EVM 資料庫中的資料與區塊鏈的狀態根對齊,從而確認其合法性。
  3. Solidity 執行:在RISC Zero zkVM 內的EVM 上執行給定的Solidity 函數。

這與儲存證明有何不同?

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

獲取已驗證的區塊哈希

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

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

  • 當預先知道將需要的區塊哈希時(例如,在發起治理提案時),可以將該區塊哈希保存到合約狀態中。
  • 另一種方法是使用RISC Zero 來證明從查詢的區塊到最近的256 個區塊中的一個區塊的哈希鏈。

鏈上應用程式的未來

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