|
买个博彩app98博彩(www.duhgu.com) 原文标题:《Buidler DAO:以 ENS 为例深度分析 Web3 域名系统的本事盘算推算》葡京娱乐娱乐城 原文作家:@axtrur,Buidler DAO 推敲员 图片起头:由 无界疆土AI 用具生成 Web3 域名系统,简而言之即是基于区块链的散播式、去中心化的定名系统,与 DNS(互联网称号就业)访佛,将地址(钱包地址或智能合约地址)解析成可读性的称号,本文以 ENS 为例从举座架构到合约细节,深度判辨 web3 域名系统的盘算推算。 www.duhgu.comENS 前置见地域名层级访佛 DNS,ENS 域名层级雷同分为 根域名,即""域名 一级域名,访佛.com,.cn,在 ens 中有.eth 和.reverse( 用来纪录反向解析,背面会提到 ) 二级域名,即用户注册的域名,比如 axtrur.eth 三级域名,用户注册了二级域名之后,不错创建或修改该二级域名下的三级域名,比如 app.axtrur.eth 买个博彩appNameHash 算法由于智能合约凯旋与可读的域名进行交互成果低,因此 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 的内容哈希,甚而纪录邮箱品级三方账号手脚文本纪录。 10月3日,华为在阿联酋迪拜举办以“时尚,更跨越”为主题的华为穿戴战略及新品发布会,华为WATCH GT 4、华为WATCH ULTIMATE DESIGN非凡大师等旗舰产品亮相,再次吸引了世界的目光。 《三国志·武帝纪》记载,公元193年徐州牧陶谦和下邳阙宣合并进攻泰山郡的华、费二县,当时曹操身为兖州牧,泰山郡属兖州所有,所以作为反击,曹操一征徐州。曹操连下十多座城,陶谦向田楷(公孙瓒的部下)求救,田楷和刘备领兵前来,曹操因为军粮不足,郯城也攻不下就退兵了。 反向解析(主网上有默许的反向解析器合约):矜重纪录钱包地址所绑定的域名,即反向域名的 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 对应的注册表信息。 98博彩菠菜大平台根域名的 owner 是根域名: .eth 一级域名的 owner 是正向注册器也即是(BaseRegistrarImplement.sol) 用户注册的二级、三级域名的 owner 是用户本人,同期不错解放成就解析器合约地址 .reserve 一级域名 owner 是 ENS 的多签钱包地址 2024年欧洲杯.addr.reserve 二级域名 owner 是反向注册器,ens 现时主网版块限度器合约注册的时候默许通过反向注册器(ReverseRegistrar.sol)成就反向解析纪录(比如具体用户地址.addr.reverse 指向 axtrur.eth),用户无需提供 gas 以外的反向注册费。 用户注册域名的反向三级域名的 owner 皆默许指向反向注册器合约,同期 resolver 默许指向反向解析器合约 上头咱们依然把 ENS 域名合约盘算推算以及主要的模块梳理结束,ENS 在盘算推算上比如模块拆分,权限拆分方面皆是值得咱们鉴戒的,然则当今主网上的 ENS 也存在一些问题。 皇冠客服飞机:@seo3687ENS 存在问题与惩处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()). EIP 619 - SECP256k1 公钥解析 (pubkey()). EIP 634 - 文本纪录解析 (text()). EIP 1577 - 内容 hash 解析 (contenthash()). EIP 2304 - 多Token地址解析 (addr()). 新的纪录类型不错随时通过 EIP 轨范化方法进行界说 主网部署的 ENS 合约 注册表合约:0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e 根合约:0xab528d626ec275e3fad363ff1393a41f581c5897 基础正向注册器合约:0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85 现在很多运动员已经成为了明星,他们的粉丝团也越来越大。反向注册器合约:0x084b1c3c81545d370f3634392de611caabff8148 默许正向解析器合约:0x4976fb03c32e5b8cfe2b6ccb31c09ba78ebaba41 默许反向解析器合约:0xa2c122be93b0074270ebee7f6b7292c7deb45047 限度器合约:0x283Af0B28c62C092C9727F1Ee09c02CA627EB7F5 ENS 域名贵寓 官网: https://app.ens.domains/ 皇冠hg86agithub: 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 皇冠api接口官网: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葡京娱乐娱乐城 |