Skip to content

Latest commit

 

History

History
64 lines (52 loc) · 3.73 KB

File metadata and controls

64 lines (52 loc) · 3.73 KB

PulseGrid, Architecture

One-paragraph thesis

Physical devices stream signed telemetry anchored on BOT Chain every interval (blocks are ~0.74s). An autonomous Settlement Agent reads the on-chain anchors, evaluates each device's interval against its on-chain service contract (freshness, uptime, thresholds), and pays or slashes the operator per interval in stablecoin, continuously and gaslessly for devices. On-chain policy, not the agent, is the authority: an operator cannot be paid for data they did not deliver, and the agent cannot stiff an honest operator.

Component sketch

 devices (EOAs)            sponsor / relayer          BOT Chain (968, ~0.74s)
 +----------+   signed     +---------------+  zero-gas +---------------------+
 | devicesim|--telemetry-->|  paymaster    |--tx------>| TelemetryAnchor     |
 |  (Go)    |   + blob      | (MegaFuel-    |           | DeviceRegistry      |
 +----------+   payload     |  compatible)  |           | ServiceContract     |
                            +---------------+           | SettlementVault     |
                                                        | PolicyModule (auth) |
 +--------------+  reads anchors, proposes settle       +---------+-----------+
 | Settlement   |------------------------------------------------+
 | Agent (Go)   |   settleEpoch(deviceId, epoch), re-derived on-chain
 +--------------+
        |
        v
 +--------------+  wagmi/viem, explorer deep-links
 | web (Next.js)|  fleet grid, device detail, settlement ledger, proof panel
 +--------------+

Native BOT Chain integrations (the 35% axis)

Primitive PulseGrid use Status
EOA Paymaster (pm_isSponsorable) gasless device telemetry LIVE (self-hosted sponsor). A fleet anchors gaslessly, device balances flat at 0; mainnet is public MegaFuel
Blob API (EIP-4844) raw telemetry in blobs, KZG/hash anchor on-chain LIVE. Fleet posts type-3 blob txs; blobhash(0) bound on-chain, payload recovered, keccak256 == payloadHash
Sub-second blocks (0.74s) per-interval real-time settlement LIVE. Per-epoch pay/slash settling on-chain
Near-zero fees (base fee 0) continuous micro-settlement economics CONFIRMED. ~0.0071 BOT/anchor, blob DA effectively free
B DEX / stable settlement asset (MockUSD on testnet) mainnet path

Settlement: cannot be gamed by either side

SettlementVault.settleEpoch(deviceId, epoch) is the only settlement entrypoint and its entire caller surface is (deviceId, epoch). The verdict and amount are re-derived on-chain by the PolicyModule pure library from the device-signed anchor count (TelemetryAnchor.anchorsInEpoch) and the stored SLA, so a malicious agent cannot overpay, wrongly slash, pay an un-anchored epoch, or replay (proven by test_Adversarial_*). Dual escrow: a funder-funded payEscrow pays the operator on a good epoch; the operator-staked bond is slashed to the treasury on a bad or missing one. Settlement keys off the count of signed anchors, never raw blob bytes.

The ServiceContract SLA is versioned and append-only: slaOfAt(epoch) resolves the terms in force when an interval was delivered, and new terms are only allowed to take effect from a future epoch, so an interval always settles at its delivered-time terms and cannot be repriced retroactively.

Reputation (non-authoritative)

Alongside settlement, the agent maintains an explainable reputation snapshot (uptime, cadence z-score, dropout/degraded flags) from the same on-chain anchor facts. It informs the dashboard and future risk-priced bonding; it never feeds a settlement verdict.

For live tx hashes and the full reproduce steps, see the repository README.md and docs/WRITEUP.md.