ENSの仕組みと取得方法
はじめに
結構前から気になっていたサービスの一つとして今回はEthereum Name Service (ENS)を紹介しようと思います.簡単な説明をすると,ENSを使用することでインターネットでのDNSのように人間が読める文字列にETHアドレス(0xから始まるアルファベットと数字の羅列)などを変換し面倒なアドレス確認の作業から解放してくれます.昨年にはENSドメイン保有者に対してENSトークンのエアドロップが行われ大変話題になりました(人によっては数万ドルぐらいのトークンが支払われました).
ENSの仕組み
ENSとは、Ethereumブロックチェーン上に実装された分散型、オープン、かつ拡張可能なネーミングシステムのことです。ENSの仕事は、”panda.eth”のような人間が読める文字列を、イーサリアムのアドレス(0x98ab….)、他の暗号通貨アドレス(別にETHだけに限定されていません)、コンテンツハッシュ(IPFSのCIDなど)、メタデータなどの機械が読める識別子にマッピングすることです。ENSは逆解決もサポートしており、正規名やインターフェース記述などのメタデータをEthereumアドレスに関連付けることが可能です。
ENSは、インターネットのDNS(Domain Name Service)と同様の機能をブロックチェーン上に実装することを目的としていますが、イーサリアムのブロックチェーン機能の制約により、そのアーキテクチャは大きく異なっています。DNSと同様に、ENSはドメインと呼ばれるドットで区切られた階層的な名前システムで運用され、ドメインの所有者はサブドメインを制御することができます。
.ethといったトップレベルドメインは、レジストラと呼ばれるスマートコントラクトが所有し、サブドメインの割り当てを管理するルールを指定します。誰でも、このレジストラの契約によって課されたルールに従うことで、個別の用途のためにドメインの所有権を得ることができます。ENSは、ユーザーが既に所有しているwebページのDNS名をENSで使用するためにインポートすることもサポートしています(IPFSと連携させることでブロックチェーン上にwebページをアップすることも可能です)。
ENSは階層構造なので、どのレベルのドメインを所有する人でも、自分自身や他人のためにサブドメインを自由に設定することができます。例えば、私が”panda-mfg.eth”を所有している場合、支払い用のサブドメインとして”pay.panda-mfg.eth”を作成し自由に設定することができます。
ENSはイーサリアムのメインネットワークといくつかのテストネットワークに実装されています。ensjsのようなライブラリ、またはエンドユーザーアプリケーションを使用する場合、それらは自動的にあなたが利用しようとしているネットワークを検出し、そのネットワーク上のENSのデプロイメントを使用します。ENS Manager Appや、ホームページにある多くのENS対応アプリケーションを使って、今すぐENSを試すことができます。
ENSのアーキテクチャ
ENSは主にregistryとresolverという2つの機能で構成されています.概念図は以下のようになります.
ENSの開発文書より引用
ENS registryは一つのスマートコントラクトで構成されていて以下のコアになる3つの重要な情報を保持します.
- ドメインのオーナー
- ドメインのResolver
- ドメイン配下のすべてのレコードのキャッシュ有効期限
ドメインのオーナーは外部アカウントもしくはスマートコントラクトになります.レジストラとは、ドメインを所有し、契約で定義されたルールに従っているユーザーに対して、そのドメインのサブドメインを発行するスマートコントラクトのことです。
ENSレジストリに登録されているドメインの所有者は、以下のことが可能です。
- ドメインのResolverとTTL(Time to Live)*の設定
- ドメインの所有権を他のアドレスへの移行
- サブドメインの所有権変更
ENS registryは意図的に単純化されており、名前からその名前を担当するResolverへのマッピングのためだけに存在します。
Resolverは、名前をアドレスに変換する実際のプロセスを担当します。関連する規格を実装しているスマートコントラクトであれば、ENSでResolverとして動作することが可能です。
暗号通貨アドレス、IPFSコンテンツハッシュなどの各レコードタイプは、 その種類のレコードを提供するためにResolverが実装しなければならない 1つまたは複数のメソッドを定義しています。新しいレコードタイプはEIP標準化プロセスを通じていつでも定義することができ、それをサポートするためにENS registryや既存のResolverに変更を加える必要はありません.
ENSでの名前解決は2段階のプロセスで行われます。まずENS registryにその名前を担当するResolverを問い合わせ、次に、問い合わせに対する回答をそのResolverに問い合わせます.
ENSの動作フロー例.ENSの開発文書より引用
コメント
コメントを投稿