PAR docs

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

PropertyHow the program enforces it
No freeze keyThe PAR mint is a Token-2022 mint created with freeze_authority = None. No account holding PAR can be frozen by anyone.
No upgrade keyinitialize 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 adminThe Protocol account is written once by initialize and never again. There is no instruction that changes a parameter.
Rate set by the borrowerEvery 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 floorredeem swaps PAR for $1 of collateral each, minus a fee of at least 0.5%, always from the lowest-rate troves first.
No lender neededPAR 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

ConstantValueMeaning
MIN_RATE_BPS50Lowest rate, 0.5% a year
RATE_STEP_BPS100.1% between buckets
BUCKET_COUNT246Highest rate is 25% a year
MCR_BPS12,000Minimum collateral ratio, 120%
MIN_DEBT200 PARSmallest debt an active trove may carry
REDEMPTION_FEE_FLOOR_WAD0.5%Lowest possible redemption fee
LIQUIDATION_REWARD_BPS50Liquidator earns 0.5% of the collateral, capped at two tokens
POOL_PENALTY_BPS500The pool takes at most 105% of the PAR it burns
REDISTRIBUTION_PENALTY_BPS1,000Redistribution takes at most 110%
INITIAL_DEBT_CEILING1,000,000 PARPer branch at launch, doubling every 30 days, 12 times
MAX_ORACLE_DEVIATION_BPS200Pyth 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.

WhatAddress
Program (no upgrade key)2JYLMvPgC3FmHd6RMZtLAYtjBXP5rPrKaY8aWXsunLeG
PAR mint (Token-2022, no freeze key)ycTSMY4S5brqnSc3hQmfktFGyvXEtePAL2AcoxENySd
jitoSOL branch6gYLLn8kEALXDqdJ22C5DLw2XDbVoAjjT4hrx9CXKAjA
mSOL branchG4voQ4jKMhvXRhqe63MP8ARTotfWnTVicwaJLTaJzma3
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.