ENS(Ethereum Name Service)って何?
DNS のブロックチェーン版?と勝手に解釈していましたが、中身について理解していませんでした。note で検索すると ENS に関する記事が最近書かれていたので、私も便乗して書こうと思います。
ENS とは?
ENS とは、Ethereum 上に構築された名前解決サービスです。ENS は、EmerDNS や Handshake、Namecoin などの BNS(Blockchain-based DNS)ソリューションとは異なり、イーサリアム上のスマートコントラクトを活用してドメイン名の登録と解決を管理することで、DNS を補完するソリューションを提案することを目的としています。
ENS の仕事は、「alice.eth」のような人間が読める名前を、Ethereum のアドレス、他の暗号通貨アドレス、コンテンツハッシュ、メタデータなどの機械が読める識別子にマッピングすることです。また、ENS は「逆引き」もサポートしており、正規名やインターフェース記述などのメタデータを Ethereum アドレスに関連付けることが可能です。
DNS と同様に、ENS はドメインと呼ばれるドットで区切られた階層的な名前のシステムで運用され、ドメインの所有者はサブドメインを完全に制御することができます。「.eth」や「.test」といったトップレベルドメインは、レジストラと呼ばれるスマートコントラクトが所有し、サブドメインの割り当てを管理するルールを指定します。誰でも、このレジストラのコントラクトによって課されたルールに従うことで、自分自身の使用のためにドメインの所有権を得ることができます。ENS は、ユーザーが既に所有している DNS 名を ENS で使用するためにインポートすることもサポートしています。
ENS は階層構造になっているため、どのレベルのドメインを所有する人でも、自分自身や他人のためにサブドメインを自由に設定することができます。例えば、アリスが「alice.eth」を所有している場合、「pay.alice.eth」を作成し、好きなように設定することができます。
ENS の構成要素
レジストリ
ENS レジストリは、すべてのドメインとサブドメインのリストを保持し、それぞれについて 3 つの重要な情報を保存する単一のスマートコントラクトで構成されています。
ドメインの所有者
そのドメインのリゾルバ
ドメイン配下の全レコードのキャッシング有効期限
ドメインの所有者は、外部アカウント(ユーザ)もしくはスマートコントラクトである場合があります。ENS レジストリのドメインの所有者は、以下のことが可能です。
ドメインのリゾルバと TTL の設定
ドメインの所有権を他のアドレスに移転する
サブドメインの所有権変更
ENS レジストリは意図的に単純化されており、名前とそれを担当するリゾルバとの対応付けのためだけに存在します。
レジストラ
レジストラは、対象のドメインを所有し、コントラクトで定義されたルールセットに従うユーザーに対してそのドメインのサブドメインを発行するスマートコントラクトにすぎません。
リゾルバ
リゾルバは、名前をアドレスに変換する実際のプロセスを行います。関連する規格を実装しているコントラクトであれば、ENS でリゾルバとして動作することができます。
ENS での名前解決
ENS の名前解決は、2 つのステップで行われます。名前解決したいユーザは、レジストリに問い合わせて正しいリゾルバを見つけ、次にリゾルバから解決結果を得る必要があります。
上記の例では、「foo.eth」が指す Ethereum アドレスを見つけようとしています。まず、レジストリに「foo.eth」を担当するリゾルバを問い合わせます。次に、そのリゾルバに対して「foo.eth」のアドレスを問い合わせます。
参考文献
まとめ
ENS の公式ドキュメントを軽く読んでいますが、気になることがどんどんでてきて余計にわからなくなりました。笑
肝心なところが書かれていない気がしてなりません(例えば、名前解決を要求したクライアントはどうやって真正性を確認しているのか)。この辺りはソースを読めってことなのか?(読みたくない)
今後も ENS 関連の記事を書いていきます。今のところ、以下のようなものを用意しています。
ENS 用 Python ライブラリ「web3.py」
ENS の歴史
ENS の普及状況と利用状況
ENS のセキュリティ問題
この記事が気に入ったらサポートをしてみませんか?