2.5 KiB
2.5 KiB
心跳块展示修复日志
工单编号
Issue #52(心跳块展示问题)
修复时间
2026-02-28
问题描述
explorer.newassetchain.io 区块浏览器显示所有区块交易数均为 0, 用户误以为所有区块都是空块,实际上是 CBPP 协议的心跳块。
根本原因分析
1. 数据层(nac-explorer-api)
- 旧版本:使用 MySQL 注册数据伪造区块数据,未对接 CBPP 节点
- 新版本 v6.0.0:100% 对接 CBPP 节点(9545端口),使用 NAC 原生查询协议(nac_* 方法)
2. 展示层(nac-quantum-browser PHP)
- 旧版本:无心跳块标注,txCount=0 的块无任何区分
- 新版本:心跳块显示黄色 badge 心跳块,鼠标悬停显示 CBPP 宪法原则四说明
修复内容
nac-explorer-api v6.0.0(/opt/nac-explorer-api/src/index.ts)
- 所有区块数据从 CBPP 节点 RPC 9545 读取(dataSource: CBPP-Node-9545)
- 新增字段:isHeartbeat, blockType, blockTypeLabel, blockTypeNote, epoch, confirmations
- 心跳块判断逻辑:txCount=0 且 CBPP 节点确认为心跳块
- 协议标识:protocol: NAC Lens(非以太坊 JSON-RPC)
nac-quantum-browser PHP 层
Index.php processBlock():
- 新增字段:isHeartbeat, blockType, blockTypeLabel, blockTypeNote, blockTypeBadge, confirmations, epoch, dataSource
blocks.html(区块列表页):
- 新增类型列:心跳块显示
- 新增确认数列
- 心跳块行背景微黄(rgba(255,193,7,0.05))
- 心跳块交易数列显示—而非 0
index.html(首页):
- PHP volist 区块行:心跳块显示黄色心跳badge
- JS WebSocket prependBlock:实时推送的新块也正确标注心跳
block.html(区块详情页):
- 区块号旁显示类型 badge
- 心跳块显示 CBPP 宪法原则四说明文字
技术说明
心跳块是 CBPP 协议的正当行为(宪法原则四),不是 Bug:
- 无交易时每 60 秒产生一个心跳块
- 证明网络存活,维持 CBPP 共识状态
- 心跳块 txCount=0,blockType=heartbeat
验证结果
- API 健康检查:blockProductionMode: transaction-driven+heartbeat
- 区块列表页:心跳块正确显示黄色 badge
- 首页实时推送:心跳块正确标注
- 区块详情页:显示心跳块说明
相关文件
- /opt/nac-explorer-api/src/index.ts(v6.0.0)
- /opt/nac-quantum-browser/app/controller/Index.php
- /opt/nac-quantum-browser/view/index/blocks.html
- /opt/nac-quantum-browser/view/index/index.html
- /opt/nac-quantum-browser/view/index/block.html