パーマネントレジストラとは?
今回は、ENS のパーマネントレジストラについて紹介します。
パーマネントレジストラは、2019 年 5 月 4 日にオークションレジストラの代わりに開始されたコントラクトであり、深刻な欠陥のために交換しなければならなくなるまで、継続して運営することを目的としています。パーマネントレジストラは、.eth TLD 名の割り当てと更新を管理するコードです。パーマネントレジストラのコードは、ethregistrarリポジトリで見つけることができます。
システム構造
レジストラ自体は BaseRegistrar と呼ばれます。このコントラクトは、いくつかの重要な機能を実装しています。
レジストラの所有者は、「コントローラ」を追加 / 削除することができます。
コントローラは、新しいドメイン名を登録し、既存ドメイン名の有効期限を延長する (renew)ことができます。既存のドメイン名の所有権を変更したり、有効期限を短縮することはできません。
名前の所有者は、他のユーザ(アドレス)に所有権を移すことができます。
名前の所有者は、ENSレジストリで所有権を失った場合、再取得することができます。
レガシーレジストラ(おそらくパーマネントレジストラの前にあったオークションレジストラのこと)に登録されている名前の所有者は、1 年の移行期間中に新しいレジストラに移管することができます。その際、預託金は全額返還されます。
さらに、レジストラは ERC721 準拠のノンファンジブルトークンコントラクトであり、.eth の登録は他の NFT と同じ方法で移管できることを意味します。
ユーザは、名前の所有権を譲渡するとき、または名前の ENS レジストリにおける所有権を回復するときに、このコントラクトと直接やり取りします。また、名前の登録状況や有効期限を確認するために、名前を照会することもできます。初回登録と更新の場合、ユーザはコントローラコントラクトとやり取りする必要があります。コントローラによって登録された名前は、登録トランザクション内でリゾルバと名前のレコードを設定することができ、登録プロセスが簡素化されます。
この関心事の分離により、レジストラの攻撃対象が減少し、レジストラが設置されている限り、ユーザに名前の継続的な所有権の保証を提供します。将来のアップデートでは、ルートと .eth TLD の所有権を、制限された権限を持つコントラクトに移行することができます。したがって、ルートの鍵所有者でさえも .eth レジストラを変更することができなくなりますが、コントローラのセットに対する将来のアップデートもまだ提供されています。
初期状態では、ETHRegistrarController という 1 つのコントローラが実装されています。このコントローラは、7 文字以上のドメインに対して簡単な登録と更新の仕組みを提供し、以下の機能を実装しています。
コントローラの所有者は、名前と希望する更新期間に基づいて登録および更新のコストを決定する価格オラクル契約を設定することができます。
コントローラの所有者は、回収した資金を自分のアカウントに引き出すことができます。
ユーザは、commit / reveal プロセスを使用し、適切な登録料を支払うことで、新しい名前を登録することができます。
ユーザーは適切な料金を支払うことで、名前を更新することができます。名前の所有者だけでなく、どのユーザもドメイン名を更新することができます。更新期間に制限はありません。
誰でもドメイン名の更新ができるようにすることで、自分が関わる名前の有効期限が気になるユーザは、必要に応じて自分で登録料を支払うことで、確実にその名前を登録し続けることができます。
任意に長い期間での更新を許可することで、ユーザは望ましい登録料を「固定」することができます。長期間更新をすることで、名前を事実上「不滅」にすることができ、スマートコントラクトによって名前の安定性を保証することができます。
当初は、StablePriceOracle という 1 つのプライシングオラクルが配備されていました。このコントラクトは、所有者が許可された名前の長さごとに USD で価格を設定することを可能にし、USD:ETH 価格オラクルを使用してそれらの価格を現在のレートで Ether に変換します。