You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ENS名称未配置报错求助:已购ENS但代码调用失败

问题分析与修复方案

错误根源

你遇到的ENS name not configured错误主要有两个核心原因:

  1. 使用的JsonRpcProvider节点未内置ENS解析能力,或节点未同步ENS合约数据
  2. 代码本身存在语法、逻辑错误,同时ENS名称格式不符合解析要求

修复步骤

1. 解决ENS解析问题

方案A:使用支持ENS的公共RPC节点

替换你的空RPC地址为Alchemy、Infura等支持ENS解析的主网节点(比如https://eth-mainnet.g.alchemy.com/v2/your-api-key),这类节点默认内置ENS解析功能。

方案B:手动指定ENS解析器地址

如果必须使用自定义节点,手动添加主网ENS解析器地址:

const provider = new ethers.providers.JsonRpcProvider("YOUR_RPC_URL");
// 主网ENS解析器固定地址
provider.ensAddress = "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e";

方案C:提前解析ENS地址

在代码启动时预先解析ENS地址,避免每次交易时重复解析:

let addressReceiver;
// 在bot函数外或内部提前解析
addressReceiver = await provider.resolveName("ens.eth"); // 注意ENS名称需小写
if (!addressReceiver) throw new Error("ENS名称解析失败,请检查绑定地址");

注意:ENS名称区分大小写,必须使用小写格式(如ens.eth而非ENS.eth)才能正确解析。


2. 修复代码中的语法与逻辑错误

原代码存在函数定义错误、变量未定义、参数传递错误等问题,以下是修复后的完整代码:

const { ethers } = require('ethers');

// 替换为支持ENS的主网RPC节点
const provider = new ethers.providers.JsonRpcProvider("YOUR_RPC_URL");
// 可选:手动指定ENS解析器地址
provider.ensAddress = "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e";

let addressReceiver;
const privateKeys = ["YOUR_PRIVATE_KEY"];

// 修复函数定义错误:async后需加()
const bot = async () => {
    // 提前解析ENS地址
    addressReceiver = await provider.resolveName("ens.eth");
    if (!addressReceiver) {
        console.error("ENS名称解析失败,请检查绑定地址");
        return;
    }
    console.log("解析后的ENS地址:", addressReceiver);

    provider.on('block', async () => {
        console.log('监听新区块中...');

        for (let i = 0; i < privateKeys.length; i++) { 
            const _target = new ethers.Wallet(privateKeys[i]);
            const target = _target.connect(provider);
            const balance = await provider.getBalance(target.address);
            
            // 普通转账gasLimit固定为21000,无需重复估算
            const gasLimit = 21000;
            const gasPrice = ethers.utils.parseUnits('10', 'gwei');
            const totalGasCost = gasPrice.mul(gasLimit);

            // 检查余额是否足够支付gas+转账金额
            if (balance.gt(totalGasCost)) {
                console.log("发现有余额的账户,准备转账");
                const transferAmount = balance.sub(totalGasCost);
                
                try {
                    const tx = await target.sendTransaction({
                        to: addressReceiver,
                        value: transferAmount,
                        gasLimit: gasLimit,
                        gasPrice: gasPrice,
                        // 获取待处理交易的nonce,避免重复交易
                        nonce: await provider.getTransactionCount(target.address, "pending")
                    });
                    await tx.wait(); // 等待交易上链确认
                    console.log(`转账成功!转出金额:${ethers.utils.formatEther(transferAmount)} ETH,交易哈希:${tx.hash}`);
                } catch (e) {
                    console.log(`转账失败:${e.message}`);
                }
            }
        }
    });
};

// 捕获启动时的错误
bot().catch(err => console.error("启动失败:", err));

3. 额外检查项

  • 登录ENS官网确认你的ENS名称已正确绑定以太坊地址
  • 确保使用的RPC节点是以太坊主网节点(测试网需对应测试网ENS地址)
  • 检查私钥格式是否正确,无多余空格或字符

内容的提问来源于stack exchange,提问作者2troy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 07:17:06