以太坊 - 如何使用JavaScript和QuickNode解析ENS域名 - Quicknode

  • QuickNode
  • 发布于 2024-06-28 12:24
  • 阅读 26

这篇文章介绍了以太坊命名服务(ENS)的功能及其注册和解析过程,结合了 QuickNode 平台和 JavaScript 的 web3.js 库。文章内容详细,包括必要的准备工作、设置步骤和代码示例,使读者能够在 Sepolia 测试网络上进行 ENS 域名的注册与解析。

概述

ENS 是基于以太坊的领先命名系统;它将以太坊地址映射到可理解的名称。在本指南中,我们将进一步了解 ENS 以及如何使用 JavaScript 库 web3.jsQuickNode 解析 ENS 域名。

前提条件

依赖项 版本
node.js 16.13.2>=
web3 ^4.1.2

什么是 ENS 域名?

ENS 或以太坊名称服务是一个以太坊去中心化应用程序,允许用户将其可被 EVM(以太坊虚拟机)读取的以太坊地址映射为人类可读的形式,如 name.eth。ENS 类似于互联网的 DNS(域名服务),因为它允许用户注册 .eth 域名。ENS 域名在网络中被映射。不存在 ICANN 管理的域名的顶级权威或版权。

任何人都可以注册一个 ENS 域名,将其以太坊钱包地址或合约地址映射为一个当前可用且未被他人注册的 .eth 域名。这由 ENS 的注册合约管理。注册合约维护一个域名、子域名、域名所有者、域名解析器和生存时间缓存的列表。如果与域名有关,可能就在注册合约中。解析器是遵循 ENS 合约标准的智能合约;如果他们遵循 ENS 规则和标准,任何人都可以被解析。

例如,如果有人希望找到 name.eth 的地址,他们必须向 ENS 注册处发送请求以获取 name.eth 的解析器地址。然后,一旦他们获得该地址,他们会向解析器发送请求以获取注册的映射地址。

现在在我们学习如何通过他们的去中心化应用程序注册 ENS 域名之前,让我们确保在 Sepolia 测试网中有 ETH(以支付域名和交易费用),并创建一个 QuickNode 端点,以便快速访问以太坊的 Sepolia 测试网络。

设置 QuickNode 以太坊端点

为达成我们的目的,让我们在 这里 设置一个免费的 QuickNode 账户,并轻松创建一个以太坊端点,以从以太坊 Sepolia 测试网获取数据。

在端点页面,点击 创建一个端点,然后选择 以太坊 Sepolia 测试网。一旦你的端点创建完毕,请随时保留 HTTP 提供者 URL,因为接下来的部分将需要它。

QuickNode 端点

在 MetaMask 中添加自定义网络

现在,你可能想知道为什么我们要在 MetaMask 中设置一个自定义网络。虽然我们可以使用网络列表中找到的默认 Sepolia 测试网。我们将使用一个自定义网络,这样就不会受到速率限制,并且可以享受高达 8 倍的速度。

打开你的 MetaMask 钱包,点击右上角的省略号。点击 设置 --> 网络 --> 添加网络。当新页面打开时,点击 MetaMask 扩展页面底部的 手动添加网络 按钮。

将会要求你输入以下字段:

  • 网络名称:Ethereum QuickNode(可以根据你的喜好进行调整)
  • 新 RPC URL:YOUR QUICKNODE HTTP PROVIDER URL
  • 链 ID:11155111
  • 货币符号:ETH
  • 区块链浏览器 URL(可选):https:/etherscan.io/

之后,点击保存。如果你返回到 MetaMask 扩展并点击网络选项卡,你应该现在看到你的 QuickNode Sepolia 网络可用。确保它已被选中。

在接下来的部分,我们将通过 QuickNode 的多链水龙头为我们的 MetaMask 钱包充值。

QuickNode 多链水龙头

到目前为止,我们已经创建了一个 QuickNode 端点并在 MetaMask 中添加了自定义网络。接下来,我们需要获取一些测试 ETH 以支付 ENS 域名的购买费用和Gas费用。

导航到 QuickNode 多链水龙头 并连接你的钱包或粘贴你的钱包地址。你需要选择 Ethereum 链和 Sepolia 网络,然后请求资金。

有了资金,我们可以进入注册 ENS 域名的步骤。

如何注册 ENS 域名

我们将在 Sepolia 测试网上注册我们的 ENS,因为在主网上注册域名需要将真实 ETH 发往注册合约,并支付Gas费用。因此在继续之前,请确保你在浏览器中安装了 MetaMask 并在 Sepolia 测试网上有一些 ETH。还要确认你在 MetaMask 中使用的是你添加的自定义 Sepolia 网络。

接下来,前往 ENS 网站;点击连接到 MetaMask 钱包。现在,搜索你想用来注册地址的名称。

如果搜索的名称已被注册,你将看到以下屏幕:

如果搜索的名称(testname.eth)可以注册,你将看到有关注册该域名所需 ETH、Gas费用和你希望持有该域名的年数的信息。

点击“请求注册”,并在 MetaMask 弹出窗口中确认交易。一旦交易确认,步骤 1 将完成。请至少等待一分钟(但不超过 24 小时)以完成步骤。这是为了防止抢跑交易。然后确认来自 MetaMask 窗口的第二笔交易。

第一笔交易生成我们希望生成的名称的秘密承诺哈希,并提交给注册控制器。第二笔交易提交对域名的注册请求以及第一笔交易生成的秘密承诺哈希。

现在,将名称设置为主要的 ENS 名称:

现在我们已经注册了 ENS 域名,接下来让我们看看如何使用代码解析它。为此,我们将使用 web3.js 和我们之前创建的 QuickNode 端点连接到 Sepolia 区块链。

如何使用 JavaScript 解析 ENS 域名

打开一个终端窗口,并在终端中粘贴以下命令以创建一个项目文件夹、创建 index.js 文件并安装所需的依赖项:

mkdir ensResolver
cd ensResolver
npm init --y
npm install web3@4.1.2
echo > index.js

现在,打开项目目录中的 index.js 文件,并将以下代码复制粘贴到其中:

const { Web3 } = require('web3');

const web3 = new Web3("YOUR_QUICKNODE_ENDPOINT");

async function getBalanceForENS(ensName) {
    try {
        const ownerAddress = await web3.eth.ens.getAddress(ensName);
        if (!ownerAddress || ownerAddress === '0x0000000000000000000000000000000000000000') {
            console.error('无效的 ENS 所有者地址。');
            return;
        }

        const balance = await web3.eth.getBalance(ownerAddress);
        console.log(`地址 ${ownerAddress} 的余额: ${web3.utils.fromWei(balance, 'ether')} ETH`);
    } catch (error) {
        console.error('发生错误:', error);
    }
}

getBalanceForENS('YOUR_ENS_DOMAIN_HERE');

YOUR_QUICKNODE_ENDPOINT 替换为我们在上一步获得的 HTTP 提供者 URL,以及将 YOUR_ENS_DOMAIN_HERE 替换为我们之前获得的 ENS 域名。

对上述代码的解释:

关键组件:

1. Web3 初始化

脚本通过要求 Web3 库初始化 Web3,然后使用作为 YOUR_QUICKNODE_ENDPOINT 提供的 QuickNode 端点创建一个新的 web3 实例(即 const web3 = new Web3())。

2. 函数getBalanceForENS

此异步函数检索给定 ENS 名称的以太余额。

关键步骤:

  • 将 ENS 解析为地址:函数首先使用 web3.eth.ens.getAddress 将 ENS 名称解析为相应的以太地址。
  • 检查有效地址:检查解析得到的以太坊地址是否有效。如果为 null 或以太坊零地址(0x000...000),则显示错误消息,指示无效的 ENS 所有者地址。
  • 检索余额:如果以太坊地址有效,则使用 web3.eth.getBalance 获取余额。
  • 显示余额:余额(原始单位为 Wei)使用 web3.utils.fromWei 转换为 Ether,然后在控制台中显示。

在脚本的最后,调用 getBalanceForENS 函数,以 ENS 名称作为输入查询 ENS 名称。

错误处理

脚本内置错误处理。如果在解析 ENS 名称或获取以太余额的过程中出现任何问题,错误将被捕获并在控制台中显示。

保存文件并在终端中使用以下命令执行它:

node index.js

输出应该类似于:

Node.js 输出

结论

感谢大家的努力。在本指南中,我们了解了 ENS 是什么,如何注册 ENS 域名,以及如何使用 JavaScript 库 web3.js 和 QuickNode 解析 ENS 域名。现在,你可以在主网上按照这些步骤来申请你自己的 .eth 域名!

订阅我们的 通讯,获取更多关于以太坊的文章和指南。如果你有任何反馈,请随时通过 Twitter 联系我们。你也可以在我们的 Discord 社区服务器上与我们聊天,那里有一些你见过的最酷的开发者 :)

我们 ❤️ 反馈!

让我们知道 如果有任何反馈或新主题的请求。我们很乐意听取你的意见。

  • 原文链接: quicknode.com/guides/eth...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
QuickNode
QuickNode
江湖只有他的大名,没有他的介绍。