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会缓存一些旧的区块和交易数据,有时候这些缓存会和本地节点的状态不一致。你可以这样操作:- 打开Metamask,点击目标账户右上角的三个点,选择「账户详情」
- 拉到页面最底部,点击「重置账户」(放心,这个操作不会删除你的账户,只是清除缓存的历史数据)
- 重置完成后,再重新查看账户余额,应该就能看到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
相关产品推荐
相关产品推荐

