Security
TIX Protocol implements multiple layers of security to prevent fraud, ensure ticket authenticity, and protect all participants.
Ownership Verification
Cryptographic Proof
Every ticket has a single, verified owner at any time:
Ownership is tied to a Solana public key
Transfers require cryptographic signatures from the owner
No possibility of duplicate or counterfeit tickets
┌─────────────────────────────────────────────────────────────┐
│ OWNERSHIP VERIFICATION │
├─────────────────────────────────────────────────────────────┤
│ │
│ Permit Verification │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ owner: 7xKz... │ ◀────────▶ │ Wallet signs │ │
│ │ status: Active │ │ transaction │ │
│ │ version: 3 │ └─────────────────┘ │
│ └─────────────────┘ │
│ │
│ Only the owner (or authorized integrator) can transfer │
│ │
└─────────────────────────────────────────────────────────────┘No Counterfeit Tickets
Each ticket ID exists exactly once per event
Tickets can only be created by authorized integrators
On-chain records are immutable and auditable
Listing Locks
When a ticket is listed for sale, it's "locked" to prevent double-spend scenarios.
Lock Mechanism
Double-Spend Prevention
The lock ensures:
A ticket can only be sold through one active listing
Direct transfers are blocked while a listing exists
Buyers are protected from receiving already-sold tickets
Version Tracking
Every permit has a version number that increments on any change.
Version Increment Events
Initial issuance
0 → 1
Transfer
+1
Mark as used
+1
Mark as void
+1
Resale completion
+1
Stale Listing Protection
Listings store the expected permit version:
This prevents:
Buying a ticket that was transferred after listing
Purchasing a used/voided ticket
Race conditions in concurrent purchases
Integrator Controls
Suspended Integrator Restrictions
Issue new tickets
❌
Facilitate transfers
❌
Create new events
❌
Existing tickets still valid
✅
Holders can still transfer
✅
Authority Checks
Every instruction validates that the signer has appropriate authority:
Protocol-Level
Integrator-Level
Owner-Level
Error Codes
TIX Protocol returns specific error codes for security violations:
Unauthorized
Signature or authority mismatch
IntegratorSuspended
Integrator is not active
ListingActive
Cannot transfer while listing exists
ListingExpired
Listing has passed expiry time
ListingVersionMismatch
Permit changed since listing
PermitNotActive
Ticket is used or voided
NotPermitOwner
Signer doesn't own the permit
On-Chain Validation
Anchor constraints provide compile-time safety:
Best Practices
For Integrators
Validate Users — Verify buyer identity before issuing tickets
Monitor Activity — Watch for suspicious patterns (bulk purchases, rapid resales)
Secure Keys — Protect integrator authority keys with HSMs or MPC
Audit Logs — Maintain off-chain records of all operations
For Ticket Holders
Secure Wallet — Use hardware wallets for valuable tickets
Verify Listings — Check permit version before purchasing
Check Expiry — Ensure listings haven't expired
Direct Purchases — Buy through official integrator channels
Last updated