System Architecture
Overview
TIX Protocol consists of:
Solana Program — An Anchor-based program deployed to Solana
TypeScript SDK — Client library for building transactions
Core Artifacts — Protocol configuration, integrator accounts, event accounts, paged permit storage, and secondary-market listings
Runtime Architecture
┌─────────────────────────────────────────────────────────────────┐
│ Client Applications │
│ (Marketplaces, Mobile Apps, Venue Systems) │
└───────────────────────────┬─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ TypeScript SDK │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
│ │ Address │ │ Instruction │ │ Account Fetchers │ │
│ │ Derivation │ │ Builders │ │ │ │
│ └─────────────┘ └─────────────┘ └─────────────────────────┘ │
└───────────────────────────┬─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Solana Blockchain │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ TIX Protocol Program │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ Protocol │ │ Integrator │ │ Event │ │ │
│ │ │ Config │ │ Accounts │ │ Accounts │ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │
│ │ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ Permit │ │ Listing │ │ │
│ │ │ Pages │ │ Accounts │ │ │
│ │ └──────────────┘ └──────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ SPL Token Program (USDC) │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘Solana Primer
Accounts are State
Every piece of persistent data lives in a named account. Instructions must declare every account they read or write; Solana enforces access at runtime.
Program Derived Addresses (PDAs)
Deterministic, program-owned accounts generated from static seeds. Any client can reproduce a PDA locally. TIX stores all long-lived state in PDAs so addresses never need to be persisted off-chain.
Anchor Accounts & Constraints
Anchor generates the account validation code from #[derive(Accounts)] structs. Constraints such as seeds, has_one, or address enforce invariants before instruction logic runs.
SPL Token & Associated Token Accounts (ATAs)
USDC is represented as an SPL token mint. Each actor needs an ATA (via the Associated Token Program) to hold USDC. PDAs (protocol, integrator) also get ATAs that are derived deterministically.
Unit Conventions
*_fee_cents inputs are specified in USD cents off-chain. On-chain they are scaled into "minor units" (respecting the USDC mint's decimals) before being stored.
Data Flow
Primary Sale Flow
Secondary Sale Flow
Last updated