原文标题:《Buidler DAO:以 ENS 为例深度分析 Web3 域名系统的时刻假想》平博棋牌
原文作家:@axtrur,Buidler DAO 盘问员
图片起原:由 无界领土AI 器具生成
Web3 域名系统,简而言之等于基于区块链的散播式、去中心化的定名系统,与 DNS(互联网称呼就业)访佛,将地址(钱包地址或智能合约地址)解析成可读性的称呼,本文以 ENS 为例从举座架构到合约细节,深度剖析 web3 域名系统的假想。
ENS 前置见识域名层级访佛 DNS,ENS 域名层级不异分为
根域名,即""域名
一级域名,访佛.com,.cn,在 ens 中有.eth 和.reverse( 用来纪录反向解析,后头会提到 )
二级域名,即用户注册的域名,比如 axtrur.eth
三级域名,用户注册了二级域名之后,不错创建或修改该二级域名下的三级域名,比如 app.axtrur.eth
NameHash 算法由于智能合约径直与可读的域名进行交互恶果低,因此 ENS 聘任固定长度的 256 位加密哈希行为域名纪录。namehash 是一个递归算法,可从肆意域名的 NameHash 值推导出肆意子域名的值,而无需知谈原域名的信得过文本字符串,同期适合域名的多层级特质。
Namehash("") = "0x0000000000000000000000000000000000000000000000000000000000000000" Namehash("eth") = keccak256(Namehash(""), keccak256("eth")) Namehash("axtrur.eth") = keccak256(Namehash("eth"), keccak256("axtrur")) Namehash("app.axtrur.eth") = keccak256(Namehash("axtrur.eth"), keccak256("app"))
node在 ens 中,用户注册的域名比如 axtrur.eth,会聘任 namehash 算法生成的哈希 node 去纪录链上数据,后文中咱们将提到的 node 归拢为一个域名称呼比如 axtrur 即可,对于 ENS 称呼的处理请参考 https://ensuser.com/docs/contract-api-reference/name-processing.html
ENS 模块见识注册器合约(绿色部分):正经分拨称呼的合约,有正向注册器,反向注册器,DNS 注册器。
解析器合约(蓝色部分):正经纪录域名映射计议的合约,分正向、反向解析器,其中正向解析器合约也可自界说闭幕:
正向解析(主网上有默许的环球解析器合约):正经纪录域名所绑定的内容,即域名的 nameNode(比如 axtrur.eth,app.axtrur.eth)到(包括不限于 name, addr, txt, contenthash 等内容)的解析,可栽种种种币种的钱包地址,还不错栽种 IPFS 的内容哈希,甚而纪录邮箱等级三方账号行为文本纪录。
反向解析(主网上有默许的反向解析器合约):正经纪录钱包地址所绑定的域名,即反向域名的 nameNode(比如 {{钱包地址}}.addr.reverse) 到 域名称呼的解析
根合约:是根域名的 owner,领有一级域名的料理权限
王法器合约:官网的注册进口合约(要是需要闭幕不同的玩法合约,则归拢归为王法器合约模块,需要将对应注册器合约地址栽种给注册器,才有权限操作注册器进行域名 NFT 注册与纪录反向解析)
北京日报讯(实习记者 王瑶琦 柴嵘)近日,有关“支原体肺炎已经在儿童中混合传播”“阿奇霉素、布洛芬、愈酚甲麻那敏等‘三件套’是治疗支原体肺炎的良药”等信息在网上热传,引发关注。昨天,北京市垂杨柳医院儿科主任高捷表示,目前,混合感染患儿较少。患者自行组合服用所谓“三件套”的做法也不可取。
价钱预言机:ENS 订价聘任的是 U 本位(usdt),是以需要 USDT 预言机来策画某一时刻的注册费的 eth 换算值,ENS 主网上的注册费为:
长度为 5+ 个字符的域名:每年支付 5 好意思元
长度为 4 个字符的域名:每年支付 160 好意思元
皇冠博彩网站致力于广大博彩爱好者提供优质博彩服务多样博彩游戏,网站拥有博彩攻略技巧分享,用户提供全方位博彩体验。长度为 3 个字符的域名:每年支付 640 好意思元
DNSSEC 预言机:DNS 安全推广预言机合约,正经校考据明 web3 域名的通盘权和有用性
ENS 模块解析注册表合约 (EnsRegistry.sol)注册表是 ENS 最中枢的合约,上图为注册表合约里面的 records 结构,难得着域名层级 node 对应的 owner、解析器、ttl 信息注册表是 ENS 最中枢的合约,上图为注册表合约里面的 records 结构,难得着域名层级 node 对应的 owner、解析器、ttl 信息。
除了注册表信息 records 难得,合约还难得 owner 的委用料理者信息 operators,owner 不错通过添加栽种委用料理者地址(不错是用户地址,也不错是合约地址)来共同料理域名信息 合约中关联料理栽种接口(比如栽种解析器,ttl,以及创建和修改子域名),王人领悟过修饰器`authorised(node)`来王法调用权限;该修饰器将判断该接口的往来请求者是否为现时域名的 owner,大要委用料理者地址,保证了仅有域名的 owner 或委用者才有创建下一级子域名的权限。同期这里部署运行化的时候将`」」`根域名的 node 的 owner 栽种为部署者,唯有这么,部署者才能将根域名的 owner 栽种给 Root 合约根合约。
(Root.sol)根合约是根域名的 owner,同期根合约行为根域名的 owner,有权限调用注册表合约的 setSubnodeOwner 接口,将域名.eth 的 owner 指向基础注册器合约。
基础注册器合约(BaseRegistrarImplementation.sol)由于 Root 合约将域名.eth 的 owner 指向基础注册器合约(又称正向注册器合约),从而基础注册器领有.eth 下面的二级域名的栽种权限,使得用户不错通过基础注册器合约进行域名注册;同期该注册器合约经受了 ERC721 契约尺度,这也等于为什么 ENS 域名不错行为 NFT 在往来市集比如 opensea 上交易的原因。除此以外,基础注册器合约还难得着每个域名的落伍时期 expiries,注册器为每个域名栽种了 90 天的保护期,当域名落伍后且在保护期内,域名领有者不错通过调用续期 renew 接口进行续期,要是跳跃了保护期,则需要重新注册(这里重新注册会先殉国 NFT 在重新 mint)。同期在 ENS 假想中,注册器合约(无论是正向注册器如故反向注册器)基本上王人有 controllers 结构,难得着实在的 controller 注册器合约,唯有实在合约才可进行调用。
王法器合约(ETHRegsiterController.sol)用户在官网中,将要注册的域名等注册信息传给王法器合约,王法器合约通过预言机策画该域名的价钱,同期将域名通过 namehash 转成 node 后传给基础注册器进行域名 NFT 的注册,同期将域名关联注册表信息写入注册表合约完成注册,同期域名的 owner 不错在官网通过注册表合约进行料理操作,官网中的注册页面如下:
中枢注册历程:
ENS 注册聘任「请求 - 提交」两阶段注册模式 ENS 注册聘任「请求 - 提交」两阶段注册模式,为什么需要两阶段提交?咱们知谈以太坊节点从往来池 pool 中捞取往来是会按照往来给的 gas 费进行优先级排序;在注册者佩戴待注册域名构造的往来提交上链前,在通盘收罗是公开透明的,坏心的症结者不错监听并解析此类待上链往来,并构造疏导域名的注册往来,通过擢升 gas 费的格式抢先上链注册王法器合约注册。
为了防护此类域名抢注问题,ENS 聘任了先请求,后提交的注册模式。在第一阶段并不径直提交域名,而是先调用
makeCommitment 接口把柄待肯求域名 name、待肯求地址 owner、就地值 secret 进行哈希青年景一条很是的 commitment 后,通过 commit 提交上链。
提交阶段的 commitment 纪录着现常常期戳,同期 ENS 栽种 commitment 的有用期为 60s 到 86400s 之间;第二阶段注册的时候书册中重新策画 commitment,判断是否与第一阶段提交的一致,同期查验 Commitment 的有用期,保证跟第一阶段的链上处理常常代隔 1 分钟以上,保证纪录了第一阶段往来的区块经过了至少 5 个后续区块的证明。(此时症结者天然不错获得域名值,但由于唯有第一阶段的 owner 需要根第二阶段的 owner 一致才能生成一致的 commitment,从而幸免了被抢注的风险)
菠菜稳定平台推荐用户在官网的第二阶段注册历程内容上是代码中的 resolver != address(0) 逻辑分支,因为 ENS 默许会将注册的 resolver 解析器栽种为默许的环球正向解析器(publicResolver 后头会提到),这里为什么需要将域名注册给合约自己然后在回荡给用户呢?因为上文中咱们提到注册表合约中唯有 owner 大要委用料理者才有权限栽种解析器或更新 owner,是以为了帮用户栽种好解析器,需要通过基础注册器注册(register)给合约自身,再通过注册表合约栽种解析器(setResolver),然后声明通盘权(reclaim),终末才回荡给注册者(transferFrom)。
解析器(Resolver)ENS 中的解析器合约分为正向解析和反向解析,解析纪录是 ENS 相比蹙迫的内容,唯有界说好法度,生态才能便捷的即成 ENS 这类 web3 域名系统。
正向解析(ENS 默许的正向解析器合约 PublicResolver.sol 大要自界说解析器合约。)
皇冠体育
正经将域名映射为对哄骗户栽种的内容(包括币种地址,ipfs 内容 hash,通用 text 纪录等等。
最初 metamask 领悟过注册表合约获得域名 node 栽种的解析器地址(默许的环球解析器,也不错是用户自界说的解析器合约地址),然后与该解析器地址交互,获得用户栽种的 eth 的币种地址(官网注册默许会栽种成注册者,注册者后续可解放更正)进行转账操作。
反向解析(ENS 默许反向解析器合约 DefaultReverseResolver.sol)
正经将用户钱包地址映射为对应的域名。
反向解析内容上是对用户不透明的,用户也无法像正向解析器合约那样不错自界说。用户也不错通过反向注册器(ReverseRegistrar.sol)的 setName 门径栽种现时钱包地址要绑定的域名,反向纪录不异在 ENS 注册表合约难得,用户注册的反向纪录在三级域名纪录中,表情为:具体用户地址.addr.reverse
栽种反向解析之后,opensea 用户界面会将用户钱包地址展示为可读的 ENS 域名,则是反向解析的过程解析器结构以及 node 对应的注册表信息。
根域名的 owner 是根域名:
.eth 一级域名的 owner 是正向注册器也等于(BaseRegistrarImplement.sol)
用户注册的二级、三级域名的 owner 是用户自己,同期不错解放栽种解析器合约地址
.reserve 一级域名 owner 是 ENS 的多签钱包地址
.addr.reserve 二级域名 owner 是反向注册器,ens 现时主网版块王法器合约注册的时候默许通过反向注册器(ReverseRegistrar.sol)栽种反向解析纪录(比如具体用户地址.addr.reverse 指向 axtrur.eth),用户无需提供 gas 以外的反向注册费。
用户注册域名的反向三级域名的 owner 王人默许指向反向注册器合约,同期 resolver 默许指向反向解析器合约
上头咱们一经把 ENS 域名合约假想以及主要的模块梳理罢了,ENS 在假想上比如模块拆分,权限拆分方面王人是值得咱们鉴戒的,可是现在主网上的 ENS 也存在一些问题。
ENS 存在问题与惩办意大利阵容2021欧洲杯欧博开户1、零宽问题:这是 ENS 现在相比忙绿的问题,因为合约假想之初并莫得王法零宽字符(对于零宽问题解释 https://mirror.xyz/0xc952fE149b640097054CFa53cAf7aC2bfd0162C5/RW6psQ2mnxyzmQx08PUXgLXOZc0kjvfXm8RGRVu8s0Y),比如不错官网注册某个域名的时候,要是该域名已被注册,此时用 https://unicode-table.com/en/200B/ 拷贝对应某种零宽字符串插入到要注册的域名中间某个位置,则不错注册对应的域名了。
2、很是字符:ENS 合约并莫得王法.,emoji 神采等很是字符过滤,以致于现在往来市集存在太多冗杂非法度的域名。
现在 ENS 官网一经对很是字符进行过滤,并赐与必要的劝诫教导(可是合约自己并莫得王法,是以科学家一样不错通过合约进行注册)
3、transfer 问题:ENS 现在有个相比忙绿的问题等于域名 NFT 在回荡的时候,owner 莫得同步回荡,是以当你在往来市集买了一个 ENS 域名 NFT 的时候,你需要通过基础注册器合约的 reclaim 接口,消费一定的 gas 费声明 NFT 通盘权后,才能到 ens 官网上看到我方领有的域。
4、tokenURI 问题:ENS 的基础注册器合约并莫得即成 ERC721 尺度的 tokenURI,可能是假想之初莫得推敲好,是以现在咱们在往来市集比如 opensea 上的 ENS 的 NFT 的 metadata,是往来市集很是对 ENS 即成了 ENS 中心化的 metaservice 的 API(比如:https://metadata.ens.domains/mainnet/0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85/92165218023603606815515740961699344403389102980529428548045197994533319339809)。
5、保留字:这是我以为.bit 这方面作念得相比好的方面,.bit 官方会把 web2 天下中的机构或公司称呼保留住来,便于后续 web2 与 web3 之间的贯串(https://github.com/dotbitHQ/Documents/blob/main/Reserved_DAS/Reserved_DAS_List.md)这对于 web3 域名生态发展是独特想。
6、基础合约可升级,ENS 现在对于基础模块并莫得聘任代理模式支柱合约可升级,这么当未来需要对基础模块升级的时候是相比忙绿的,一种是 fallback 一种是移动数据,但这王人只可惩办部分问题,这个方面 ENS 是有改善空间的。
咱们不错奈何惩办上头那些问题呢?
皇冠体育注册1、字符问题,咱们不错在王法器合约的 valid 函数修改逻辑,一种闭幕格式是王法零宽等很是字符比如 spaceid(https://github.com/Space-ID/SpaceIDContract-Audit/blob/main/contracts/bnbregistrar/BNBRegistrarControllerV9.sol#L88),另一种等于只允许适合法度的字符。
2、transfer 问题:咱们不错在基础注册器里复写 transferFrom 和 saveTransferFrom 函数,在回荡 nft 的同期调用 setSubnodeOwner 回荡 owner。
3、tokenURI 问题:这个相比浅易咱们只消经受 ECR721 的 tokenURI 尺度呢就不错了,那奈何闭幕在图片中动态的域名的展示呢?咱们不错聘任 svg 上链(不错看著作后头立异后的合约代码的 TokenURIBuilder.sol)。
4、保留字问题:不错将保留字以及对应要保留的钱包地址上链,先保留给合约自己,后头不错通过 apply 接口肯求给某个特定地址。
5、基础合约可升级:咱们不错聘任代理模式 (eip-1967) 对基础模块合约进行立异,感兴致不错参考 lens-protocol 的合约假想(https://github.com/lens-protocol/core/tree/main/contracts)。
DNS 模块ENS 的 DNS 材干并不是咱们说的 web2 域名系统比如.com 不错闭幕在浏览器里打听域名来打听你的 ens 域名,ENS 的 dns 注册内容上只是基于 DNS 安全推广,通过关联的讲解,校验算法讲解你对于该 web2 的域名的通盘权,然后在链上作念一个(web2 域名到钱包地址)的纪录,使得咱们不错用 web2 域名进行链上转账。详见(https://ensuser.com/docs/dns-registrar-guide.html)
可是本文为什么咱们莫得详备讲 ENS 的 DNS 模块呢?是因为 ENS 天然花了大部分元气心灵在闭幕 DNS,可是这个功能放在 ENS 相比鸡肋,用的东谈主很少。其实这内容上是一个 did 团聚的鸿沟,访佛的材干个东谈主以为更恰当放到团聚 DID 中去闭幕,比如像 mask network 的 nextid,cloak network 的 zkid。不错把 proof 作念好,向即成 twitter 等 web2 的 handler 一样,去集成 web2 域名。
部署我方的 web3 域名本文终末给各人提供一个立异后的 ENS 域名合约版块 ( https://github.com/axtrur/xens-contracts 立异内容以及部署格式详见 readme),便捷各人自行部署我方的 web3 域名,深入归拢 web3 域名系统的假想道理 部署 goerli 测试网号召
OWNER_KEY={{account private key}} INFURA_ID=c03713652e3c4ef6a3c09ea7dbf58711 npx hardhat deploy --network goerli (INFURA_ID 不错替换成我方的 infuraid,现实前删除 deployment/goerli 文献夹以及 deployment/goerli_result.json)
部署测试网 goerli 后,现实注册剧本 ens.js 注册域名
OWNKEY={{account private key}} INFURA=https://goerli.infura.io/v3/c03713652e3c4ef6a3c09ea7dbf58711 node ens.js
就不错到 opensea 测试网稽查一经部署的 nft 了,比如我部署的.buidlerdao 后缀的域名就不错到 opensea 测试网稽查一经部署的 nft 了,比如我部署的.buidlerdao 后缀的域名
https://testnets.opensea.io/collection/buildlerdao-name-service

ENS 域名行为 web3 域名的先驱,在假想上有许多值得鉴戒的所在,咱们看到的.bnb,.nft 也王人是基于 ens 合约基础上搭建的。但愿通过本骚各人对 ENS 的假想从举座到细节有个深入的深入,web3 域名不单是是一个 NFT,他有着更长远的道理。同期 web 域名只是一个很小的脱手,礼服随之普及、生态集成以及各人对 did 的探索,原生链上的可读的 web3 域名将会被团聚起来,使得每个用户在加密天下里王人有个归拢的柬帖描摹,更好地去贯串多链生态,贯串用户。
ENS 域名系统关联 EIP 尺度
EIP 137 - 注册表 https://eips.ethereum.org/EIPS/eip-137
EIP 181 - 反向注册器 https://eips.ethereum.org/EIPS/eip-181
EIP 205 - ABI 解析 (ABI()).
皇冠客服飞机:@seo3687EIP 619 - SECP256k1 公钥解析 (pubkey()).
EIP 634 - 文本纪录解析 (text()).
EIP 1577 - 内容 hash 解析 (contenthash()).
EIP 2304 - 多Token地址解析 (addr()). 新的纪录类型不错随时通过 EIP 尺度化智力进行界说
主网部署的 ENS 合约
注册表合约:0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e
根合约:0xab528d626ec275e3fad363ff1393a41f581c5897
基础正向注册器合约:0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85
反向注册器合约:0x084b1c3c81545d370f3634392de611caabff8148
默许正向解析器合约:0x4976fb03c32e5b8cfe2b6ccb31c09ba78ebaba41
默许反向解析器合约:0xa2c122be93b0074270ebee7f6b7292c7deb45047
未来王法器合约:0x283Af0B28c62C092C9727F1Ee09c02CA627EB7F5
ENS 域名贵寓
火博体育app官网官网: https://app.ens.domains/
github: https://github.com/ensdomains
合约代码:https://github.com/ensdomains/ens-contracts/tree/master/contracts
线网部署版块:https://etherscan.io/accounts/label/ens
文档:https://ensuser.com/docs/contract-api-reference/ens-contracts-overview.html
往来市集:https://opensea.io/collection/ens
其他 web3 域名系统贵寓
.bnb
官网: https://space.id/
github: https://github.com/Space-ID
往来市集:https://www.element.market/collections/space-id-bnb
.bit
官网:https://www.did.id/
github:https://github.com/dotbitHQ
博彩网站评测往来市集:https://opensea.io/collection/dotbit
.nft
官网:https://nft.space/
往来市集:https://www.element.market/collections/nft-name-service平博棋牌