見出し画像

Steel:RISC ZeroによるAlloyベースのview call proof libraryについて

この記事は「Introducing Steel: A Hardened Alloy, Connecting RISC Zero to Ethereum」を日本語訳したものです。

Ethereum の成功により、分散型アプリケーションのエコシステムが活性化しましたが、スケーラビリティの課題がますます顕著になってきました。開発者は、アプリケーションの機能とデータの豊富さを制限するか、過剰なガス料金やガス制限の負担を負うかという難しい選択を迫られています。開発者がこれらの制限を回避する方法があったらどうでしょうか?

RISC Zero によるAlloyベースのview call proof libraryであるSteel は、開発者が Ethereum L1 または EVM ベースのチェーンとcallする方法に大きな変化をもたらします。ゼロ知識証明と RISC Zero zkVM の力を活用することで、Steel は開発者がview callを実行し、スケーラブルで安全かつ経済的に効率的な方法で Ethereum のstateを証明可能な形で読み取り、計算できるようにします。


Solidityの利便性とZKのパワーを融合

Steel は、Ethereum のアプリ開発とゼロ知識テクノロジーの間のギャップを埋め、開発者がスマート コントラクトで ZK のパワーをこれまで以上に簡単に活用できるようにします。RISC Zero zkVM の機能と組み合わせることで、Steel は開発者が Ethereum L1 または EVM と同等のチェーン上で、より安全でスケーラブルかつ効率的なアプリケーションを構築できるようにします。
Steel を使用すると、開発者は次のことが可能になります。

  • より洗練されたオンチェーンロジックを実現するために、zkVM内で直接Solidityスマートコントラクトを実行します。

  • zkVM 内の過去の Ethereum stateにアクセスする

  • continuationsを使用してブロックとトランザクションのサイズ制限なしで計算する

  • オンチェーンで実行されているかのように、安全で信頼性の高いオフチェーン計算を保証する

  • さまざまなパートナーによって厳密にテストされ、使用されている、最初の本番環境対応のzkVMを活用

  • Ethereum 状態を介したプライベート計算

  • ベンダーロックインのないオープンソースコードベースで柔軟性を維持

シームレスな統合とコスト削減

Steel では、view callを実行するのは、必要な Solidity メソッドを指定するのと同じくらい簡単です。ERC-20 トークン残高 () を取得する場合でも、Ethereum の状態のあらゆる側面にアクセスする場合でも、Steel はプロセスを簡素化すると同時に、RISC Zero zkVM とのシームレスな統合によりセキュリティと効率性を確保します。当社のテストでは、Steel は 1 回のview callで 10 万件を超える SLOAD 操作を処理できることが示されており、メインネットでのガス料金を数千ドル節約できる可能性があります。Bonsai を使用すると、約 15 分でこれを証明できます。これには少なくとも 2 億 1,000 万ガスが必要となり、ブロック制限を 7 倍超えます。

例: ERC20 balanceOf

以下のコード スニペットでは、Steel を使用して Ethereum にデプロイされた ERC-20 コントラクトの特定のアドレスの残高を証明するプロセスを示しています。この例では、開発者が Steel を利用して zkVM の範囲内でオンチェーン Ethereum データとやり取りする方法を示しています。
完全なコードは、こちらで確認できます

View Function Signatureの定義

まず、 sol!マクロを使用してERC-20 balanceOf function signatureを定義します。これにより、Solidity 構文が解析され、 SolCall特性を実装する対応する Rust 構造体が生成されます。この構造体を使用して、アカウント アドレスを受け取り、関連付けられた ERC-20 トークン残高を返すbalanceOfメソッドを呼び出すことができます。

Callの準備

次に、対象のアカウント アドレスを使用してbalanceOfCall structをインスタンス化して、callを設定します。また、照会するコントラクトのアドレスとcallerのアドレスの定数を定義します。


メインでのCallの実行

メイン関数は zkVM で実行され、ゼロ知識証明を生成します。まず入力環境を読み取り、次にViewCallEnvオブジェクトを構築して、現在の状態が予想されるstate rootと一致することを確認します。関連するブロック ハッシュと番号にコミットした後、view callが実行され、balanceが出力されます。


使い方

Steel は、RISC Zero zkVM での Solidity コード実行を証明するプロセスを 3 つの簡単なステップで簡素化します。

  1. Pre-flight Phase: Ethereum RPC ノードへのview callを行ってPre-flightを開始します。これにより、必要なストレージスロットがキャッシュされ、クエリに必要なデータのみが EVM データベースに入力されます。すべてのストレージ スロットは、view callの実行に基づいて自動的に検出され、取得されます。

  2. Storage Verification: ストレージ整合性チェックを実行し、EVM データベース内のデータがブロックチェーンのstateルートと一致していることを確認し、その正当性を確認します。

  3. Solidity Execution: RISC Zero zkVM 内の EVM 上で指定された Solidity 関数を実行します。

これはstorage proofsとどう違うのでしょうか?

従来のstorage proofsでは、開発者はスマート コントラクトが使用するストレージ スロットを手動で選択し、スマート コントラクト ロジックを再実装する必要があります。Steel では、view callの実行に基づいてすべてのストレージ スロットが自動的に検出され、取得されます。これにより、開発者の時間が大幅に節約され、実装エラーの余地が減り、セキュリティの脆弱性の可能性が減ります。


検証されたブロックハッシュを取得する

Ethereum スマート コントラクトでブロックハッシュ オペコードを検証に使用する場合、検証のコミットメントは 256 ブロック以内のブロックハッシュを参照する必要があります。平均ブロック時間は 12 秒であるため、証明生成を完了し、検証トランザクションがブロック内に含まれていることを確認するのに約 50 分という短い時間枠が設定されます。
256 ブロックより古い検証済みブロック ハッシュがオンチェーンで必要な場合、いくつかの戦略を使用できます。

  • 必要となるブロック ハッシュが事前にわかっている場合 (ガバナンスの提案を開始する場合など)、そのブロック ハッシュをコントラクト状態に保存できます。

  • もう 1 つのアプローチは、RISC Zero を使用して、クエリされたブロックから最新の 256 ブロックまでのハッシュ チェーンを証明することです。

オンチェーンアプリの未来

私たちは、オフチェーン計算とオンチェーン検証がシームレスに統合される未来を思い描いています。Steel は、開発者が zkVM 内で Ethereum の全履歴に証明可能なアクセスと計算を行えるようにすることで、データが豊富でより機能的なオンチェーン アプリケーションの次世代の波を作り出すことで、このビジョンの実現に貢献します。

Steelを始める

Steel は、安価で安全なオンチェーン証明検証とユニバーサル ゼロ知識証明に向けたマイルストーンである zkVM 1.0 のリリースに向けた RISC Zero の取り組みの重要なコンポーネントです。ドキュメント、コード例、およびプロジェクトへの Steel の統合に役立つリソースについては、GitHub リポジトリにアクセスして、今すぐ Steel を使い始めましょう。

Steel Github

Foundry Template

この記事が気に入ったらサポートをしてみませんか?