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/.。
本文来源:乐发lll彩票-www.scabiding.com