Live proof-of-impression

Real display ad · Panorama network demo

Scroll the IAB-style unit into view to emit a signed impression, then watch the live analytics board for Comment Protocol, TopNews Network, and Panorama demo placements hitting the same market-api.

A real ad on our real ad network

The creative in the live purple card below is not a looping Lottie or a canned animation. It is loaded like production inventory: Panorama's market-api chooses an active line item for this placement, returns the creative and click URL, and your browser renders it. Partner sites (for example Comment Protocol and TopNews) use the same API and placement model—so what you trigger here is the same contract as live traffic on those domains when their embeds are pointed at your deployed API.

When measurement consent is on, we only send an impression after the ad has been actually visible in your viewport for a short dwell time. That keeps "counts" closer to real human attention than a fire-and-forget pixel hidden off-screen.

How it works, without the jargon

  1. Ask for an ad. The page calls the decision endpoint; the server replies with which campaign won and which image or asset to show.
  2. Show it like any display unit. You get a normal banner (IAB-style sizing) with a label so it is obvious this is sponsored.
  3. Measure fairly. We watch scroll and visibility. If the ad is on screen enough, we record one impression event—not before.
  4. Sign and store. That event is sent to /ingest/impression with a deterministic mock signature (demo stand-in for a production key) and a correlation id, so analytics and the proof strip can line up with the same spine we use toward verifier-grade workflows.

Live unit on the real network

This is the same path production publishers use: your browser asks our ad server for a decision, we return a real creative and landing URL, and you see an ordinary display unit. When you keep measurement on, we only count an impression after the ad has been on screen long enough (viewability + short dwell)—then we send one signed event to our API so analytics and proofs line up. The small strip under the ad is the technical receipt preview (RISC Zero story in simulation here).

Technical detail: the decision call is GET /v1/display/ads against your configured NEXT_PUBLIC_API_URL. Partner traffic uses the same placement ids, so it rolls into the board further down this page.

Full ad network →API reference →
Top News Denizen ad creative
Live Panorama demo: TopNews crypto display (adexample) — Ostium RWA DEX
Panorama · display · RISC Zero–ready
Sponsored crypto: Ostium RWA DEX on TopNews — Explore Today (opens topnews.network/crypto)

Fetching flight from market-api…

Correlation 69187878-587idle
Top News Degen ad creative

Proof + RISC Zero lane

Panorama keeps PII off the journal: only hashed, policy-safe fields bind into the guest program digest. Production path: market-api → proof-worker → risc0-prover (RISC0_PROVER_CMD) → verifier-api → settlement intents (see /docs).

Correlation
69187878-587a-4250-b3f9-8bbd8674298a
Ad decision (display)
fallback config (no fill from /v1/display/ads)
Campaign (effective)
cmp_panorama_display_network_seed
RISC Zero mode
sim
Guest tag
Journal digest (simulated binding)
Image ID
Last ingest

Web2 ad networks vs Panorama (Web3-native style)

Short side-by-side of what you are used to in programmatic Web2 versus what we are building toward with open APIs, attestable impressions, and programmable settlement.

TopicTypical Web2 stackPanorama (this demo + roadmap)
Where the ad decision livesOften a black box inside a closed SSP or exchange; publishers see aggregates, not the raw policy.GET /v1/display/ads returns a concrete line item, creative, and placement ids you can log and reproduce.
Proof you got what you paid forTrust counterparty dashboards; disputes settle slowly with spreadsheets and make-goods.Viewability-gated events plus a signed payload path toward proof-of-impression (PoI) and third-party verification—not just a blind pixel.
Identity and correlationCross-site profiles and device graphs; hard for users or auditors to inspect.Correlation ids tie events across services; this demo keeps PII out of the journal and focuses on policy-safe measurement fields.
SettlementNet-30 to net-90 style rails; money movement disconnected from delivery proof.Roadmap: tie verified receipts to programmable settlement (on-chain or hybrid) so payout follows evidence, not only trust.
Who can build on itPartner APIs are proprietary; switching costs are high.HTTP-first: any site can embed the slot, reserve placements in the marketplace, and roll into the same market-api analytics you see on this page.

Partner display inventory (live rollup)

These are the placement IDs wired in market-api today. When commentprotocol.com or topnews.network embeds Panorama with the same IDs and API origin, impressions aggregate on this page — no cross-site scripting required beyond your normal embed or iframe.

Comment Protocol · stars 300×250

Static embed and marketplace row ship from this repo; their team drops the snippet under the starfield.

placementId catalog-commentprotocol-stars-hero-display-300x250

TopNews Network · display 300×250

Same mechanics as Comment Protocol: reserve the placement here, then embed on topnews.network with your production market-api origin.

placementId catalog-topnews-network-display-300x250

Live display tracking & analytics

Pulled from GET /v1/display/analytics on your market-api. When Comment Protocol or TopNews embeds the same placement IDs against this API, counts appear here in near real time.

Loading analytics…

What happens after the impression fires

Same spine as production: ingest → proof-worker → RISC Zero → verifier → settlement

01

Publisher SDK

Signed impression from the slot you are viewing.

02

Ingestion

market-api accepts /ingest/impression with correlation scope.

03

RISC Zero guest

Journal digest binds viewability rules (sim here; prover in risc0-prover).

04

Verifier

Checks receipt + policy before settlement intent.

05

Settle + optimize

Verified outcomes drive payout + campaign updates.

Trust: PII stays out of the journal; only policy-safe, hashed bindings feed RISC Zero and verifier lanes.

One-line technical recap

When the ad is truly in view, Panorama records a signed, correlated impression, binds a RISC Zero–style journal digest to that event, and hands off to the same verifier/settlement path you run behind market-api — with a public analytics surface so partner inventory is visible alongside Panorama-owned demo slots.