Practical knowledge about Phoenix perpetuals on Solana: public reads, exact ticks/lots, trader identity, delegation, order/cancel outcomes, margin, and experimental signing. This material does not describe the Phoenix web framework or the older spot-market program.
Freshness: public metadata and documentation checked through 2026-10-03; evaluated SDK surface is Rise 0.5.28 with @solana/kit 4.0.0. Dated live/simulation observations appear separately. There are no individual wallet/account records, strategies, or workload tuning values.
Annotations distinguish observed / verified (dated limited evidence), according to documentation / public source (not necessarily live-tested), implementation safeguard (client mechanism), and experimental / not verified (unresolved behavior). New upstream functionality is not automatically implemented in the toolkit.
Files
| File | Covers | Open when |
|---|---|---|
| api-and-reads.md | Public REST, exact state/view parsing, slots and stable reads | Reading account or market state |
| markets-and-numbers.md | Tick/lot formula, statuses, isolated-only, RWA bands | Quantizing or checking market eligibility |
| orders.md | Packets, exact identities, fills, cancel evidence, unknowns | Interpreting a transaction |
| account-and-delegation.md | Base58, headers, capabilities, binding, key risk | Checking ownership or delegation |
| margin.md | Equity/free margin, mark-valued reserve, fees | Evaluating margin evidence |
| signing-and-sidecar.md | Dependencies, one-signature intents, journal, unsigned delegation | Working with the experimental signer |
| rate-limits-and-costs.md | Packet/CU ceilings, fees, REST/RPC pacing | Budgeting resources |
| ops.md | Startup/recovery sequence, diagnostics, verification | Validating or recovering |
| pitfalls.md | Dated traps and unresolved mechanics | Reviewing changes |
Quick answers
Which identity goes to which read? State uses owner authority and PDA index; trader view uses the trader PDA. → api-and-reads.md §1
What is a price tick? tickSize × 10^(baseLotsDecimals - 6) dollars per unit. → markets-and-numbers.md §1
Can base-lot decimals be negative? Yes; -2 means a 100-unit lot. → markets-and-numbers.md §1
Why are bid IDs rounded? They are u64 values at least 2^63; JS numbers cannot preserve them. → orders.md §2
Does confirmed mean filled? No. Parse return data, posted lots, rejection events, and slot-qualified delta. → orders.md §3
Does cancel success mean removal? No. Cold/no-found operations can be no-ops. → orders.md §5
Will resting reduce-only shrink? It did not in the observed book. Matching after flat exposure remains unverified. → orders.md §4
What is the book ceiling? 64 limit orders per trader, market, and side according to evaluated SDK source. → orders.md §5
What price reserves resting margin? Mark valuation, with tiers and risk factors; the simple limit-price estimate is insufficient. → margin.md §2
Is after-hours closed? It can trade inside a fresh static execution band; stop using cached bands at transition. → markets-and-numbers.md §3
Can a timeout be retried by re-signing? No. Retain one signature and resolve/rebroadcast the same bytes. → signing-and-sidecar.md §3
Is isolated trading included? Metadata and state decode are included; child-account orchestration is not. → markets-and-numbers.md §2
Open questions (summary)
- Resting reduce-only after flat, post-only reduce-only/market acceptance, capacity rejection envelope, and cancel-batch CU. → orders.md
- Band-edge inclusivity and clamped IoC behavior. → markets-and-numbers.md
- Idle snapshot-slot meaning and replica lag. → api-and-reads.md
- SwapNative key-risk feasibility, delegate operations for isolated children, and delegation overwrite causes. → account-and-delegation.md
- Full margin/risk-cancellation semantics and current RPC/REST quotas. → margin.md, rate-limits-and-costs.md
- The packaged signer and unsigned delegation builder are experimental and require current-chain validation. → signing-and-sidecar.md
Code
The packages/phoenix-kit package (@markpaper/phoenix-kit, Apache-2.0) implements numbers, addresses, markets, REST/account reads, exact IDs, pending memory, order-result helpers, on-chain layouts, binding, margin classification, and pure operational checks. The signer and unsigned delegation builder are separate experimental entries. Application strategy and account-specific tuning are excluded.
Disclaimer
This is not financial advice or a recommendation to trade. Current APIs, program deployments, eligibility, fee schedules, and market rules can change. Offline tests and unsigned simulation do not authorize live transactions or prove all current-chain behavior.
Sources and license
Official sources: Phoenix documentation, https://perp-api.phoenix.trade, Rise public source, and Solana documentation. Topic files identify the relevant route and proof class.
The knowledge base and phoenix skill are CC BY 4.0. Publication or adaptation requires attribution, a link to the original and license, and indication of changes. See LICENSE.md.
© markpaper authors. Licensed under CC BY 4.0: when publishing or adapting this material, credit “markpaper — Phoenix knowledge base” and link to the original and the license.