Pulsegrid 是一款面向 Portaldot 生态系统的独立监控与事件取证应用程序。它帮助节点运营商、基础设施团队和应用开发人员跟踪 RPC 故障,从首次检查失败开始,涵盖证据保留、链上证明以及独立确认的恢复过程。
在线应用:https://pulsegrid-psi.vercel.app
演示视频:https://youtu.be/qqoFV-eVB3o
源代码:https://github.com/greyw0rks/pulsegrid
## 问题背景
应用程序依赖 RPC 端点来读取链上状态并提交交易。当端点无法访问、返回格式错误的数据或指向意外的网络时,用户会在运营商提供明确解释之前遇到故障。仅靠状态徽章提供的上下文信息很少:故障何时开始、监控器检查了什么,以及恢复是否真的发生?
当底层观察数据消失,或者将交易提交视为确认时,事件报告也难以审计。运营商需要一条持久化的记录,将观察到的问题、支持报告的证据以及链上确认的记录连接起来。
Pulsegrid 通过一个统一的工作流程来弥合这一差距,涵盖观察、证据保留和可验证的事件报告。
## 工作原理
### 1. 观察配置的端点
一个 TypeScript worker 会探测已注册的 EVM HTTP 和原生 WebSocket reyw0rksRPC 端点。EVM 检查会验证链 ID 并读取当前区块号。原生检查会读取最新的区块头、同步状态和创世哈希,并在配置的情况下验证创世哈希。每个保留的观察结果都包含其时间、结果、延迟、相关链数据以及任何错误或警告。
仪表板使用保留的检查结果显示端点状态、24 小时正常运行时间、延迟百分位数、区块进度和观察历史。这些测量数据描述的是配置的端点;应用程序不会发现验证者,也不会推断整个网络的健康状况。
### 2. 检测故障与恢复
一个确定性策略会在开启事件之前统计连续失败次数,并在记录恢复之前统计连续成功次数。计数器在长时间的监控间隙后重置,因此断开的检查不会被当作一个连续的序列。检测状态和观察数据会持久化存储在 PostgreSQL 中。
### 3. 保留可验证的证据
故障开启和恢复各自会生成一个独立的规范 JSON 文档,其中包含用于该状态转换的观察数据。Pulsegrid 会递归地对对象键进行排序,并使用 Keccak-256 对规范 UTF-8 JSON 进行哈希处理。审核人员可以检索源文档,检查其包含的检查项,并重新计算摘要。
完整的证据保留在链下;其摘要将报告绑定到特定的源文档。
### 4. 证明与核对
一个专用的报告者会将证据摘要提交到 Portaldot V3 测试网上的 Solidity IncidentRegistry(事件注册表)。Worker 会分别跟踪签名、提交、回执确认和观察到的恢复状态。保留的交易数据和数据库作业支持重启后的核对,而不是将缺失的响应视为未提交的证明。
注册表视图会对照 RPC 检查保留的部署回执、运行时代码哈希以及授权报告者。事件在获得回执并匹配证据后被呈现为已确认。
## 核心特性
- **EVM 和原生 RPC 监控:** 网络身份检查、区块观察、延迟、错误和同步警告。
- **清晰的操作仪表板:** 保留的历史记录、正常运行时间和延迟指标、事件状态和监控器新鲜度。
- **独立的开启与恢复证据:** 可下载的规范文档,具有可复现的 Keccak-256 摘要。
- **链上事件证明:** 包含授权报告者的 Solidity 注册表,以及独立的开启和恢复事件。
- **持久化交易跟踪:** 基于数据库的作业,支持 worker 重启后的回执核对。
- **运营商控制:** 经过身份验证的端点注册和暂停/恢复,并带有服务器端主机限制。
- **可检查的部署证明:** 保留的回执、合约身份和报告者验证。
- **响应式公共界面:** 落地页、仪表板、事件详情、证据和注册表视图。
## 技术栈
- **前端:** Next.js 16、React 19、TypeScript、Recharts、Lucide 图标和 IBM Plex 字体排版。
- **后端与监控:** Next.js 路由处理程序、Node.js/TypeScript worker、Zod 验证,以及通过 `pg` 驱动程序连接的 PostgreSQL。
- **区块链:** Solidity IncidentRegistry,使用 viem 进行 EVM 读取和交易,使用 Polkadot 工具进行原生网络设置和账户操作。
- **托管:** 应用程序托管在 Vercel,托管存储使用 Neon PostgreSQL,定时监控器通过 GitHub Actions 运行。
- **验证:** Vitest 应用测试、Foundry 合约测试和 Playwright 浏览器检查;本地集成使用 Anvil 和 PostgreSQL。
## 原型演示内容
注册表部署在 Portaldot V3 测试网上,链 ID 为 **420420777**,地址为 **0x9c0d5b9cca49f69ffc7384d5da263689a21f7e22**。一个受控的超时与恢复演练通过实际的 worker 完成,在区块 **303974** 和 **303980** 上确认了真实的开启和恢复交易。两份证据文档和回执保留在公共仓库中。
托管监控器通过 GitHub Actions 每五分钟调度一次。运行可能会延迟,仪表板会显示观察时间和监控器新鲜度,而不是承诺持续监控。
Pulsegrid 的信任边界是明确的:注册表条目仅证明授权报告者提交的内容。它不能独立证明客观的网络中断。演示的演练使用标记为模拟的端点和真实的测试网回执,允许审核人员在理解观察数据来源的同时验证执行过程。
技术实力待考察,创新须努力,生态贡献未见,商业潜力需突出。67分