以太坊私有网络挖矿报sealing paused while waiting for transactions错误如何解决
报错原因
你使用的是Geth的开发模式(--dev模式),该模式默认开启了按需出块规则:只有交易池内存在待打包交易时才会触发出块,无交易时挖矿会自动暂停,避免产生无意义的空块。你执行miner.start()时交易池为空,就会触发sealing paused while waiting for transactions警告,无法出块自然也不会产生挖矿奖励实现以太币增发。
另外补充:你查询到的默认账户1e+77量级的余额是--dev模式默认给开发者预分配的测试余额,正常测试场景下无需额外增发即可直接使用。
解决方法
- 方案1:发起任意交易触发按需出块
不需要修改节点配置,在geth控制台随便发起一笔链上交易,交易进入交易池后会自动触发挖矿出块,出块奖励会自动打入矿工账户(默认是eth.accounts[0]),示例命令:
交易发起后节点会自动完成打包出块,完成后查询账户余额就能看到对应的挖矿奖励增量。// 可选:如果账户锁定先解锁300秒,无密码的话密码参数填空字符串即可 personal.unlockAccount(eth.accounts[0], "", 300) // 发起一笔0金额的自转账交易触发打包 eth.sendTransaction({from: eth.accounts[0], to: eth.accounts[0], value: 0}) - 方案2:配置固定出块间隔
重启节点时新增--dev.period 1启动参数,代表不管有没有交易,每隔1秒自动出块,无需等待交易即可持续挖矿:
按上述命令启动节点后,geth --datadir data/node1 --http --dev --dev.period 1 --http.corsdomain "*" --http.api web3,eth,debug,personal,net,miner --allow-insecure-unlock --mineminer.start()会持续运行,不需要额外触发交易就能持续获得出块奖励。 - 方案3:控制台强制允许空块挖矿
不想重启节点的话,可以在geth控制台执行以下命令强制开启空块打包:// 先设置矿工账户为默认账户 miner.setEtherbase(eth.accounts[0]) // 启动单线程挖矿,允许打包空块 miner.start(1)
内容的提问来源于stack exchange,提问作者Joey Yi Zhao
相关产品推荐
相关产品推荐

