Skip to content

PDAs and Accounts

Metadata Specification
Document ID TP-REFR-001
Status Canonical (Devnet MVP)
Scope Program-derived accounts and treasury surfaces

This page describes the main program-owned account surfaces used by the TIMLG MVP. It is intentionally focused on what each account is for, how it is derived, and how it should be read.


Global accounts

Account Seed pattern Operational role Holds funds?
Config [b"config_v3"] Global protocol settings, authorities, and runtime guardrails No
Tokenomics [b"tokenomics_v3"] Fee parameters and treasury routing configuration No
RoundRegistry [b"registry_v3"] Global round indexing and synchronization state No

Round-scoped accounts

Account Seed pattern Operational role Holds funds?
Round [b"round_v3", u64_le(round_id)] Canonical timing, pulse, and settlement state for one round No
Round Vault (SPL) [b"vault", round_pda] Round-level token escrow and post-settlement token routing surface Yes

User-scoped accounts

Account Seed pattern Operational role Holds funds?
Ticket [b"ticket_v3", u64_le(round_id), Pubkey(user), u64_le(nonce)] One participation record: commitment, reveal proof, outcome, and claim state No
UserStats [b"user_stats", Pubkey(user)] Aggregated wallet-level counters and streak tracking No
UserEscrow [b"escrow", Pubkey(user)] Optional balance surface for pre-funded / batched / relayed flows Yes, if enabled

Why UserStats deserves its own line

UserStats is not cosmetic metadata. It is the canonical summary surface for participation counters and streak tracking, and it is the correct integration point for future leaderboard or streak-based reward systems.


Treasury and fee surfaces

Account / Surface Seed pattern or identifier Purpose
Reward Fee Pool [b"reward_pool"] Receives the protocol fee applied to winning rewards
Treasury SOL [b"treasury_sol"] Lamport collection surface for service fees and selected cleanup flows

Reading guidance

If you want to know... Read...
Who controls protocol-wide runtime behavior Config
How fees are configured Tokenomics
What happened in a specific round Round + round logs
What happened to one specific ticket Ticket
A wallet's cumulative performance and streaks UserStats
Whether funds are still escrowed at round level Round Vault

Relationship between tickets and user statistics

Surface Granularity Main question it answers
Ticket Per participation "What happened to this exact ticket?"
UserStats Per wallet "What is this participant's cumulative history?"

This separation is deliberate. The protocol should never require an analytics client to scan an entire ticket history just to render high-level wallet counters. At the same time, ticket-level truth remains available for full forensic verification.