Stake Auction Market (SAM)
Bonds Settlements¶
How Marinade settles validator bids each epoch, with formula, worked example, and where to view settlements.
TL;DR: Each epoch, Marinade charges the validator's bond for static bids (CPMPE x active stake) and dynamic commission differences. Settlements run automatically at the start of each epoch for the epoch that just closed.
Overview¶
A settlement is the on-chain transaction Marinade creates each epoch to transfer SOL from a validator's bond to stakers, covering the validator's bid for the previous epoch's delegated stake. Settlements run automatically at the start of each epoch for the epoch that just closed.
What Gets Charged¶
Each epoch a validator receives Marinade stake, their bond is charged for two distinct components.
- Static bid (CPMPE, cost per 1,000 SOL of delegated stake per epoch): A per-1,000-SOL charge based on the active Marinade stake delegated to you and the auction's realized yield for the epoch.
- Dynamic commission bid: A charge based on the actual rewards earned that epoch and the difference between the validator's on-chain commission and the configured bond commission.
These charges are calculated independently and applied together in the settlement transaction.
Settlement Types¶
Bids are only one of the reasons a bond is charged. Every settlement carries a reason and a funder. The full set of reasons, as defined in the validator-bonds program, is below.
| Reason | Trigger | Funder | Recipient |
|---|---|---|---|
Bidding |
Validator won auction stake and owes the bid for the epoch | Validator bond | mSOL stakers |
PriorityFee |
Activating stake pool share calculated by the SAM pipeline | Validator bond | Activating mSOL stakers |
BidTooLowPenalty |
Validator lowered the total offer below the winning level while still holding Marinade stake | Validator bond | Stakers, plus a Marinade and DAO fee split |
BlacklistPenalty |
Validator blacklisted for sandwich attacks or slow slots | Validator bond | Stakers |
BondRiskFee |
Bond underfunded relative to the exposed stake, forcing undelegation | Validator bond | Stakers |
InstitutionalPayout |
Select and institutional native stakers fell below the PSR-percentile APY floor | Validator bond | Institutional and Select stakers |
ProtectedEvent / DowntimeRevenueImpact |
Validator earned fewer vote rewards than expected (vote credits before Alpenglow) | Validator bond, full amount | Stakers |
ProtectedEvent / CommissionSamIncrease |
Validator raised commission above the level declared to SAM | Validator bond | Stakers |
ProtectedEvent / VatUnadmitted |
Validator voted but was not admitted to the Alpenglow reward committee (VAT), so its stakers received no inflation rewards. Replaces the downtime event for that epoch. No 1% grace. | Validator bond, expected inflation minus the validator’s commission (MEV and block rewards not covered) | Stakers |
Downtime coverage. DowntimeRevenueImpact carries a 1% grace (grace_downtime_bps: 100), read as a threshold: a loss under that line is not charged at all. As of MIP-23, effective epoch 1040, the validator bond covers the full downtime charge across the whole uptime range beyond the grace period, and the DAO no longer funds any part of it. Before epoch 1040, the bond covered only the upper half of the loss and a second, DAO-funded settlement covered the rest. min_settlement_lamports is 0.1 SOL. See Protected Staking Rewards.
Two further protected-event kinds, CommissionIncrease and LowCredits, exist in the program for parsing historical data only. They predate SAM and are no longer emitted.
Bonds Calculation Formula¶
The bid charged each epoch combines the static bid component and the dynamic commission component.
Bid Charged = Static Bid + Dynamic Commission Bid
Bid Charged = (Active stake from Marinade at end of epoch x Effective Bid) / 1000
+ (Total Rewards Earned from Marinade Stakers x Commission Rate)
Where:
- Active stake from Marinade: The total Marinade-delegated stake on the validator at the end of the epoch.
- Effective Bid: The realized yield for the epoch in lamports per 1,000 SOL, derived from the auction. This is typically lower than the configured CPMPE since the last-price auction sets the realized yield to the lowest yield on the winning list. See Stake Auction Market for details on how realized yield is set. In source code, Effective Bid appears as
effBidorauctionEffectiveBidPmpe. - Commission Rate: Calculated separately for inflation rewards, MEV (Maximal Extractable Value) rewards, and block rewards. Based on the difference between the on-chain commission and the configured commission in the bond. Marinade uses the lower value between the two (more favorable to stakers) as the rate stakers actually receive.
See Dynamic Bids for full mechanics of the commission portion.
Worked Example¶
Consider a validator with the following configuration in an epoch:
- Active Marinade stake: 100,000 SOL
- Configured CPMPE: 0.10 SOL per 1,000 SOL per epoch
- Realized yield (effective bid): 0.08 SOL per 1,000 SOL (auction floor)
- On-chain inflation commission: 5% (validator keeps 5% on-chain)
- Configured bond inflation commission: 3% (validator commits to keeping only 3%)
- Total inflation rewards earned from Marinade stake: 50 SOL
- MEV and block rewards: 0 (omitted for clarity)
Static bid charge¶
The validator is charged 8 SOL even though their configured CPMPE was 0.10. The auction settled at 0.08, so the validator is only charged enough to deliver the realized yield.
Dynamic commission charge¶
On-chain, the validator's 5% commission keeps 2.5 SOL out of 50 SOL of inflation rewards on Marinade stake (stakers receive 47.5 SOL on-chain). The bond commission of 3% means the validator commits to keeping only 1.5 SOL. The difference of 2% is charged from the bond and delivered to stakers via settlement:
Total settlement charge¶
The validator's bond is debited 9 SOL at the start of the next epoch.
Where to View Settlements¶
Settlement history is published in several places.
- PSR (Protected Staking Rewards) Feed Discord channel: The #psr-feed channel in Marinade Discord posts a per-epoch summary of all settlements, including totals by reason (Bidding, BondRiskFee, and so on) and per-validator amounts. Quickest way to see what was charged.
- Bonds API:
https://validator-bonds-api.marinade.finance/bonds/biddingreturns the current state of every bidding bond, includingfunded_amount,effective_amount,remainining_settlement_claim_amountand the epoch the snapshot was taken for. Use/bonds/institutionalfor Select bonds. - Auction scores API:
https://scoring.marinade.finance/api/v1/scores/sam?epoch=Xreturns the auction outcome including per-validator allocations and bids. ReplaceXwith the target epoch. - Pipeline outputs: Each epoch's full auction output is committed in the ds-sam-pipeline auctions folder under
<epoch>/outputs/results.json. - Settlement data on Google Cloud: Raw settlement JSON is published to the marinade-validator-bonds-mainnet GCS bucket (Google login required).
- PSR dashboard: The PSR dashboard shows the validator's bond balance and recent activity. Refreshes every few hours, so use the auction scores API or pipeline outputs for the freshest data.
Settlement Lifecycle¶
Settlements have a fixed lifecycle from creation to expiry.
- Created at the start of the next epoch: A settlement for epoch X is created at the start of epoch X+1, once the snapshot at the end of epoch X is processed. This is when the bond is debited.
- Active for 3 epochs: During this window, stakers can claim their portion of the settlement. The 3-epoch claim window is defined in the on-chain Validator Bonds config (
epochsToClaimSettlement, currently 3 on the SAM bidding configvbMaRfmTCg92HWGzmd53APkMNpPnGVGZTUHwUJQkXAU). Claiming opens afterslotsToStartSettlementClaiming, currently 200,000 slots, which is roughly 17 to 22 hours depending on slot times.
Select and institutional settlements run on a different config. The institutional config VbinSTyUEC8JXtzFteC4ruKSfs6dkQUUcY6wB1oJyjE carries epochsToClaimSettlement of 4, not 3, and a bond withdrawal lockup of 1 epoch rather than 3. If you operate both a SAM bond and a Select bond, do not carry timings from one to the other. Both were read on chain on 18 September 2026.
- Unclaimed funds return to the bond: Any SOL in the settlement that is not claimed by stakers within the active window is returned to the validator's bond when the settlement expires. * **Extra SOL handling:** A settlement may contain slightly more SOL from the bond than the strict charge requires. This allows Marinade to enforce the on-chain minimum of 1 SOL per stake account (`minimumStakeLamports`) during distribution. The unused remainder returns to the bond on expiry.
To stay informed when settlements affect the bond, set up Validator Bond Notifications.
Related Mechanisms¶
The bond is the source for several distinct charges, each with its own trigger and formula. They can apply in the same epoch.
- Activating Stake Fee: Charged once when new stake activates, scaled by how far the validator bid above the clearing rate. Currently paused: the fee multiplier
activatingStakePmpeMultis set to 0, so no activating fee is charged. - Bid Reduction Penalty: Charged when a validator lowers their bid or raises their commissions after winning stake.
- Bond Risk Reduction Mechanism: Charged when a validator's bond is underfunded relative to the active stake they hold.
- Blacklist Policy: Charged when a validator is blacklisted for sandwich attacks or slow slots.