Account Model
TIX Protocol uses Program Derived Addresses (PDAs) for all on-chain state. This ensures addresses are deterministic and can be computed by any client.
Account Overview
ProtocolConfig
[b"protocol_config"]
Global settings
Integrator
[b"integrator", integrator_identity]
Marketplace/operator account
Event
[b"event", event_id (u64 LE)]
Event configuration
PermitPage
[b"permit_page", event_pubkey, page_idx (u64 LE)]
Ticket storage (128 per page)
Listing
[b"listing", event_id (u64 LE), ticket_id (u64 LE)]
Secondary market listing
ProtocolConfig
The account that captures global settings and the protocol admin.
Seeds: [b"protocol_config"]usdc_mint
Pubkey
USDC token mint address
default_royalty_vault
Pubkey
ATA for protocol fees
authority
Pubkey
Protocol operator public key
usdc_decimals
u8
USDC mint decimals (usually 6)
permit_fee_minor
u64
Fee per ticket issuance
p2p_transfer_fee_minor
u64
Fee per direct transfer
resale_fee_bps
u16
Resale fee in basis points
Integrator
Represents a marketplace or operator that can create events and issue tickets.
authority
Pubkey
Integrator's signing authority
status
IntegratorStatus
Active or Suspended
treasury_usdc
Pubkey
USDC treasury ATA (derived from PDA)
Integrator Status
Event
Stores event-scope configuration and minting counters.
integrator
Pubkey
Owning integrator PDA
integrator_authority
Pubkey
Authority at creation time
royalty_bps
u16
Royalty percentage (basis points)
min_royalty_floor
u64
Minimum royalty in minor units
royalty_recipients
[RoyaltyRecipient; 3]
Up to 3 royalty recipients
total_supply
u64
Maximum tickets for event
minted
u64
Current issued count
sealed
bool
Reserved for future supply-locking
RoyaltyRecipient
Note: The sum of all recipient
bpsmust equal the event'sroyalty_bps.
PermitPage
Each page holds up to 128 permits. Pages allocate once and then mutate.
event
Pubkey
Parent event account
page_idx
u64
Page index
permits
Vec<Permit>
Array of permits (max 128)
Permit
Permit Status
0
Active
Can be transferred or sold
1
Used
Redeemed at venue
2
Void
Cancelled/refunded
Listing Lock (Padding)
The padding bytes encode listing lock information:
padding[0]
Lock flag (1 = listing active)
padding[1..9]
Expiry timestamp (i64 little-endian)
Listing
Tracks secondary-market listings and enforces per-ticket locks.
seller
Pubkey
Listing creator
ask_price_minor
u64
Price in USDC minor units
buyer_allow
Option<Pubkey>
Optional allowlisted buyer
payout_ata
Pubkey
Seller's payout destination
expires_at
i64
Listing expiration timestamp
listed_at
i64
Listing creation timestamp
permit_version
u64
Expected permit version
active
bool
Whether listing is active
PDA Derivation Examples
Last updated