はじめに
初めまして。
CryptoGamesというブロックチェーンゲーム企業でエンジニアをしている cardene(かるでね) です!
スマートコントラクトを書いたり、フロントエンド・バックエンド・インフラと幅広く触れています。
代表的なゲームはクリプトスペルズというブロックチェーンゲームです。
今回は、ERC5219を拡張して、複数のチャンクで構成されたWeb3URLリソースを取得する仕組みを提案しているERC7617についてまとめていきます!
以下にまとめられているものを翻訳・要約・補足しながらまとめていきます。
他にも様々なEIPについてまとめています。
概要
この規格は、ERC6860のweb3URL標準の文脈において、ERC6944のresolveモードを拡張する仕組みを提案しています。
ERC6860については以下の記事を参考にしてください。
ERC6944については以下の記事を参考にしてください。
具体的には、web3-next-chunkという新しいオプションのHTTPヘッダーが導入され、このヘッダーには次のデータチャンクを指すweb3URLが含まれます。
レスポンスを返すときに、次のデータチャンクのURLを含めることで、呼び出し元が指定されたURLにアクセスしてデータを取得することができます。
この処理をweb3-next-chunkヘッダーが存在する限り繰り返すことで、大量のデータを一度に送らずにチャンクごとに分割して取得することができます。
例えば、大きなファイルをダウンロードする時、呼び出し元は初回のrequest()
呼び出しを行い、最初のチャンクとともにweb3-next-chunkヘッダーを返します。
呼び出し元はこのヘッダーのURLにアクセスし、次のチャンクを取得するプロセスを繰り返します。
このようにすると、特にオンチェーンにおいては一度に返せるデータに制限があるため便利です。
ERC6944は、ERC5219を拡張していて、request()
メソッドの呼び出しはERC5219に関連する部分です。
ERC5219については以下の記事を参考にしてください。
動機
Ethereum RPCエンドポイントにはガスコストの制限があり、大容量のコンテンツを提供するときに制限に達してしまう可能性があります。
この規格で提案されているチャンク機能を実装することで、大容量のデータを小分けにした任意のサイズのコンテンツを提供できるようになります。
フルオンチェーンなどで特に活用できそうです。
仕様
この規格を使用することで、ERC6944のresolveモードを拡張して、request()
メソッドで返されるheaders
とKeyValue
配列に新しいオプションのHTTPヘッダーであるweb3-next-chunkが追加されます。
web3-next-chunkの値は、完全なweb3URLか相対URLのcどちらかで、呼び出すコントラクトはERC6944を実装している必要があります。
最初のrequest()
呼び出しでデータをリクエストすると、HTTPステータスコード、HTTPヘッダー、bodyを返します。
もしweb3-next-chunkヘッダーが存在する場合、まずはURLを無効か有効か検証します。
呼び出すこんとらくとがERC6944を実装していない場合などはエラーを出して処理を終了させます。
有効の場合は、返されたstatusCode
を無視してERC6944のresolveモードを使用して再度request()
メソッドを呼び出します。
web3-next-chunkヘッダーが存在しなくなるまでこの処理を繰り返します。
これにより、大量のデータを小さなチャンクに分割して小分け実行ができて効率的なデータ転送が可能になります。
補足
次のチャンクの場所をしているするデータの保管場所としてヘッダーが選ばれたのは、ERC6944のrequest()
インターフェースを変更する必要がなく、ヘッダーにweb3URLを追加するだけで良いからです。
これにより、柔軟に次のチャンクの情報を提供できます。
引用
Qi Zhou (@qizhou), Nicolas Deschildre (@nand2), "ERC-7617: Chunk support for ERC-5219 mode in Web3 URL [DRAFT]," Ethereum Improvement Proposals, no. 7617, February 2024. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7617.
最後に
今回は「ERC5219を拡張して、複数のチャンクで構成されたWeb3URLリソースを取得する仕組みを提案しているERC7617」についてまとめてきました!
いかがだったでしょうか?
質問などがある方は以下のTwitterのDMなどからお気軽に質問してください!
他の媒体でも情報発信しているのでぜひ他も見ていってください!