Program ID

Every account the program derives, and what owns what.Every account the program derives, and what owns what.

Every account the program derives, and what owns what.

PDA map

A PDA (program-derived address) is a Solana account whose address is computed from the program and fixed seeds instead of from a private key. No key for it exists anywhere, so only the program itself can sign for the account: no team member, admin, or server holds a key to any vault, treasury, or market account listed below. Every account the program owns is a PDA. There is exactly one Global per deployment, and one of each market-scoped account per listed collection.
The collection seed is an opaque 32-byte identifier chosen at listing time. For an NFT market it is the verified collection mint; for a card market it is a key the relayer config maps to a card+grade or basket spec. The program never interprets it. See Asset classes.

The SOL vault

Each market has a single SOL vault, an account only the program itself can sign for, holding all lamports belonging to that market. The split is tracked by fields on the Market account, not by separate vaults: Outbound transfers are signed by the vault PDA with seeds ["vault", market, vault_bump] via the System Program. The untracked rent-exemption buffer guarantees outflows can never strand the vault in the below-rent-exempt band where system transfers start failing.

Identity escrows

When a launch names a fee receiver by social identity (an X handle, a YouTube channel, an Elite Fourum user) instead of a wallet, that creator’s fee share accumulates in a keyless system-account PDA seeded by ["escrow", sha256("platform:handle")]. No key for the account exists anywhere, so nobody (including the team) can spend it while unverified. After the off-chain nonce-in-bio identity proof, the admin signs release_escrow and the program pays the balance to the wallet the verified creator chose, emitting EscrowReleased.

Deriving addresses in TypeScript

The same derivations used by the test suite:
Stored bumps: Global.bump, Market.bump, Market.vault_bump, Market.mint_bump, Market.treasury_bump, and ShortPosition.bump are persisted at initialization and used for all PDA signing, so clients never need to pass bumps explicitly.