はじめに

初めまして。 CryptoGamesというブロックチェーンゲーム企業でエンジニアをしている cardene(かるでね) です! スマートコントラクトを書いたり、フロントエンド・バックエンド・インフラと幅広く触れています。

代表的なゲームはクリプトスペルズというブロックチェーンゲームです。

今回は、ENSからWeb3 URL形式のコントラクトアドレスへのマッピングを提案しているERC6821についてまとめていきます!

以下にまとめられているものを翻訳・要約・補足しながらまとめていきます。

他にも様々なEIPについてまとめています。

概要

この規格では、Ethereum Name Service(ENS)から、ERC4804で定義されているアドレスへのマッピングを定義しています。

ERC4804は、コントラクトから「web3://cardene.eth/」のように、他のコントラクトにアクセスできる仕組みを提案している規格です。 「web3://cardene.eth/article/qiita」のようにすることでパラメータを渡すこともできます。 より詳しくは以下の記事を参考にしてください。

動機

ERC4804では、web3://から始まるURIを定義してコントラクトに紐付けています。 このURIとENSを紐づけて管理できるコントラクトを提案しています。

仕様

web3://URIに含まれるcontractNameとchainidを使用して以下の手順でコントラクトのアドレスを見つけます。

  1. 指定されたchainid上のENSリゾルバでcontentcontractテキストレコードを検索します。

    • チェーンに ENS が存在しない場合や無効なETHアドレスの場合はエラーを返します。
  2. contentcontractテキストレコードが存在しない場合、ERC137によって名前に紐づいたアドレスを使用します。

  3. 取得したアドレスがゼロアドレス(0x0000000000000000000000000000000000000000)の場合は「address not found」というエラーを返します。

  4. contentcontractテキストレコードは、0xプレフィックス付きの16進数のEthereumアドレス、または ERC3770チェーン固有のアドレスを返すことがあります。

    • アドレスがERC3770チェーン固有のアドレスである場合、メッセージを呼び出す時のchainidは ERC3770アドレスに指定されたchainid(ethやarbなど)によって上書きされます。

ERC137については以下の記事を参考にしてください。

ERC3770については以下の記事を参考にしてください。

補足

この規格は、ERC4804の設計原則に従い、contenthashの代わりにERC3770のチェーン固有アドレスを持つcontentcontractテキストレコードを使用して人が読みやすいようにしています。 このテキストレコードを使用することで、TTL(Time To Live)などフィールドを追加することが可能になります。

引用

Qi Zhou (@qizhou), Qiang Zhu (@qzhodl), "ERC-6821: Support ENS Name for Web3 URL [DRAFT]," Ethereum Improvement Proposals, no. 6821, April 2023. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-6821.

最後に

今回は「ENSからWeb3 URL形式のコントラクトアドレスへのマッピングを提案しているERC6821」についてまとめてきました! いかがだったでしょうか?

質問などがある方は以下のTwitterのDMなどからお気軽に質問してください!

他の媒体でも情報発信しているのでぜひ他も見ていってください!