前言
ENS中文檔案 是由我照ENS英文官方檔案翻譯而來,其中的一些內容和細節得到了ENS官方團隊的指導,檔案中包含 “LBB譯注” 的地方是譯者為了便于讀者理解而進行的注釋,
未來一段時間,我會在該博客定時發布ENS中文檔案的一系列內容,對ENS域名或是區塊鏈有興趣的園友請關注本博客,為尊重汗水,我會在文前加上我翻譯的原文鏈接(望管理員理解),
------------
ENS介紹
原文鏈接:https://ensuser.com/docs/readme.html
ENS(Ethereum Name Service)是以太坊域名服務,是一個基于以太坊區塊鏈的分布式、開放和可擴展的命名系統,
ENS的作業是將可讀的域名(比如”alice.eth”)決議為計算機可以識別的識別符號,如以太坊地址、內容的哈希、元資料等,ENS還支持”反向決議”,這使得將元資料(如規范化域名或介面描述)與以太坊地址相關聯成為可能,
ENS的目標與DNS(互聯網域名服務)類似,但由于以太坊區塊鏈的功能特點和限制條件,兩者架構有很大的不同,與DNS一樣,ENS是一個層次結構的域名系統,不同層次域名之間以點作為分隔符,我們把層次的名稱叫做域,一個域的所有者能夠完全控制其子域,
頂級域名(比如”.eth”和”.test”)的所有者是一種名為”注冊器(registrar)”的智能合約,該合約內指定了控制子域名分配的規則,任何人都可以按照這些合約規定的規則,獲得一個域名的所有權并為自己所用,
由于ENS的層次性,不論一個人擁有哪個級別的域名,都可以根據需要為自己或他人配置子域名,例如,如果Alice擁有”alice.eth”,她就可以創建”pay.alice.eth”并按需對其進行設定,
ENS部署在以太坊主網路和幾個測驗網路上,如果你使用ethereum-ens Javascript庫或終端用戶應用程式,它將自動檢測與你互動的網路并在該網路上部署ENS,
你現在就可以通過ENS管理器或ENS官方主頁上的ENS應用程式,來試用ENS,
ENS架構
ENS有兩個主要組件:注冊表和決議器,

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和規范化如何作業的詳細資訊,請參閱有關域名處理的檔案,
開始使用
ENS為包括DApp開發者和合約開發者在內的各種人員提供參考檔案,
我是DApp的開發者,我想為我的DApp添加ENS支持
從在DApp中啟用ENS開始,查看開發應用程式開發者指南,你可以從眾多可用的ENS庫中選擇一個來開始使用ENS,
我是一名合約開發者,希望在我的智能合約中與ENS進行互動
從鏈上域名決議開始,查看合約開發者指南,你還可以撰寫自己的決議器(自定義查詢域名的程序)或自己的注冊器(自定義注冊新域名的程序),
我想查看ENS智能合約的參考檔案
查看ENS智能合約的API參考檔案,這些檔案涵蓋了ENS的核心合約、注冊表、決議器和常用的注冊器,如:測驗注冊器、反向注冊器以及.eth注冊器,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/5267.html
標籤:區塊鏈
上一篇:位元幣如何運作
下一篇:如何用web3部署智能合約
