
RISC Zero SteelはどのようにしてイーサリアムのZK採用を加速するのか?
TechFlow厳選深潮セレクト

RISC Zero SteelはどのようにしてイーサリアムのZK採用を加速するのか?
SteelはRISC Zeroとイーサリアムを接続し、ZKを採用することで、開発者がイーサリアムのGas手数料や制限を回避できるようにします。
編集:Alex Liu、Foresight News
イーサリアムの成功により、活発な非中央集権型アプリケーション(dApp)エコシステムが育成されてきました。しかし、そのスケーラビリティ課題もますます顕著になっています。開発者たちは難しい選択を迫られています。アプリケーションの機能やデータ豊かさを制限するか、それとも高額なGas手数料とGas使用量の制限に耐えるかです。もし開発者がこれらの制約を回避できる手段を持てるとしたらどうでしょうか?
Steel:RISC Zero とイーサリアムをつなぐ架け橋
RISC Zeroは主要なzkVMプロバイダーの一つです。zkEVMという言葉をよく耳にするものの、「zkVM」という一文字違う用語が何を意味するのか分からない場合は、こちらの記事を参照してください。RISC Zeroは最新のライブラリとして「Steel」をリリースしました。これはAlloyに基づくビュー呼び出し証明ライブラリであり、開発者がイーサリアムL1や他のEVMチェーンとやり取りする方法に大きな変革をもたらします。ゼロ知識証明(ZK)と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は単一のビュー呼び出しで10万を超えるSLOAD操作を処理でき、メインネット上で数千ドルのGas費用を節約できます。Bonsaiを使えば約15分で証明が完了しますが、これには少なくとも2.1億Gasが必要であり、ブロック上限の7倍以上に達します。
例:ERC20 balanceOf
以下のコード断片は、Steelを使ってイーサリアム上にデプロイされたERC-20コントラクトの特定アドレスにおける残高を証明するプロセスを示しています。この例では、開発者がどのようにSteelを利用してzkVM内でイーサリアムのオンチェーンデータとやり取りできるかを紹介します。完全なコードはこちらで確認できます。
ビュー関数のシグネチャを定義
まず、sol!マクロを使ってERC-20のbalanceOf関数のシグネチャを定義します。これによりSolidityの構文が解析され、対応するRust構造体が生成されます。この構造体はSolCallトレイトを実装しており、アカウントアドレスを受け取り、関連するERC-20トークン残高を返すbalanceOfメソッドの呼び出しに使用できます。

呼び出しの準備
次に、ターゲットアカウントアドレスでbalanceOfCall構造体をインスタンス化して呼び出しを設定します。同時に、照会したいコントラクトアドレスおよび呼び出し元アドレスに対して定数を定義します。

main関数内で呼び出しを実行
main関数はzkVM内で実行され、ゼロ知識証明を生成します。まず入力環境を読み込み、ViewCallEnvオブジェクトを構築して、現在の状態が期待される状態ルートと一致していることを保証します。関連するブロックハッシュと番号をコミットした後、ビュー呼び出しが実行され、残高が表示されます。

その仕組み
Steelは、RISC Zero zkVM内でSolidityコードを証明するプロセスを次の3つのステップに分けて簡素化しています:
-
プリフライト段階:イーサリアムRPCノードに対してビュー呼び出しを行い、必要なストレージスロットをキャッシュします。この段階では、呼び出しに必要なデータのみがEVMデータベースに読み込まれます。すべてのストレージスロットはビュー呼び出しの実行に基づき自動的に発見・取得されます。
-
ストレージ検証:EVMデータベース内のデータがブロックチェーンの状態ルートと整合していることを確認するため、ストレージの完全性チェックを実施します。これによりデータの正当性が保証されます。
-
Solidityの実行:RISC Zero zkVM内のEVM上で指定されたSolidity関数を実行します。
従来のストレージ証明との違い
従来のストレージ証明では、開発者が自身のスマートコントラクトが使用するストレージスロットを手動で選択し、コントラクトロジックを再実装する必要がありました。一方、Steelでは、ビュー呼び出しの実行に基づいてすべてのストレージスロットが自動的に発見・取得されます。これにより開発者の作業時間は大幅に削減され、実装ミスやセキュリティ脆弱性のリスクも低減されます。
検証済みブロックハッシュの取得
イーサリアムのスマートコントラクト内でblockhashオペコードを使って検証を行う場合、検証対象のcommitmentは直近256ブロック以内のブロックハッシュを参照しなければなりません。平均ブロック生成時間が12秒であることを考慮すると、証明生成を完了し、検証トランザクションがブロックに含まれるまでの時間枠は約50分という狭い範囲に限定されます。
256ブロックよりも前の、検証済みブロックハッシュをオンチェーンで取得する必要がある場合は、以下のいずれかの戦略を採用できます:
-
必要なブロックハッシュが事前にわかっている場合(例:ガバナンス提案の開始時など)、そのブロックハッシュをコントラクトの状態に保存しておくことができます。
-
別の方法として、RISC Zeroを使用して、照会対象のブロックから直近256ブロック内のいずれかのブロックまでのハッシュチェーンを証明する方法があります。
オンチェーンアプリケーションの未来
将来、オフチェーンの計算がオンチェーンの検証とシームレスに統合される世界を想像してください。Steelは、開発者がzkVM内でイーサリアムの全履歴に信頼性高くアクセス・計算できるようにすることで、データが豊かでより高度な機能を持つ次世代オンチェーンアプリケーションの創造に大きく貢献しています。
TechFlow公式コミュニティへようこそ
Telegram購読グループ:https://t.me/TechFlowDaily
Twitter公式アカウント:https://x.com/TechFlowPost
Twitter英語アカウント:https://x.com/BlockFlow_News














