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)*の設定
  • ドメインの所有権を他のアドレスへの移行
  • サブドメインの所有権変更

*おそらくDNSと同じ意味ならENSのリソースレコードをキャッシュに保持して良い時間のことです.EVMがキャッシュする時間ということなのでしょうか.詳細はGITHUBでコードを見るしかなさそうです.

ENS registryは意図的に単純化されており、名前からその名前を担当するResolverへのマッピングのためだけに存在します。

Resolverは、名前をアドレスに変換する実際のプロセスを担当します。関連する規格を実装しているスマートコントラクトであれば、ENSでResolverとして動作することが可能です。

暗号通貨アドレス、IPFSコンテンツハッシュなどの各レコードタイプは、 その種類のレコードを提供するためにResolverが実装しなければならない 1つまたは複数のメソッドを定義しています。新しいレコードタイプはEIP標準化プロセスを通じていつでも定義することができ、それをサポートするためにENS registryや既存のResolverに変更を加える必要はありません.

ENSでの名前解決は2段階のプロセスで行われます。まずENS registryにその名前を担当するResolverを問い合わせ、次に、問い合わせに対する回答をそのResolverに問い合わせます.

ENSの動作フロー例.ENSの開発文書より引用

上記の例では、”foo.eth”が指すイーサリアムアドレスを見つけようとしています。まず、ENS registryに”foo.eth”を担当するResolverを問い合わせます.次に、そのResolverに対して 'foo.eth' のアドレスを問い合わせて名前解決を行います.

上記の説明のようにResolverは関連する規格に準拠していればETHアドレス以外にも使用できる仕組みになっています.つまりはBTCアドレスやwebページのドメイン名もENS上にドメインとして登録し利用することが可能です.

ENSドメインの取得方法

まずはENSを取得したいETHアドレスを選択しましょう.新規に生成したい場合にはMetaMaskなどで新規アドレスを作成してください.次に100ドル分ぐらいのETHをそのアドレスへ送付しておきます.https://app.ens.domains/にアクセスしMetaMaskなどのウォレットアプリを連携させます(左上のconnectボタンを押せばMetaMaskならOKです).
ENSのページから引用

次に自分の登録したいドメイン名を検索窓に入力して”Search”を押してまだ空きがあるか確認します.以下にはpanda-mfg.ethを検索した結果で空きがあることが分かります(Registerが青くハイライトされていれば大丈夫です).

ここでドメイン登録に必要なETHのコストが表示されます.この日はNetworkが比較的混雑していなかったので0.021ETH = 62.34 USD必要なことが分かります.右下隅のRequest To Registerボタンを押すとMetaMaskのダイアログがポップアップするのでそこで確認ボタンを押して次へ進みます.

そうすると先ほどの登録画面でプログレスバーが徐々に進んでいきます.

ステップ2が完了すると最後のステップ3の処理(登録完了)を行うか聞いてきます.ここで確認ボタンを押して完了してください.


登録が無事完了すると以下のような確認画面で無事ETHアドレスがドメイン名に紐付けられていることが確認できます.

今回は有効期間5年で登録しました.なおドメイン名が短い方が登録料は高くなります.登録有効期間が長い場合にはあまりETHのコストには変化がないので3年以上登録するのがオススメです.ちなみにこういったENSドメイン名もNFTの一種と扱うことが可能でOpenSeaなどで取引されています.すでに取得されてしまったドメインもNFTを購入することによってENSの権利取得が可能ということです.

おわりに

ENSは暗号資産ウォレットやブラウザのユーザビリティを改善するには必須の技術で単純な機能ですが,かなり重要な役割を担当しています.次にやってみたいのはENSのドメイン名を利用してIPFS上に自分のwebサイトを立ち上げることですが,利用できるプラットフォームを調べ始めたところです.ちなみにENSは独自トークンのエアドロップをENSドメイン所有者に対して昨年行いましたが,近いうちに第2段が行われるかもしれません.用途はENSの運営を行なっているDAOで開発者やユーザーからのアクションプランへの投票権ですが,こういったサービスとDAOは非常に相性が良いと感じました.値上がりはあまり期待していませんが,今年は相場も落ち着いてくる(もしくは激しく下落する?)と思うので,ブロックチェーンの技術面をユーザーとして利用しながら理解を深めていこうと思っています.



コメント

このブログの人気の投稿

ETHマイニング Phoenix minerの設定方法

ETHマイニング TeamRedMiner設定方法

CONBASEのレビュー