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

如何阻止Hyperledger BESU网络无交易时自动生成区块?

Hyperledger Besu无交易时自动出块问题解决方案

问题场景截图

问题根因

Hyperledger Besu默认PoA共识(Clique/IBFT 2.0/QBFT)的原生机制为固定间隔出块,无论交易池是否存在待打包交易,都会持续生成空区块,最终导致存储资源被快速占用。

修复方案

方案1:开启空块跳过机制(生产/测试环境通用,最推荐)

无需修改共识规则,仅调整配置即可实现「有交易才出块,无交易则暂停出块」的效果,不影响网络正常运转。

  • 若使用IBFT 2.0/QBFT共识:
    1. 新建网络可直接修改创世块配置,在config字段下添加"emptyBlockPeriodSeconds": 0即可,配置示例如下:
    {
      "config": {
        "qbft": {
          "blockperiodseconds": 2,
          "epochlength": 30000,
          "requesttimeoutseconds": 4,
          "emptyBlockPeriodSeconds": 0
        }
      }
    }
    
    1. 已上线运行的网络无需修改创世块,直接在节点启动命令中添加参数 --miner-empty-blocks-enabled=false 即可生效(要求Besu版本≥21.10.0)。
  • 若使用Clique共识:
    直接在节点启动命令中添加参数 --miner-create-empty-blocks=false 即可关闭空块生成。

方案2:临时关闭挖矿功能(仅适用于测试环境)

如果是本地测试网络,不需要持续出块,可直接关闭节点的挖矿能力,需要出块时再手动开启:

  • 启动时关闭挖矿:添加启动参数 --miner-enabled=false
  • 运行时动态关闭:调用节点JSON-RPC接口执行 miner_stop,后续需要出块时调用 miner_start 即可。

存储清理优化

如果已经生成大量空块占用了磁盘空间,可执行Besu存储修剪命令释放空间:

besu --data-path=<你的节点数据目录路径> storage prune

内容的提问来源于stack exchange,提问作者Isha Padalia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:27:03