在前端开发中,使用 npm 管理包是必不可少的一部分。而 @ensdomains/subdomain-registrar 则是一个非常有用的 npm 包,它能够帮助我们在 Ethereum Name Service(ENS)上注册子域名。
什么是 ENS?
在介绍 @ensdomains/subdomain-registrar 之前,我们需要先了解什么是 ENS。
ENS 是一个基于以太坊的域名系统,它允许用户在以太坊上使用易于记忆的名称来代替长长的以太坊地址。比如,一个以太坊地址为 0x1234567890abcdef1234567890abcdef12345678
的用户,可以使用 myname.eth
来代替该地址。这样用户就可以更轻松地与其他人交流以太坊地址。
@ensdomains/subdomain-registrar 的作用
@ensdomains/subdomain-registrar 则是一个封装了 ENS 注册和管理子域名的工具。在使用该包之前,需要先了解一些基本的概念。
ENS 中的域名
在 ENS 中,根域名为 .eth
。这也是 ENS 的顶级域名。比如 myname.eth
这个域名就是一个以 .eth
结尾的子域名。在 myname.eth
这个域名下又可以注册更多的子域名。
Registrar
Registrar 是一个负责管理一个特定域名的注册系统。在 ENS 中,每个域名都可以有不同的 Registrar 来管理。
Registrar 通常会提供两个主要的功能:
- 域名注册
- 域名管理
Resolver
Resolver 则是一个负责域名解析的系统。在 ENS 中,每个域名都可以有不同的 Resolver 来解析。
Resolver 通常会提供一个将域名映射到以太坊地址的函数。这允许用户使用易于记忆的名称来代替长长的以太坊地址。
@ensdomains/subdomain-registrar 的功能
@ensdomains/subdomain-registrar 为我们提供了一种简单的方式注册和管理 ENS 子域名。该包具有以下功能:
- 为指定的域名注册子域名
- 更新域名的
resolver
来将子域名映射到address
- 向指定的地址转移域名所有权
- 将域名转移给一个新所有者
@ensdomains/subdomain-registrar 的安装和使用
在使用 @ensdomains/subdomain-registrar 之前,需要先确保你已经安装了 Node.js 和 npm。接下来,我们可以使用以下命令来安装该包:
npm install @ensdomains/subdomain-registrar
创建一个 Registrar 对象
创建一个 Registrar 对象需要指定以下信息:
- 域名
- Ethereum 服务器地址
- 账户地址
- 当前账户的私钥
const registrar = Registrar({ tld: 'eth', // 域名后缀 network: 'mainnet', // Ethereum 网络 account: '0x123...', // 当前账户地址 privateKey: '0x456...', // 当前账户的私钥 registry: '0x1da...', // ENS 注册表地址 resolver: '0x7c5...', // ENS 域名解析器地址 });
子域名注册
注册子域名需要先检查该子域名是否可用,然后才能进行注册。如果该子域名已经被注册,该操作将会失败。
const available = await registrar.isAvailable('mydomain'); if (available) { await registrar.register('mydomain', addressToRegister); console.log('successfully registered the subdomain'); } else { console.log('the subdomain is not available'); }
域名管理
@ensdomains/subdomain-registrar 还提供了许多函数来管理域名。比如,我们可以使用 setResolver
将指定的子域名映射到一个 Ethereum 地址。
await registrar.setResolver('mydomain', '0x1234567890abcdef1234567890abcdef12345678');
我们还可以将域名所有权转移给另一个地址或账户。
await registrar.transferOwnership('mydomain', '0x123...');
上述示例程序演示了如何使用 @ensdomains/subdomain-registrar 包与 ENS 交互。该程序提供了一个全面而有用的示例,包括域名注册、域名管理和其他功能。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f2781433b0ab45f74a8ba08