Vellar Playground
The 5-level challenge

Prove you understand the whole loop.

Five checkpoints, each backed by something real: a settlement Horizon confirms, a verdict re-checked against the live facilitator, an attack the bench actually refused, a live catalog lookup, and one question about the ownership latch.

0 / 5 levels verified

Level 1Settle your first payment

Pay the demo resource once, end to end, from a real funded testnet wallet.

Proof: the 64-character settlement transaction hash Station 1 produces.

Level 2Read what you signed

Run Station 2's live re-verification: fetch the seller's own 402 challenge and confirm it names the bound owner address.

Proof: the verdict text Station 2's own verification step produces (it's read-only, so there's no XDR to sign here).

Get a wallet first (Station 1's "Get started"), then run "Verify now" — Station 2 needs no payment, just a wallet.

Level 3Break the catalog

Run Station 3's attack bench and get at least one attack to be refused for the right reason.

Proof: the reason code (or HTTP status) from any attack result stored locally with passed === true.

No passing attack result stored yet in this browser.

This level is checked entirely from your browser's own attack-bench history — no live re-check needed, since a past attack result is itself the evidence.

Level 4Get discovered

Confirm the demo resource appears in the facilitator's live public catalog with an ownership state beyond "unverified".

Proof: a live GET against the facilitator's /discovery/resources — not a cached result.

live GET /discovery/resourcesNot yet checked

The demo resource is shared infrastructure everyone hits — there's no separate station to go complete first; clicking below performs the live fetch and computes pass/fail on the spot.

Level 5Understand the ownership latch

Once a binding is verified, what happens if a later settlement arrives from a different address?

Proof: a correct written answer — this is a comprehension check, not something verified on-chain.

Run this on your machine

Reads the live catalog and prints the demo resource's ownership state — the same real value Level 4 checks above.

curl
curl -s https://vellar-facilitator.onrender.com/discovery/resources \
  | jq '.items[] | select(.resource == "https://vellar-seller-demo.onrender.com/quote") | .trust.ownershipState'

# Expect: "verified" — the same real value Level 4's live check reads.