# 心跳块展示修复日志 ## 工单编号 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