ENS(Ethereum Name Service)介紹

買賣虛擬貨幣
ENS(Ethereum Name Service)是以太坊域名服務,是一個基於以太坊區塊鏈的分散式、開放和可擴充套件的命名系統。ENS的工作是將可讀的域名(比如"alice.eth")解析為計算機可以識別的識別符號,如以太坊地址、內容的雜湊、後設資料等。ENS還支援"反向解析",這使得將後設資料(如規範化域名或介面描述)與以太坊地址相關聯成為可能。ENS的目標與DNS(網際網路域名服務)類似,但由於以太坊區塊鏈的功能特點和限制條件,兩者架構有很大的不同。與DNS一樣,ENS是一個層次結構的域名系統,不同層次域名之間以點作為分隔符,我們把層次的名稱叫做域,一個域的所有者能夠完全控制其子域。頂級域名(比如".eth"和".test")的所有者是一種名為"註冊中心(registrar)"的智慧合約,該合約內指定了控制子域名分配的規則。任何人都可以按照這些合約規定的規則,獲得一個域名的所有權併為自己所用。由於ENS的層次性,不論一個人擁有哪個級別的域名,都可以根據需要為自己或他人配置子域名。例如,如果Alice擁有"alice.eth",她就可以建立"pay.alice.eth"並按需對其進行設定。ENS部署在以太坊主網路和幾個測試網路上。如果你使用ehereum-ens[1]javascript庫或終端使用者應用程式,它將自動檢測與你互動的網路並在該網路上部署ENS。
你現在就可以透過ENS管理器[2]或ENS官方主頁[3]上的ENS應用程式,來試用ENS。ENS架構

ENS有兩個主要元件:登錄檔[4]和解析器[5]

ENS登錄檔是一個智慧合約,該合約維護所有域名和子域名列表,並儲存關於每個域名的三個關鍵資訊:

•域名的所有者
•域名的解析器
•域名下所有記錄的快取存活時間(即TTL)

域名的所有者可以是外部帳戶(使用者)或智慧合約。註冊中心就是一個擁有頂級域名的智慧合約,並按照合約中的規則將該域名的子域名分發給使用者。

ENS登錄檔中的域名所有者可以:

•為域名設定解析器和TTL
•將域名的所有權轉讓給另一個地址
•更改子域名的所有權

ENS登錄檔非常簡單,它的存在只是為了將域名對映到負責解析這個域名的解析器。

解析器負責將域名轉換為地址。只要是符合解析器相關標準的智慧合約,都可以在ENS中作為解析器程式。通用解析器服務於需求簡單的使用者,比如不經常更改地址的使用者。

每個記錄型別(以太坊地址、內容的雜湊等)都定義了一個或多個方法,解析器必須實現這些方法才能提供這類記錄。新的記錄型別可以隨時透過EIP標準化程式進行定義,因此不需要為了支援它們而對ENS登錄檔或現有的解析器進行更改。

在ENS中解析一個域名需要兩個步驟:首先,詢問登錄檔是哪個解析器負責解析該域名,然後,向該解析器查詢解析結果。

在上面的例子中,我們想找到"foo.eth"指向的以太坊地址。首先,我們詢問登錄檔是哪個解析器負責解析"foo.eth";然後,我們向該解析器查詢"foo.eth"的地址。

Namehash

智慧合約中的資源限制使得直接與可讀的域名互動效率低下,因此ENS只使用固定長度的256位加密雜湊。為了從域名生成雜湊的同時仍然保留其層次性,ENS使用了名為Namehash的演算法。例如,"alice.eth"的Namehash為 0x787192fc5378cc32aa956ddfdedbf26b24e8d78e40109add0eea2c1a012c3dec,Namehash只是用來在ENS內部表示域名。

Namehash是一個遞迴過程,可以為任何有效的域名生成唯一的雜湊。從任意一個域名的Namehash開始(比如"alice.eth"的Namehash)可以推匯出任意子域名的Namehash(比如"iam.alice.eth"的Namehash),而且推導過程中不需要知道或處理"alice.eth"這個可讀的原始域名。正是這個特性使得ENS能夠成為一個層次性的系統,且不必在內部處理可讀的文字字串。

在使用Namehash進行雜湊之前,首先需要藉助UTS-46標準對域名進行規範化,確保域名中的字母與大小寫無關,並禁止使用無效字元。任何對域名進行雜湊和解析的操作都必須首先對其進行規範化,以確保所有使用者獲得ENS的一致性。

有關Namehash和規範化如何工作的詳細資訊,請參閱有關域名處理[6]的文件。

開始使用

ENS為包括DApp開發者和合約開發者在內的各種人員提供參考文件。

我是DApp的開發者,我想為我的DApp新增ENS支援
從在DApp中啟用ENS[7]開始,檢視開發應用程式開發者指南,你可以從眾多可用的ENS庫[8]中選擇一個來開始使用ENS。

我是一名合約開發者,希望在我的智慧合約中與ENS進行互動
從鏈上域名解析[9]開始,檢視合約開發者指南。你還可以編寫自己的解析器[10](自定義查詢域名的過程)或自己的註冊中心[11](自定義註冊新域名的過程)。

我想檢視ENS智慧合約的參考文件

檢視ENS智慧合約的API參考文件,這些文件涵蓋了ENS的核心合約、登錄檔[12]、解析器[13]和常用的註冊中心,如:測試註冊中心[14]、反向註冊中心[15]以及.eth註冊中心[16]。

References
[1] ehereum-ens: https://www.npmjs.com/package/ethereum-ens
[2] ENS管理器: https://app.ens.domains/
[3] ENS官方主頁: https://ens.domains/
[4] 登錄檔: https://learnblockchain.cn/docs/ens/contract-api-reference/ens.html
[5] 解析器: https://learnblockchain.cn/docs/ens/contract-api-reference/publicresolver.html
[6] 域名處理: https://learnblockchain.cn/docs/ens/contract-api-reference/name-processing.html
[7] 在DApp中啟用ENS: https://learnblockchain.cn/docs/ens/dapp-developer-guide/ens-enabling-your-dapp.html
[8] ENS庫: https://learnblockchain.cn/docs/ens/dapp-developer-guide/ens-libraries.html
[9] 鏈上域名解析: https://learnblockchain.cn/docs/ens/contract-developer-guide/resolving-names-on-chain.html
[10] 編寫自己的解析器: https://learnblockchain.cn/docs/ens/contract-developer-guide/writing-a-resolver.html
[11] 註冊中心: https://learnblockchain.cn/docs/ens/contract-developer-guide/writing-a-registrar.html
[12] 登錄檔: https://learnblockchain.cn/docs/ens/contract-api-reference/ens.html
[13] 解析器: https://learnblockchain.cn/docs/ens/contract-api-reference/publicresolver.html
[14] 測試註冊中心: https://learnblockchain.cn/docs/ens/contract-api-reference/testregistrar.html
[15] 反向註冊中心: https://learnblockchain.cn/docs/ens/contract-api-reference/reverseregistrar.html
[16] .eth註冊中心: https://learnblockchain.cn/docs/ens/contract-api-reference/.eth-permanent-registrar/

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;