ENS 介紹

以太坊名稱服務(Ethereum Name Service,簡稱 ENS)是一個基於以太坊區塊鏈的分佈式、開放和可擴展的命名系統。ENS 的核心功能是將人類可讀的名稱(例如 “alice.eth”)解析爲計算機可以識別的標識符,如以太坊地址、其他加密貨幣地址、內容哈希、元數據等。此外,ENS 還支持“反向解析”,使得可以將元數據(如規範化名稱或接口描述)與以太坊地址相關聯。

ENS 的功能與架構

ENS 的目標類似於互聯網名稱服務(DNS),但由於以太坊區塊鏈的功能特點和限制,ENS 的架構與 DNS 有很大的不同。ENS 是一個層次結構的命名系統,層次之間以點作爲分隔符,每個層次稱爲一個域。域的所有者擁有完全控制其子域的權利。

頂級域名(例如 “.eth” 和 “.test”)的所有者是智能合約,稱爲“註冊器(registrar)”。這些合約內定義了子域名分配的規則。任何人都可以按照這些合約規定的規則,獲取一個域名的所有權,並根據需要進行配置。ENS 還支持將現有的 DNS 域名接入 ENS 系統,擴展其功能。

由於 ENS 的層次結構,任何擁有某級域名的人都可以爲自己或他人創建和配置子域名。例如,如果 Alice 擁有 “alice.eth”,她可以創建 “pay.alice.eth” 並根據需要進行設置。

ENS 部署與使用

ENS 部署在以太坊主網絡及多個測試網絡上。如果您使用 ensjs Javascript 庫或終端用戶應用程序,這些工具會自動檢測並與相應的網絡進行交互。
 

ENS 架構

ENS 有兩個主要組件:註冊表和解析器。
 

ENS 註冊表介紹

ENS 註冊表是一個智能合約,負責維護所有名稱和子名稱列表,並存儲關於每個名稱的三個關鍵信息:

  1. 名稱的所有者

  2. 名稱的解析器

  3. 名稱下所有記錄的緩存存活時間(TTL)

名稱的所有者可以是外部賬戶(用戶)或智能合約。註冊器作爲一個擁有頂級名稱的智能合約,根據合約中的規則將該名稱的子名稱分配給用戶。

ENS 註冊表功能

ENS 註冊表中的名稱所有者具有以下權限:

  1. 設置解析器和 TTL:所有者可以爲其名稱指定解析器並設定 TTL。

  2. 轉讓所有權:所有者可以將名稱的所有權轉讓給另一個地址。

  3. 更改子名稱的所有權:所有者可以管理和修改子名稱的所有權。

ENS 註冊表的主要作用是將名稱映射到負責解析該名稱的解析器。解析器是智能合約,負責將名稱轉換爲地址。任何符合解析器相關標準的智能合約都可以在 ENS 中作爲解析器使用。對於需求簡單且不經常更改地址的用戶,可以使用通用解析器。

解析器功能

每種記錄類型(如以太坊地址、內容哈希等)都定義了一組方法,解析器必須實現這些方法才能提供對應的記錄。新的記錄類型可以隨時通過 EIP 標準化程序進行定義,因此無需更改 ENS 註冊表或現有的解析器即可支持新記錄類型。

在 ENS 中解析一個名稱需要兩個步驟:

  1. 查詢註冊表:首先,查詢註冊表以確定哪個解析器負責解析該名稱。

  2. 查詢解析器:然後,向該解析器查詢解析結果。

ENS 的優勢與應用

ENS 註冊表和解析器的設計簡化了複雜地址的管理,使用戶能夠輕鬆將人類可讀的名稱轉換爲計算機可識別的標識符。這一設計不僅增強了用戶體驗,還提供了極大的靈活性和擴展性,使 ENS 成爲區塊鏈命名系統的一個強大工具。
 

Namehash 機制

在智能合約中,由於資源限制,直接與可讀名稱進行交互效率低下。因此,ENS 採用了固定長度的256位加密哈希來處理名稱。這種哈希算法稱爲 Namehash,旨在生成具有層次結構的唯一哈希值。例如,“alice.eth”的 Namehash 爲 0x787192fc5378cc32aa956ddfdedbf26b24e8d78e40109add0eea2c1a012c3dec。在 ENS 內部,Namehash 用於表示名稱。

Namehash 的遞歸過程

Namehash 是一個遞歸過程,它可以爲任何有效名稱生成唯一的哈希值。通過從一個名稱的 Namehash 開始(如“alice.eth”),可以推導出任何子名稱的 Namehash(如“iam.alice.eth”),而無需處理或知道原始的可讀名稱“alice.eth”。這種特性使得 ENS 能夠高效地管理其層次結構,而無需內部處理可讀的文本字符串。

規範化過程

在使用 Namehash 進行哈希處理之前,必須對名稱進行規範化。這一過程依賴於 UTS-46 標準,確保名稱中的字母大小寫無關,並且禁止無效字符。任何對名稱進行哈希和解析的操作都必須首先進行規範化,以確保所有用戶在 ENS 系統中獲得一致的結果。

Namehash 的重要性

Namehash 的設計在以下幾個方面發揮了重要作用:

  1. 效率:通過將可讀名稱轉換爲固定長度的哈希值,ENS 在智能合約中實現了高效處理。

  2. 層次結構:Namehash 允許遞歸生成子名稱的哈希,支持 ENS 的層次結構管理。

  3. 一致性:通過規範化過程,確保所有用戶在 ENS 中處理名稱時獲得一致的結果。
    Namehash 的應用

在 ENS 系統中,Namehash 的應用極爲廣泛:

  1. 名稱註冊:用戶在註冊名稱時,ENS 使用 Namehash 將名稱轉換爲哈希值進行存儲和管理。

  2. 名稱解析:在解析名稱時,ENS 根據名稱的 Namehash 進行快速、高效的查找和匹配。

  3. 子名稱管理:通過 Namehash 的遞歸特性,用戶可以輕鬆管理其名稱的子名稱,而無需處理複雜的文本字符串。

#ENS #ordi​​​ #zro #mln #ZEN $ENS $ORDI $ZRO