Overview
PAR is a dollar on Solana that nobody can freeze and nobody can change. You borrow it against staked SOL (jitoSOL or mSOL) at an interest rate you pick yourself, anywhere from 0.5% to 25% a year. Anyone holding PAR can hand it back to the program and receive one dollar of staked SOL for each coin, which is what holds the price at a dollar from below.
The design follows Liquity v2, rebuilt as a native Anchor program for Solana.
What makes it different
| Property | How the program enforces it |
|---|---|
| No freeze key | The PAR mint is a Token-2022 mint created with freeze_authority = None. No account holding PAR can be frozen by anyone. |
| No upgrade key | initialize refuses to run unless the program's upgrade authority is already gone (ProgramUpgradeable error). A live PAR never sits on code someone can still change. |
| No admin | The Protocol account is written once by initialize and never again. There is no instruction that changes a parameter. |
| Rate set by the borrower | Every trove sits in one of 246 rate buckets, 0.5% to 25% in steps of 0.1%. Only the trove's owner can move it (set_rate requires the owner's signature). |
| Dollar floor | redeem swaps PAR for $1 of collateral each, minus a fee of at least 0.5%, always from the lowest-rate troves first. |
| No lender needed | PAR is minted against collateral. Nobody has to deposit dollars for you to borrow. |
The parts
- Branch: one per collateral type (jitoSOL, mSOL). Holds every trove's aggregate debt, the collateral vault, the bucket bitmap, the redemption fee state and that branch's stability pool.
- Bucket: one account per rate step. Troves in the same bucket share its debt through shares, so interest accrues per bucket, not per trove.
- Trove: one per owner per branch. Collateral in, PAR out, never under 120% collateral.
- Stability pool: PAR deposits that repay troves falling under 120% and receive their collateral (up to 105% of the PAR burned), plus all borrower interest.
- Oracles: Pyth and Switchboard SOL/USD, times the stake pool's own SOL-per-token rate.
Numbers in the code
| Constant | Value | Meaning |
|---|---|---|
MIN_RATE_BPS | 50 | Lowest rate, 0.5% a year |
RATE_STEP_BPS | 10 | 0.1% between buckets |
BUCKET_COUNT | 246 | Highest rate is 25% a year |
MCR_BPS | 12,000 | Minimum collateral ratio, 120% |
MIN_DEBT | 200 PAR | Smallest debt an active trove may carry |
REDEMPTION_FEE_FLOOR_WAD | 0.5% | Lowest possible redemption fee |
LIQUIDATION_REWARD_BPS | 50 | Liquidator earns 0.5% of the collateral, capped at two tokens |
POOL_PENALTY_BPS | 500 | The pool takes at most 105% of the PAR it burns |
REDISTRIBUTION_PENALTY_BPS | 1,000 | Redistribution takes at most 110% |
INITIAL_DEBT_CEILING | 1,000,000 PAR | Per branch at launch, doubling every 30 days, 12 times |
MAX_ORACLE_DEVIATION_BPS | 200 | Pyth and Switchboard must agree within 2% for new borrowing |
Status
PAR is live on Solana mainnet. Its program can no longer be upgraded and its mint has no freeze key; anyone can check both on chain.
| What | Address |
|---|---|
| Program (no upgrade key) | 2JYLMvPgC3FmHd6RMZtLAYtjBXP5rPrKaY8aWXsunLeG |
| PAR mint (Token-2022, no freeze key) | ycTSMY4S5brqnSc3hQmfktFGyvXEtePAL2AcoxENySd |
| jitoSOL branch | 6gYLLn8kEALXDqdJ22C5DLw2XDbVoAjjT4hrx9CXKAjA |
| mSOL branch | G4voQ4jKMhvXRhqe63MP8ARTotfWnTVicwaJLTaJzma3 |
| PAR's Switchboard SOL/USD feed (authority: the incinerator) | rLSjLWWtsBS19K1fJTCKp442xK18DBbNvTbebSXr46A |
| Address lookup table (frozen) | GxF6u4W6yknpUDB6xpZePQXYDudPdsRt27QNKsx4pLKb |
Where to go next
- How it works walks through a trove's life, a redemption and a liquidation.
- Security & trust lists exactly what nobody can do, and why.
- Integration shows how to derive every account and build each instruction.