← Index
Source: docs/features/xyz-demo.md (auto-generated by scripts/generate-docs-html.mjs — edit the .md, not this file)

XYZ Demo (employer showcase)

Goal: one employer-facing page (/xyz) that bundles three demo items for the trade[XYZ] / Unit Labs — Sr. Software Engineer spec, so a reviewer sees the whole story in one click instead of hunting across /portfolio and /ap2. Theme: data → monetized data → on-chain data. Each item still plugs into an existing rabbit surface; this page is the curated front door.

Live now — C2 searcher: submit a bundle (Sepolia) ✅

A working form at the top of /xyz (built 2026-07-01) submits a bundle to the Flashbots Sepolia relay (relay-sepolia.flashbots.net). Enter to / value / gas, hit 번들 제출 → the server simulates (eth_callBundle) then submits (eth_sendBundle), returning bundleHash, target block, nonce, and the raw simulation.

Security: the signing key never touches the browser. app/api/bundle/route.ts (Node runtime, login-required) reads SEPOLIA_RPC + ADMIN_KEY from env, signs with ethers v6, and talks to the relay's JSON-RPC directly (no @flashbots/ethers-provider-bundle SDK → avoids the ethers-v5 peer pin). Client app/xyz/BundleSubmit.tsx only posts form fields. Testnet only, keep ADMIN_KEY funded with a little Sepolia ETH. Source design: New First / C2 in ../tasks/jul-01-rabbit-design.md. Note: on Sepolia, inclusion isn't guaranteed per block (needs a Flashbots-connected builder to win the slot) — resubmit as needed.

Full walkthrough: c2-searcher.md explains what the sample does end-to-end (bundle concept, sign → eth_callBundle sim → eth_sendBundle, the Flashbots auth header, security, and how to run it).

Live now — C4 PBS relay observer dashboard ✅

A working, key-free dashboard already shipped at /xyz (built 2026-07-01). It polls several public relay Data APIs (proposer_payload_delivered) server-side and aggregates:

Impl: app/api/relay/route.ts (server proxy, Promise.all fan-out + 6s timeout per relay, public via middleware.ts), app/xyz/RelayDashboard.tsx (client, 20s auto-refresh). Reference: flashbots/relayscan. Source design: New First / C4 in ../tasks/jul-01-rabbit-design.md. Mainnet public data — no keys.

The three items

1. Price-oracle + relayer mini-service

Small Go service: pulls real-time prices for ~3 assets (one equity, one FX pair, one commodity — mirroring XYZ's markets), medianizes multiple sources, exposes a signed price feed over HTTP/WebSocket. Prometheus metrics + a Grafana panel.

2. x402 "agent pays for the price feed"

Reframe rabbit's AP2/x402 loop so the paid resource is item 1's oracle feed: agent requests price → 402 Payment Required → pays → receives signed quote → retries.

3. Hyperliquid HIP-3 market viewer + indexer

Read-only indexer subscribing to a Hyperliquid testnet HIP-3 perp market; indexes trades/funding into Postgres (Prisma) with reconnect + gap-backfill; renders a live order-book/funding panel.

Suggested demo cut

If time is short, ship 1 + 2 end-to-end — one "priced data, paid for by an agent" story that hits the oracle, pricing, Go, and 0→1 bullets most directly. Item 3 is the strongest blockchain signal but the heaviest; pull it in only if the Hyperliquid testnet integration lands cleanly.

Open questions

Features

Misc experiments (absorbed from ETC)

The old ETC catch-all was retired — its /etc slot was repurposed as JayVerse (jayverse.md). Its small, low-stakes experiments live here now; keep them deliberately small, and if one grows, promote it to its own menu + feature doc.