Pairing

Pair Markets

The Pair Market is the object PairStreet creates: a token, a Pair Instrument, and the infrastructure that connects them. One record holds the relationship; separate ledgers hold the money.

The canonical object

A Pair MarketPair MarketThe canonical pairing of an internet asset with a financial Pair: TOKEN × PAIR INSTRUMENT, plus the Pair Vault, configuration and accounting that connect them. is TOKEN × PAIR INSTRUMENT. The token is a Pump coin on Solana. The Pair InstrumentPair InstrumentThe financial exposure a Pair Market is paired with, such as Tokyo Residential or Swiss Government Debt. A catalog object with a provider, an eligibility policy and a status. is the financial exposure it is paired with. The Pair Market is the record that binds the two and carries everything the Pair needs: a vault, a route, a configuration and an accounting history.

Each Pair Market is one row in the Pair Registry table pair_markets. It is written once, when /api/launch/confirm has verified the launch transaction on-chain (mint and creator present in the transaction, bonding curve account exists). In the same database transaction PairStreet writes the token identity to tokens, the market state to token_markets, and two activity events: TOKEN_CREATED and PAIR_SELECTED.

A Pair Market has exactly one token and exactly one Pair Instrument. The instrument is chosen before the launch is signed and is part of the market’s identity from its first block.

Anatomy

The object has three parts. The token side describes the internet asset and its market. The Pair side describes the financial exposure and what has been delivered against it. The infrastructure underneath is what moves value from one side to the other.

Pair Market anatomyARCHITECTURE
Tokentokens · token_markets
PAIR MARKET
$TOKYO × TKYRES
Pairpair_instruments
Pair infrastructurepair_vaults · pair_settlements · reward_epochs
Hover or focus a field.
Hover or focus a field to see what it holds and the column that stores it.

Figure summary: Center: the Pair Market, $TOKYO × TKYRES. Left, token: mint, creator, market, price, market cap, volume, holders. Right, Pair: instrument, provider, asset, Pair Value, settlements, rewards, eligibility. Bottom, Pair infrastructure: vault, router, epochs, accounting. Each field maps to a stored column.

Where each part is stored

Token identity lives in tokens (mint, name, symbol, creator wallet, metadata URI, launch transaction signature). Market data lives in token_markets and is refreshed from Pump bonding-curve accounts, DexScreener and GeckoTerminal. The Pair Market row in pair_markets holds the relationship and a read model of the Pair’s accounting.

The read model is derived, not authoritative. Settlement amounts, purchases, epochs and allocations are written to ledger tables (pair_settlements, pair_purchases, reward_epochs, reward_allocations), and the aggregates on pair_markets are rebuilt from those rows. Accounting documents the invariants.

Lifecycle states

A Pair Market moves through two tracks at once. The token track follows the Pump market: created, bonding, graduated. The Pair track follows the financial Pair: configured, active, settling. The diagram draws them as one path so the order is easy to read.

Pair Market state machineARCHITECTURE
curve completesholdrulesCREATEDBONDINGPAIR CONFIGUREDACTIVESETTLINGGRADUATEDPAIR PAUSEDPROVIDER DEGRADEDINSTRUMENT RESTRICTEDDELISTED

Hover a state for its meaning.

Reached on mainnetActivates per routeHeldTerminal
Green-bordered states are reached on Solana mainnet today. Active and Settling begin when the instrument’s provider route and the market’s vault custody activate. Held states return to Active when their cause clears.

Figure summary: Happy path: CREATED, BONDING, PAIR CONFIGURED, ACTIVE, then ACTIVE and SETTLING alternate on the settlement cadence. Branches: BONDING to GRADUATED when the curve completes; ACTIVE to PAIR PAUSED, PROVIDER DEGRADED or INSTRUMENT RESTRICTED; PAIR PAUSED, PROVIDER DEGRADED and INSTRUMENT RESTRICTED can lead to DELISTED. Created, bonding, Pair configured and graduated are reached on mainnet today; active and settling activate per instrument route.

On mainnet a launch passes through Created, Bonding and Pair Configured inside one launch confirmation: the instrument is chosen before signing, and the configuration is written with the row. The market then waits in Pair Configured, trading normally, until its instrument’s provider route and its vault custody activate. From Active, a market alternates with Settling on its settlement cadence, hourly by default.

Graduation belongs to the token track. A graduated coin trades on PumpSwap; its Pair is unchanged. The three held states belong to the Pair track and leave token trading open.

States in the data

The conceptual states map onto real enums. The Pair track is stored in pair_markets.status; the token track in token_markets.graduationStatus; settlement progress in pair_settlements.status; instrument health in pair_instruments.status.

Conceptual Pair Market states mapped to stored values
Conceptual stateStored asWhat it means
CREATEDtokens.launchTxSignatureLaunch verified on-chain; TOKEN_CREATED and PAIR_SELECTED emitted.
BONDINGgraduationStatus: bonding | graduatingTrading on the Pump curve; graduating once bonding progress reaches 75%.
GRADUATEDgraduationStatus: graduatedCurve complete, trades on PumpSwap; graduatedAt set.
PAIR CONFIGUREDstatus: settlement_disabledShown as “Settlement pending”. nextSettlementAt is null until the route activates.
ACTIVEstatus: activeEligible for the settlement scheduler when nextSettlementAt is due.
SETTLINGpair_settlements.status: scheduled → planning → executingOne settlement in flight; ends completed, failed or cancelled.
PAIR PAUSEDstatus: pausedSettlement held for this market.
PROVIDER DEGRADEDpair_instruments.status: provider_unavailableThe router plan carries blockers; the settlement row records them.
INSTRUMENT RESTRICTEDinstrument_eligibility rulesREGION_RESTRICTED, UNKNOWN_REGION or KYC_REQUIRED for a given viewer.
DELISTEDstatus: closed (instrument: deprecated)No further settlements for the market.

pair_markets.status

Pair Market status enum
ValueMeaningSettlement scheduler
pendingRegistered; Pair configuration not yet complete.Skipped
activeRoute and vault custody active.Runs when nextSettlementAt is due
pausedSettlement held for this market.Skipped
settlement_disabledConfigured and trading; the instrument route has not activated for this market. Mainnet markets register here.Skipped
closedRetired. History remains readable.Skipped

The scheduler selects markets whose status is active and whose nextSettlementAt has passed. Every other status keeps the market out of settlement while its token keeps trading. Settlement describes the run itself, and Failure Modes covers the held states.

token_markets.graduationStatus

bonding while the coin trades on its curve; graduating once bonding progress reaches 75%; graduated when the curve completes and the coin trades on PumpSwap. PairStreet’s trade panel builds bonding-curve trades today; PumpSwap routing for graduated markets is in integration.

Key fields

The Pair Market row is small. Most of it is identity and configuration; the rest is a read model of the Pair’s ledger. The full column list, with types, is in Schemas.

Key pair_markets fields
FieldHolds
tokenId, pairInstrumentIdThe two sides of the Pair Market.
creatorWalletThe launching wallet.
pumpLaunchAddress, pumpMarketAddressThe Pump bonding curve, and the PumpSwap pool after graduation.
pairVaultAddressThe market’s Pair Vault. Set when its vault custody activates.
status, ledgerModeLifecycle state; live or development ledger.
configurationEconomic sources, reward methodology, cadence, exclusions and fee split (jsonb).
pairValueUsd, pairAssetBalanceRawPair Value and the Pair Asset quantity held.
pairAssetAcquiredLifetimeUsd, pairAssetAcquiredLifetimeRawEverything ever acquired for the market.
holderRewardsLifetimeUsd, holderRewardsClaimableUsd, holderRewardsClaimedUsdReward totals by state.
eligibleHolders, settlementsCountCounts from the latest epoch and settlement history.
nextSettlementAt, lastSettlementAtSettlement schedule.
createdAt, graduatedAtTimestamps.

Configuration

configuration fixes how the Pair behaves. Every launch writes the same defaults: the Pair Vault share of creator fees (2,500 bps) and launch economics as economic sources, time-weighted balance as the reward methodology, a 3,600 second settlement cadence, and the creator and liquidity accounts excluded from rewards. The fee split is read back from chain after launch and stored with its status: locked, pending or mismatch.

5,000 creator + 2,500 protocol + 2,500 Pair Vault = 10,000 bps
Fee split recorded in configuration.feeSplit, in basis points.
pair_markets rowplaceholders in angle brackets
{
  "id": "<pair-market-uuid>",
  "tokenId": "<token-uuid>",
  "pairInstrumentId": "<tokyo-residential-uuid>",
  "creatorWallet": "<creator-wallet>",
  "pumpLaunchAddress": "<bonding-curve-address>",
  "pumpMarketAddress": null,
  "pairVaultAddress": null,
  "status": "settlement_disabled",
  "ledgerMode": "live",
  "configuration": {
    "economicSources": [
      { "source": "creator_fees", "bps": 2500 },
      { "source": "launch_economics" }
    ],
    "rewardMethodology": "time_weighted_balance",
    "settlementCadenceSec": 3600,
    "excludeCreator": true,
    "excludeLiquidityAccounts": true,
    "excludedWallets": [],
    "feeSplit": {
      "creatorBps": 5000,
      "protocolBps": 2500,
      "pairVaultBps": 2500,
      "treasury": "5XAwPtXHkA2F68tEj5ZAZePJfJWH4tzGkeQiqK5ggfRg",
      "status": "locked",
      "sharingConfig": "<fee-sharing-config-pda>",
      "checkedAt": "<iso-timestamp>"
    }
  },
  "pairValueUsd": 0,
  "settlementsCount": 0,
  "nextSettlementAt": null,
  "lastSettlementAt": null,
  "createdAt": "<iso-timestamp>",
  "graduatedAt": null
}

The example is the shape of a mainnet Pair Market right after launch: status settlement_disabled, no vault address yet, no settlements, fee split locked. Values in angle brackets are placeholders. How Pairing Works follows the same market from launch to a holder’s claim.