# Portaldot 黑客屋 2026 | Pulsegrid - 监控 Portaldot RPC 端点，保留事件证据，并在测试网上记录开启与恢复证明

**URL:** <https://portaldot.discourse.group/t/topic/238>\
**Category:** Hackathon\
**Created:** [2026 年11 月 9 日 11:15 UTC](https://portaldot.discourse.group/t/topic/238 "2026-11-09T11:15:57Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

作者： ![Grey](https://avatars.discourse-cdn.com/v4/letter/g/b782af/32.png) [@Grey](https://portaldot.discourse.group/u/Grey)\
发布日期： [2026 年11 月 9 日 11:15 UTC](https://portaldot.discourse.group/t/topic/238/1 "2026-11-09T11:15:57Z")

</div>

```markdown
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 的信任边界是明确的：注册表条目仅证明授权报告者提交的内容。它不能独立证明客观的网络中断。演示的演练使用标记为模拟的端点和真实的测试网回执，允许审核人员在理解观察数据来源的同时验证执行过程。

```

---

<div class="post-metadata">

作者： ![ympangbill](https://avatars.discourse-cdn.com/v4/letter/y/779978/32.png) [@ympangbill](https://portaldot.discourse.group/u/ympangbill)\
发布日期： [2026 年11 月 9 日 13:21 UTC](https://portaldot.discourse.group/t/topic/238/2 "2026-11-09T13:21:57Z")

</div>

技术实力待考察，创新须努力，生态贡献未见，商业潜力需突出。67分
