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

Hardhat本地节点启动后Metamask查询账户余额报错:Received invalid block tag 4. Latest block number is 0

Hardhat本地节点启动后Metamask查询账户余额报错:Received invalid block tag 4. Latest block number is 0

嘿,我来帮你搞定这个问题!先给你解释下这个错误到底是什么意思:这个报错说明Metamask在尝试请求区块高度为4的数据,但你的Hardhat本地节点目前还没有生成任何区块(最新块高度是0),两者数据不同步,所以导致余额查询失败。

下面是几个针对性的解决步骤,你可以一步步试:

  • 首先确认Hardhat本地节点是否正常运行
    你得保证运行npx hardhat node的终端窗口是处于开启状态的,没有被意外关闭或者出现其他报错。如果节点已经停止,Metamask自然连不上有效的节点数据,就会出现这种问题。

  • 核对Metamask的网络配置
    虽然你已经设置了RPC地址http://127.0.0.1:8545和链ID 31337,但还是建议再检查一遍:有没有输错字符?比如链ID是不是写成了其他数字,RPC地址有没有多打空格?另外,区块浏览器URL可以留空,不需要填写,避免不必要的干扰。

  • 重置Metamask的账户状态
    Metamask会缓存一些旧的区块和交易数据,有时候这些缓存会和本地节点的状态不一致。你可以这样操作:

    1. 打开Metamask,点击目标账户右上角的三个点,选择「账户详情」
    2. 拉到页面最底部,点击「重置账户」(放心,这个操作不会删除你的账户,只是清除缓存的历史数据)
    3. 重置完成后,再重新查看账户余额,应该就能看到Hardhat节点分配的测试ETH了。
  • 手动触发区块生成(可选)
    如果上面的步骤都试过还是没解决,你可以尝试手动让节点生成区块:
    打开一个新的终端窗口,运行命令:

    npx hardhat console --network localhost
    

    进入控制台后,输入以下代码(把<你的账户地址>替换成你导入Metamask的那个地址):

    await ethers.provider.send("eth_sendTransaction", [{from: "<你的账户地址>", to: "<你的账户地址>", value: ethers.utils.parseEther("0.1")}])
    

    这会发送一笔小额的自转账交易,Hardhat节点收到后就会生成区块,区块高度就会增加,Metamask就能正常同步数据并查询余额了。

备注:内容来源于stack exchange,提问作者superhappy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 12:03:15