はじめに
初めまして。
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
を使用して以下の手順でコントラクトのアドレスを見つけます。
-
指定された
chainid
上のENSリゾルバでcontentcontract
テキストレコードを検索します。- チェーンに ENS が存在しない場合や無効なETHアドレスの場合はエラーを返します。
-
contentcontract
テキストレコードが存在しない場合、ERC137によって名前に紐づいたアドレスを使用します。 -
取得したアドレスがゼロアドレス(
0x0000000000000000000000000000000000000000
)の場合は「address not found」というエラーを返します。 -
contentcontract
テキストレコードは、0x
プレフィックス付きの16進数のEthereumアドレス、または ERC3770チェーン固有のアドレスを返すことがあります。- アドレスがERC3770チェーン固有のアドレスである場合、メッセージを呼び出す時の
chainid
は ERC3770アドレスに指定されたchainid
(eth
やarb
など)によって上書きされます。
- アドレスがERC3770チェーン固有のアドレスである場合、メッセージを呼び出す時の
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などからお気軽に質問してください!
他の媒体でも情報発信しているのでぜひ他も見ていってください!