Security
How verification and fraud prevention actually work
Every claim below maps to a real function in the ticketing contract. There is no marketing layer sitting on top of a system that works differently underneath.
We never hold your keys
Every write — issuing, transferring, checking in, or reselling a ticket — is built as an unsigned transaction on our servers, signed inside your own Freighter wallet, and only then submitted to the network. Our database has nowhere to store a private key because it never sees one.
Verification reads the chain, not our database
When gate staff scan a ticket, the API asks the Soroban contract directly for that ticket’s current owner and status. A cached copy in our own database is reconciled against that answer on every check — it is never the source of truth.
Check-in can only happen once
The contract enforces the state transition itself: Valid → Used. A second scan of the same ticket is rejected on-chain, not just by client-side logic that a modified app could skip.
Organizers can revoke a fraudulent ticket
A chargeback, a counterfeit report, a policy violation — an organizer can void a ticket on-chain. A revoked ticket can never be checked in, transferred, or resold again, permanently.
Resale price is capped by the contract
Every event sets a maximum resale multiplier when it’s published. Listing a ticket above that cap is rejected by the contract itself — not a terms-of-service line nobody reads.
Royalties settle atomically
When a resale ticket sells, the organizer’s royalty and the seller’s proceeds are paid out in the same on-chain transaction as the ownership transfer. There is no intermediate state where a payment succeeded but ownership didn’t move, or vice versa.
The gate code
Every ticket carries a per-ticket secret embedded in its scannable code. Verifying that code against our records is only the first check — the on-chain owner and status check above is what actually decides whether a scan is valid, so a photographed or forwarded code alone can't be reused once it's been checked in.
Found something that doesn't match this description? The contract, API, and this site are all open source — please open an issue on the relevant repository.