voidly
Voidly Pay · Changelog

What's shipping, in public.

Every meaningful change to the rail. Vault redeploys list both addresses so you can verify. Cron sweeps run every 5 minutes on the worker; relayer state is queryable at /pay/admin.

2026-04-26transparency + first revenue

Public reserves dashboard, tx verifier, and the first $0.01 of x402 revenue moved on the rail.

  • /pay/proof — public proof-of-reserves dashboard. Live RPC read of vault USDC vs Stage 2 credits issued, refreshes every 15s. Backed_one_to_one flag, surplus, deposit + withdrawal tables.
  • /v1/pay/proof — the same numbers, machine-readable. Multi-RPC fallback (llamarpc, publicnode, 1rpc.io) for resilience.
  • /pay/verify-tx — paste any deposit hash, get the credit-mint receipt with DID, amount, block, attestation ID. Same lookup works for off-ramps.
  • /v1/pay/verify-tx/{hash} — public lookup, no auth.
  • /v1/forecast-pro/{country}/30day — first x402-paywalled Voidly endpoint. $0.01 in Voidly Pay credits per call. Returns 30-day shutdown risk vs the free 7-day endpoint.
  • Voidly service DID `did:voidly:PBcsB2avN4ZfDC5yvEwBBT` registered on the rail. Receives forecast-pro payments; will host more paid services next.
  • First revenue transaction settled: buyer DID → service DID, $0.01, atomically tied to the API response. Verified with `voidly-pay fetch <url>`.
2026-04-26agent surface 1.0

AI-agent discovery: agents.txt + pay.healthCheck() + claim flow.

  • /agents.txt — top-level agent discovery, points to faucet bootstrap, vault address, MCP/SDK/CLI install lines.
  • /.well-known/voidly-pay.json — machine-readable Pay card with vault, chain, source verification, skills, rate limits.
  • /pay/claim — 60-second browser-only onboarding. Generates Ed25519 keypair locally, mints DID, opens wallet, claims faucet, downloads key. No install.
  • Manifest now declares stage: "Stage 2" with full bridge object: vault address, chain id, asset, operator, source verification, retired vaults, EIP-1153 reentrancy guard.
  • pay.healthCheck() — single SDK method that aggregates /v1/pay/health + /v1/pay/manifest.json + on-chain USDC balance into a structured pass/fail report.
  • voidly-pay health-check CLI subcommand; @voidly/pay-mcp adds agent_pay_health_check tool (28 total).
  • Storage backend hardened: Node 25 ships a localStorage stub that throws on getItem(); SDK now feature-detects rather than typeof-checks.
2026-04-26end-to-end mainnet proof

First real USDC flowed through Stage 2.

  • Operator wrapped 0.002 ETH → WETH → 4.69 USDC via Uniswap V3 0.05% pool on Base.
  • Approved 4 USDC + deposit("did:voidly:demo-mainnet-1", 4_000_000) on the v1.1.0 vault — tx 0x79bc77b4...
  • Relayer caught the Deposited event in <10s and minted 4_000_000 micro-credits to the demo wallet.
  • Vault USDC balance: 4,000,000 micro = $4. Backed 1:1.
  • pay.healthCheck() now returns ok:true with onchain.vault_holds_usdc reading the actual balance.
2026-04-26sdk @voidly/pay 0.1.2

pay.healthCheck() — one-call trust report for AI agents.

  • pay.healthCheck() returns { ok, stage, vault_address, vault_chain_id, source_verification_url, checks[] }.
  • 6 individual checks: api.reachable, system.not_frozen, manifest.declares_stage2_vault, manifest.vault_on_base_mainnet, manifest.source_verified_link, onchain.vault_holds_usdc.
  • On-chain check uses raw eth_call against public RPC (no viem/ethers dep added).
  • Storage feature-detects functional localStorage (Node 25 fix).
  • @voidly/pay-cli 1.0.2 — voidly-pay health-check [--rpc URL] [--skip-chain].
  • @voidly/pay-mcp 0.1.1 — agent_pay_health_check tool added.
2026-04-26vault v1.1.0

Hardened vault redeployed; old operator key burned.

  • EIP-1153 transient-storage reentrancy guard on deposit + attestWithdraw.
  • Empty / overlong DID rejected; note bound at 256 bytes.
  • Constructor enforces _MAX_DAILY_CAP = 1e8 × 10^assetDecimals.
  • rescueToken(token, to, amount) for non-asset ERC-20s, governance-only, never the asset.
  • New operator key 0xF105…3d48 (old 0x6d3d…4520 drained + retired).
  • Source verified on Sourcify (exact_match).
  • Worker BRIDGE_VAULT_ADDRESS rotated; relayer rewired and watching new vault from block 45216869.
  • Old v1.0.0 vault paused for hygiene.
2026-04-26sdk @voidly/pay 0.1.1

pay.faucet() helper; published to npm.

  • pay.faucet() — sign + POST a faucet envelope without dragging in tweetnacl yourself.
  • Stopped url-encoding DIDs in path segments (workers route was rejecting %3A).
  • @voidly/pay-mcp 0.1.0 published — 27 MCP tools for Claude Code, Cursor, Windsurf.
  • @voidly/pay-cli 1.0.1 published — voidly-pay <command> for shell + CI use.
2026-04-26worker frontend

A2A well-known card now advertises the Stage 2 vault.

  • /.well-known/agent-card.json adds urn:voidly:pay-stage-2-vault/v1 extension with vaultAddress, source URL, caps, deposit guide.
  • /pay landing page: STAGE 2 · LIVE banner + Why-trust-this-rail grid + 6-card sub-page nav.
  • /pay/admin reads on-chain vault state (paused, balance, daily-remaining) from Base RPC.
  • Top nav: Pay sub-pages added to the Developers dropdown.
2026-04-26vault v1.0.0 (retired)

First Stage 2 deploy; superseded by v1.1.0 same day.

  • Retired due to operator key being pasted into a Claude conversation.
  • Status: paused by guardian; do not use.
2026-04-26stage 1.10–1.16

Streams, x402, refunds, disputes, stakes, delegate keys.

  • Hash-chained streams for per-token billing (open → meter → finalize).
  • x402 facilitator with optional Voidly-signed quotes (anti-MitM).
  • Refunds for settled transfers; partial refunds up to original amount.
  • Formal disputes with admin arbitration (refund_full | refund_partial | deny).
  • Reputation stakes — slashed on adverse dispute outcomes.
  • Wallet delegate keys for hot/cold separation.
  • Idempotency-Key middleware (Stripe-style) on all state-changing routes.
  • Anomaly detection (rapid-drain, velocity-spike, failed-flood) with auto-freeze.
  • Per-DID rate limits across 10 buckets.
  • Webhooks (HMAC-signed delivery, retry queue, SSRF guards).
  • Atomic batch transfer (≤100 recipients).
  • Pull-based subscriptions with auto-pause on consecutive failures.
  • /v1/pay/openapi.json (33 paths), /v1/pay/metrics (Prometheus).
  • SSE live stream at /v1/pay/stream/sse.
nextroadmap

Coming up.

  • Multisig governance handover (Gnosis Safe).
  • Multi-RPC consensus on the relayer (defends against false events).
  • Public bug bounty announcement on Immunefi.
  • Spearbit / Trail-of-Bits audit before raising daily cap.
  • Multi-asset support (USDT + DAI on Base).
  • Cross-chain (Optimism, Arbitrum) via the same vault pattern.

Want the deeper protocol view? OpenAPI 3.1 · Bug bounty · A2A card

This page is hand-curated. For the canonical event stream, point any A2A agent at /v1/pay/feed.