はじめに

『DApps開発入門』という本や色々記事を書いているかるでねです。

今回は、ENSにメールやSNSアカウントなどの自由なテキスト情報を紐づけられる仕組みを提案しているENSIP5についてまとめていきます!

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

他にも様々なEIP・BIP・SLIP・CAIP・ENSIPについてまとめています。

概要

ENSIP5は、Ethereum Name Service(ENS)において「任意のキーと値の組み合わせ(key-value)」を保存・参照できるリゾルバの仕組みを定義しています。 これにより、ENS名を持つユーザーは自分の名前にメールアドレスやウェブサイトのURLなど、追加の情報を紐づけられるようになります。 ENSは本来、アドレスやコントラクトといった機械的なデータを人間が扱いやすい名前に変換する役割を持っていますが、この仕組みを使えば単なる名前解決だけでなく、人が理解しやすい付加情報も提供できるようになります。

動機

ENSは技術的には便利な仕組みですが、利用する人にとっては「人間が読んで理解できる情報」が一緒に紐づいている方が価値があります。 例えば、名前にメールアドレスや連絡用のURLを登録しておけば、他の人がそのENS名を見たときにすぐに必要な情報を確認できます。 このようなメタデータは、デバッグやシステム管理、利用者への情報提供といった幅広い場面で役立ちます。 つまり、ENSを「ただの名前解決システム」から「人と情報をつなげる仕組み」へと拡張することを目的としています。

仕組み

ENSIP5では、ENS(Ethereum Name Service)の名前に対して「任意の文字列データ(テキスト)」を関連付けるための新しいリゾルバインターフェースを定義しています。 これにより、ENS名を通じてメールアドレスやプロフィール情報、外部サービスのアカウント名などを取得できるようになります。 テキストデータはUTF-8形式で保存され、存在しない場合は空文字を返します。

リゾルバインターフェース

新しく定義されたインターフェースは以下です。

javascript
interface IERC634 {
  /// @notice ENS名に紐づけられたキーのテキストデータを返す
  /// @param node ENS名のnodehash
  /// @param key 検索したいキー
  /// @return text テキストデータ
  function text(bytes32 node, string key) view returns (string text);
}

このインターフェースのEIP165での識別子(interface ID)は 0x59d1d43c です。

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

キーの種類

テキストデータを保存する時には「キー」が必要になります。 キーは大きく分けて「グローバルキー」、「サービスキー」、「レガシーキー」の3種類があります。

グローバルキー

グローバルキーは、共通的に使える基本情報を登録するためのキーです。 小文字・数字・ハイフンのみを使用します。 例えば、アバター画像のURLや説明文、メールアドレスなどを登録できます。 具体的には以下のようなキーが定義されています。

  • avatar アバターやロゴの画像URL。
  • description ENS名に関する説明文。
  • display 表示用の標準名(大文字・小文字の違いは無視される)。
  • email メールアドレス。
  • keywords カンマ区切りのキーワード一覧。
  • mail 物理的な住所。
  • notice 注意書きや告知。
  • location 場所の情報(例:「Tokyo, Japan」)。
  • phone 電話番号(国際規格E.164形式)。
  • url ウェブサイトのURL。

サービスキー

サービスキーは、特定のサービスやプラットフォームに紐づけるためのキーです。 形式は「逆ドット表記」で、最低1つのドットを含める必要があります。 これにより、サービスごとに一意なキーを定義でき、他と衝突する心配がありません。

例として、以下のサービス向けキーが推奨されています。

  • com.github GitHubのユーザー名。
  • com.linkedin LinkedInのユーザー名。
  • com.twitter Twitterのユーザー名。
  • org.telegram Telegramのユーザー名。

さらに階層を分けることも可能で、例えば「com.example.groups.public」のように細かく分類することができます。

レガシーキー

過去のバージョンで使われていた古いキーも存在します。 利用は広くありませんが、互換性を重視するアプリケーションはフォールバックとして利用することができます。

  • vnd.github(現行は com.github)
  • vnd.peepeth(現行は com.peepeth)
  • vnd.twitter(現行は com.twitter)

補足

ENSIP5では、特定の用途ごとに細かくレコードの種類を定義するのではなく、汎用的に利用できる「キーと値の組み合わせ」を採用しています。 例えば「メールアドレス専用のレコード」、「ウェブサイトURL専用のレコード」といった形式を無数に追加するのではなく、DNSの「TXTレコード」の仕組みを参考にして、どんな情報でも格納できる柔軟な形式を導入しました。

この方法により、新しい用途やサービスが登場したとしても、リゾルバ(名前解決の仕組み)を修正する必要がなくなります。 開発者やサービス提供者は自分たちの目的に合ったキーを自由に定義でき、ENSの仕組みに依存せずに拡張していけます。 つまり、ENSは標準的な情報(メールやURLなど)に対応しつつ、将来的な発展やカスタム用途にも対応できる柔軟性を持たせているのです。

最後に

今回は「ENSにメールやSNSアカウントなどの自由なテキスト情報を紐づけられる仕組みを提案しているENSIP5」についてまとめてきました! いかがだったでしょうか?

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

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