この記事は「Securing cross-chain communication from Ethereum to the Internet Computer with an on-chain Light Client」を翻訳/引用しています。
インターネットコンピュータ(ICP) は、マルチチェーンの世界における分散型アプリケーションとサービスのハブとなることを目指して進化を続けています。ICP固有のチェーン キー署名により、キャニスター スマート コントラクトはトランザクションに署名でき、 HTTPS アウトコールにより他のチェーンから状態を取得できます。
高価値アプリケーションのセキュリティを強化するために、Eiger のチームは Ethereum ライト クライアントを ICP に移植する作業に取り組んできました。
ライトクライアントとHeliosとは何ですか?
ライト クライアントは、ブロックチェーン ノードがブロックチェーンの履歴全体をダウンロードして検証することなく、別のブロックチェーンとやり取りできるようにする特殊なソフトウェアです。代わりに、暗号化証明と限られたデータのサブセットを使用してトランザクションを検証し、関連情報にアクセスします。ライト クライアントは、効率的で高速になるように設計されているため、インターネット コンピューターなどのリソースが制限された環境に適しています。
Helios はRust で実装された初期の Ethereum 軽量クライアントであり、この統合の中心です。これは、インターネット コンピュータのキャニスター スマート コントラクトに統合して、Ethereum ブロックチェーンとのやり取りを可能にするソフトウェア コンポーネントです。Helios は、Merkle 証明と同期委員会を活用して、Ethereum の状態とイベントを効率的に検証し、完全なブロックチェーン検証の必要性を排除します。この軽量アプローチは、インターネット コンピュータのアーキテクチャと目標に完全に一致しています。
ICP でライト クライアントを使用する理由
ICP は、ICP ノードと同じ場所にある Ethereum ノードを実行することで、Ethereum ネットワークとのネイティブ統合を目指しています。ただし、現在の統合は、Infura や Alchemy などの 1 つまたは複数の RPC API プロバイダーへの JSON-RPC 呼び出しに基づいています。Ethereum ライト クライアントを追加すると、RPC プロバイダーから取得されたすべてのデータが暗号的に検証されるため、この統合のセキュリティが向上します。
ICP への Helios の移植経験
ICP は、強力な WASM ベースのコンピューティング プラットフォームを提供します。これにより、開発者はさまざまなプログラミング言語でスマート コントラクトを記述でき、アプリケーションを最初から書き直すことなく、Rust で実装された Helios などのアプリケーションを移植できるようになります。
それでも、Helios を ICP に移植するには、互換性と効率性を確保するためにいくつかの重要な変更と最適化が必要でした。注目すべき変更点は次のとおりです。
Helios をアップグレードして、Rust の安定したツールチェーンと互換性を持たせます。
ブラウザ関連の WebAssembly (WASM) コンポーネントへの依存関係を削除します。
wasm と互換性のない Tokio 関連のコードを削除します。
ethers-core ライブラリを活用し、ethers-providers を削除します。
wasm をターゲットにするときに、 reqwest をHTTPS アウトコールに置き換えます。
これらの変更は、Helios を ICP の独自の要件に適合させ、インターネット コンピュータ上の Ethereum キャニスターに適したコンポーネントにするために行われました。
使い方は?
ICP 上の Ethereum キャニスターを使用して Ethereum ブロックチェーン データにアクセスするには、次の手順に従います。
Ethereum キャニスターの実行と使用:
dfx start --clean --background --artificial-delay 100 # デプロイdfx deploy # 起動dfx canister call ethereum_canister setup 'record { network = variant { Mainnet }; execution_rpc_url = "https://ethereum.publicnode.com" ; consensus_rpc_url = "https://www.lightclientdata.org" ; }' # 利用dfx canister call ethereum_canister erc20_balance_of 'record { contract = "0xdAC17F958D2ee523a2206206994597C13D831ec7" ; account = "0xF977814e90dA44bFA03b6295A0616a897441aceC" ; }' (2_100_000_000_000_000 : nat) # キャニスターの出力
エンドツーエンドのキャニスター テストの実行:
dfx start --clean --background --artificial-delay 100 cargo test --target x86_64-unknown-linux-gnu # または nextest を使用するcargo nextest run --target x86_64-unknown-linux-gnu
私たちの目標は、Ethereum キャニスターが Ethereum データとやり取りするための包括的な API を提供することです。利用可能な機能とその使用方法の詳細については、candid.didファイルの API 定義を参照してください。
まとめ
インターネット コンピュータに Ethereum ライト クライアント (具体的には Helios) を実装することで、キャニスター、アプリ、サービス、スマート コントラクトが Ethereum データに独立してアクセスできるようにして、Ethereum からの安全なデータ取得を保証することにより、分散型アプリケーションとサービスを強化することを目指しています。また、インターネット コンピュータの独自の機能と、他の分散型プラットフォームとは比較にならないアプリケーションを実行できる強力なコンピューティング環境も紹介します。
Comments