Crest

Solana staking yield has two parts. The base is inflation, paid on a published schedule. The crest is Jito tips, paid when blocks are in demand. Crest is a swap market on the crest: lock a fixed rate for it, or take the floating side. Every epoch settles in SOL.

Example rates, % a year

Crest, from your cursor
0.48%
Fixed
0.80%
Base
5.35%

Move the cursor.Swipe sideways across the water. It stands in for network activity: the faster it moves, the higher the crest.

Simulated epoch 1slot 0 / 432,000

Each epoch settles the crest against the fixed rate.

Where the yield comes from

A staker on Solana earns one number each epoch. Here it is 6.44% a year, taken from an example series.

It has two sources. The base, 5.35%, is inflation, paid on a published schedule. The crest, 1.09%, is Jito tips, paid by whoever wants their transactions in a block first.

Across 180 epochs, about a year, the base steps down slowly on schedule. The crest rides on top and moves with on-chain activity.

With the base taken away, what is left is the part nobody can plan on: between 0.47% and 2.14% a year in this series.

A Crest market runs one to ten epochs, here the last 10, about 20 days, and prices the crest against a fixed rate: 0.80% a year, which the app quotes per epoch as 0.0044%.

Each epoch settles on its own, in SOL. If the crest beats the fixed rate, the long side is paid the difference. If it falls short, the short side is. The notional here is 100,000 SOL.

After 10 epochs the long side won 4 and lost 6, and ends +0.79 SOL. Both sides deposited two worst-case epochs up front, so every payment was already in the program.

Notional 100,000 SOL, example

Long crest
0.00 SOL
Short crest
0.00 SOL

0 of 10 epochs settled

Who takes each side

Every Crest position is a swap between the floating crest and a fixed rate. Whoever holds one side is paid exactly what the other side pays.

Long crest

Receives
the crest
Pays
the fixed rate
Is paid when
blocks are busier than the market priced in
For
anyone with a view on Solana activity. When trading is hot, the crest pays.

epoch 91fixed 0.80% · example series · hover to read an epochepoch 180

Short crest

Receives
the fixed rate
Pays
the crest
Is paid when
activity comes in under the fixed rate
For
validators, LST issuers and stakers. Their income already rides on the crest with no way to hedge it; this turns that part into a known number.

One number per epoch

Settlement needs the crest as one on-chain number for each epoch. The index follows a named cohort of up to eight validators: the program reads each one's Jito tip distribution for the epoch itself, and divides the total by the cohort's stake.

The stake comes from a record signed by two parties and posted with a bond. Anyone can recompute it during the challenge window and challenge with a bond of their own. Only a final checkpoint settles.

Counts
Jito tips paid to the cohort for the epoch, read from the Jito program's own accounts
Divides by
the cohort's active stake at the start of the epoch
Leaves out
inflation, priority fees, and every validator outside the cohort
How the index is built →

Jito tips, epoch 180SOL

  1. v01129.4
  2. v02115.9
  3. v0377.5
  4. v0479.6
  5. v0556.6
  6. v0636.7
  7. v0737.2
  8. v0824.3

Sum of 8 validators557.2

Example figures. The live cohort and every checkpoint are in the app's Index view.

Checkpoint · epoch 180

Tips, read on chain
557.2 SOL
Stake, attested
9.64M SOL
Crest this epoch
0.0058%

tips ÷ stake, per epoch

final · the epoch settles

What runs on chain

Four account types and fourteen instructions. Deposits are native SOL held in each position's own account. Crest's servers only read the chain and have no say over balances.

Accounts

  • cohortVec<ValidatorSpec>, ≤ 8
  • oraclePubkey
  • reviewerPubkey
  • dispute_authorityPubkey
  • challenge_slotsu64
  • proposal_bond_lamportsu64
  • challenge_bond_lamportsu64
  • max_rate_ppbu64
  • liquidation_reserve_lamportsu64
  • max_checkpoint_delay_epochsu64
  • market_idu64
  • start_epochu64
  • end_epochu64
  • tick_ppbu64
  • rate_cap_ppbu64
  • epochu64
  • total_tip_lamportsu64
  • stake_lamportsVec<u64>
  • rate_ppbu64
  • challenge_deadline_slotu64
  • statuspending | disputed | rejected | final
  • source_hash[u8; 32]
  • proposal_bond_lamportsu64
  • challenge_bond_lamportsu64
  • makerPubkey
  • takerPubkey
  • maker_longbool
  • notional_lamportsu64
  • fixed_rate_ppbu64
  • maker_balance_lamportsu64
  • taker_balance_lamportsu64
  • next_epochu64
  • statusopen | active | closed
  • close_reasonmatured | under margin | timeout

Choices made

  • IndexJito tips of a named cohortovera reference LSTAn LST's growth can't separate inflation, deposits and pool fees from tips without the pool's own records.
  • Settlement assetSOLoverUSDCTips are paid in SOL, so the swap settles in the asset it measures and needs no price feed.
  • Maturity1 to 10 epochsoverlongerA change to fee or block-building rules reaches only the markets open at the time.
Every field and instruction →