什么是 ens
ENS 是 Ethereum Name Service 的缩写,是以太坊网络上的命名服务协议。它将以太坊的地址与易于记忆的名称映射在一起,方便用户直接使用名称而不用关心地址。
ENS 的使用需要一个专门的库支持,而 npm 包 ens 就是这样的一个库。它提供了方便的 API,可以实现 ENS 的查询、解析等操作,带来更好的用户体验。
安装 ens
使用 ens 前,需要先安装它。可以在命令行中使用以下命令进行安装:
npm install --save ens
ens API
ens 提供了以下 API,可以用来实现各种操作:
.lookup(domain)
该方法用于查询域名对应的地址,其中 domain 是要查询的域名,返回值是 Promise 对象。
示例代码:
const ens = require('ens'); ens.lookup('mydomain.eth').then((address) => { console.log(address); }).catch((error) => { console.log(error); });
.reverse(address)
该方法用于查询地址对应的域名,其中 address 是要查询的地址,返回值是 Promise 对象。
示例代码:
const ens = require('ens'); ens.reverse('0x1234567890123456789012345678901234567890').then((domain) => { console.log(domain); }).catch((error) => { console.log(error); });
.resolver(domain)
该方法用于查询域名的 resolver 地址,其中 domain 是要查询的域名,返回值是 Promise 对象。
示例代码:
const ens = require('ens'); ens.resolver('mydomain.eth').then((resolver) => { console.log(resolver); }).catch((error) => { console.log(error); });
.addr(domain, coin)
该方法用于查询域名的指定币种的地址,其中 domain 是要查询的域名,coin 是要查询的币种,返回值是 Promise 对象。
示例代码:
const ens = require('ens'); ens.addr('mydomain.eth', 'ETH').then((address) => { console.log(address); }).catch((error) => { console.log(error); });
ens 的使用示例
下面是一个完整的 ens 使用示例:
-- -------------------- ---- ------- ----- --- - --------------- ----------------------------------------- -- - ------------------------- -------- - --------- ------ --------------------- ---------------- -- - --------------- - - ------- - - -------- - -------- ------ --------------------- ------------------ -- - --------------- - - ------ - - - -------- ----- - ---------- ------ ---------------- ------- ----------------- -- - --------------- - - ------ - - - --- ----- - --------- ---------------- -- - ------------------- ---
在这个示例中,我们先使用 ens.lookup
方法查询域名对应的地址,然后使用 ens.reverse
方法查询地址对应的域名。接着,使用 ens.resolver
方法查询域名的 resolver 地址,最后使用 ens.addr
方法查询指定币种的地址。
总结
ens 是以太坊网络上的命名服务协议,在使用 ens 时,我们可以使用 ens 包提供的 API,实现方便的查询、解析等操作。在代码实现方面,我们需要使用 Promise 进行异步处理,并注意错误处理。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066e26a563576b7b1ecf40