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