IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 如何使用ENS和Chainlink Data Feeds简化智能合约开发者体验 -> 正文阅读

[区块链]如何使用ENS和Chainlink Data Feeds简化智能合约开发者体验

以太坊域名服务或者ENS能为区块链地址提供人类可读的名称,能为以太坊用户和开发者提供简化的体验。用户可以通过清晰易读的地址与智能合约进行交互,而无需使用可能会造成混淆并导致错误的长字符串哈希。

Chainlink正向着使用ENS作为Data Feeds地址的真实来源的方向前进。 考虑到这一点,了解 ENS 是什么以及它的工作原理就尤为重要。

什么是 ENS?

ENS是一项在以太坊区块链上实现分布式、开放和可扩展命名的服务。或者简单地说,它是一个 查找服务 。ENS 有一个简单的任务:它将人类可读的名称映射到机器可读的地址。从这个意义上说,它类似于域名服务或DNS,DNS会将IP地址替换为域名。但 ENS替换的不是IP地址,而是将区块链地址替换为人类可读的名称。

ENS为地址、哈希和其他标识符提供命名服务。在没有ENS的情况下,用户需要知道以太坊区块链上合约或钱包的完整 64 个字符的地址才能与之交互。

ENS提供了使用人类可读地址的方式。 这类可读地址可以用作域名,也可以启用域名层次结构,也就是说可以为ENS地址指定子域名。

ENS对Chainlink意味着什么?

顶级ENS域名由称为注册中心的智能合约所拥有。这些注册中心提供管理子域名分配的规则。在`.eth`顶级域名上,Chainlink与ENS广泛合作,提供`data.eth`域名,其中包含可识别的Chainlink Price Feed地址索引,使得发现以太坊区块链上的Chainlink 预言机网络更加容易。这意味着开发者可以使用诸如`eth-usd.data.eth`之类的人类可读地址来代替诸如`0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419`之类的合约地址。

在Javascript中使用ENS

在支持Web3的 Javascript库中,使用ENS解析域名非常简单。 比如使用 web3.js
var address = ens.getAddress('eth-usd.data.eth');
其他支持ENS的库可以在 ENS文档 中找到。

构造节点哈希

当ENS地址在链上使用时会更加有趣。

ENS文档提供了节点哈希的参考。节点哈希是使用递归算法构造的,该算法会获取域名用 . 分隔的每个部分,并将它们哈希在一起。 基于EIP-137的规范,该算法的伪代码如下:

def namehash(name):
?if name == '':
???return '\0' * 32
?else:
???label, _, remainder = name.partition('.')
???return sha3(namehash(remainder) + sha3(label))

该名称被拆分为几个组件,然后从最后一个组件开始,连接在一起。 eth-usd.data.eth 的节点哈希结果将通过以下步骤创建。

node = '\0' * 32
node = sha3(node + sha3('eth'))
node = sha3(node + sha3('data'))
node = sha3(node + sha3('eth-usd'))

值得注意的是为了哈希算法产生正确的输出,必须首先对名称进行规范化。ENS 要求任何使用它的人都必须遵循 UTS46进行规范化和验证。

考虑到该过程的复杂性,推荐将节点哈希结果传递给合约,而不是在链上计算它。 eth-ens-namehash这个npm 包可以用于操作规范化和哈希计算。

此外,The Graph也有一个可用的API能用于查找有关ENS域名的数据; labelhash 是包含此信息的特定字段,但也还有更多可用信息。

链上解析

一旦定义了ENS地址的节点哈希, 就可以使用它来解析链上的合约地址 。同样,这对解析器很有用,因为节点哈希和人类可读地址是相同的。 解析器作为我们正在解析的实体地址的真实性来源。在本文的情况下,待解析的实体就是Chainlink Data Feeds。

在链上 Solidity 合约中,你需要为 ENS 合约和解析器实现几个接口。

abstract contract ENS {
 ??function resolver(bytes32 node) public virtual view returns (Resolver);
}

abstract contract Resolver {
 ??function addr(bytes32 node) public virtual view returns (address);
}

当这些接口被定义后,就可以创建一个简单的解析器把节点哈希转换为一个地址。

contract MyContract {
???// This is the ENS registry address
???// It is the same address for Mainet, Ropsten, Rinkerby, Gorli and other networks;
???ENS ens = ENS(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e);

 ??function resolve(bytes32 node) public view returns(address) {
 ??????Resolver resolver = ens.resolver(node);
???????return resolver.addr(node);
 ??}
}

总结

Chainlink选择了使用 ENS 作为Data Feeds地址的真实来源。ENS消除了对长地址的使用需求,并有助于确保使用正确的区块链地址进行交互。

要了解有关 ENS 和 Chainlink 的更多信息,可访问Chainlink 文档

访问 chain.link 或阅读 docs.chain.link 上的文档可以了解有关 Chainlink 的更多信息。要讨论集成,请联系专家。

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2022-02-14 21:11:42  更:2022-02-14 21:13:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:57:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码