Marinade Documentation
  • 👋Welcome to Marinade
  • 🛠️Marinade DAO
    • Contributors
  • 👨‍🍳The MNDE token
  • 🗳️MNDE Governance
  • 🔗Official Links
  • 📊Marinade Stats
  • Marinade Protocol
    • Protocol Overview
      • Marinade Native
        • Marinade Native: API & SDK
      • Marinade Select
      • Marinade Liquid
        • What is mSOL?
        • mSOL Token
        • Bot operations
      • MNDE Enhanced Stake
      • mTransactions
      • Protected Staking Rewards
      • Stake Auction Market (SAM)
    • FAQ
    • Glossary
    • Security
      • Audits
      • Principal Service Commitments and System Requirements
      • Multisig governance
    • Legal
      • Risks
      • Disclaimer
  • developers
    • Marinade Ts/Js SDK
    • Marinade Rust SDK
    • Anchor IDL
    • Bug Bounty
    • Contracts & Tokens Addresses
    • Delegation Strategy API
    • Marinade Stats API
    • Snapshots API
    • Mint your NFT project in mSOL
    • Stake to Marinade via SPL governance
    • Stake to Marinade via Fireblocks
  • Partnerships
    • Become our Partner
    • Marinade Press Kit
    • Marinade Referral Program
Powered by GitBook
On this page
  • Quick Overview
  • Stake Auction Marketplace
  • How to participate in the Stake Auction Marketplace
  • Bonds Settlements
  • Auction Reputation
  • Summary: How to Grow Reputation
  • How to Exit the Stake Auction Marketplace
  • Bid Reduction Penalty
  • Stake Distribution Ordering and Decentralization Constraints
  • Eligibility Criteria to Receive Stake From Marinade
  • Blacklist
  • Technical details
  • Useful resources
  1. Marinade Protocol
  2. Protocol Overview

Stake Auction Market (SAM)

On August 14th, 2024, Marinade will transition to the new delegation strategy described below.

PreviousProtected Staking RewardsNextFAQ

Last updated 1 day ago

Quick Overview

Delegation is unified under the Stake Auction Marketplace (SAM) with MNDE integration:

  • Stake Auction Marketplace (100% of TVL): Marinade’s entire TVL is distributed exclusively through SAM, with MNDE Directed Stake integrated as part of the stake cap mechanism.

Every epoch, Marinade evaluates the performance of validators in SAM, gathers MNDE votes, and rebalances stake based on these results. This process operates in a publicly accessible pipeline available on , where previous scoring runs can also be viewed.

Marinade evaluates all active validators that have set up their PSR bond. The code computing stake distribution is available online, and the results are published on-chain. You can view validator details on Marinade's . The ethos is to be transparent and open to all validators.

Stake Auction Marketplace

The Stake Auction Marketplace allows Marinade stakers to delegate SOL to validators offering the best APY. Validators are scored based on their "max_yield" (maximum yield for stakers at a specific stake level, e.g., 8% APY on 100k SOL).

Every epoch, Marinade ranks validators based on "max_yield" (which includes their bid) and distributes stake to the highest-yielding validators, ensuring adherence to eligibility criteria and decentralization constraints.

Benefits for Validators:

  • Customized Commission: Validators can set a commission for Marinade different from their public commission by offsetting a portion with a Cost per Mile per Epoch (CPMPE) bid. This allows validators to offer a competitive rate to Marinade without affecting external stakers.

  • Revenue Sharing: Validators can share additional revenue sources, such as block rewards, directly with Marinade stakers.

  • Last Price Auction: Validators set the maximum bid they’re willing to pay without needing to monitor bids every epoch. At the end of each epoch, validators will only be charged the realized_yield (max_yield of the last validator to receive stake), which may be lower than their actual max_yield bid.

Last price auction

At the end of the scoring process, Marinade has a list of validators ordered by max_yield, as well as an amount of stake to be distributed to each validator.

The "realized_yield" for the epoch will be set to the "max_yield" of the last validator to receive stake, which is consequently the lowest yield of the list.

Validators that had a higher "max_yield" for that epoch will not provide their full "max_yield" but will only need to provide the "realized_yield" for the epoch. This means that their bid might get charged less than the maximum that has been set, as a lower amount of SOL would be needed to achieve this lower "realized_yield", unless they are the last validator from the list.

This mechanism prevents validators from overpaying, as your bid will only get charged to match the realized_yield of the epoch, which for most validators will be lower than their actual "max_yield".

Example:

Validator ID

max_yield (APY)

stake_received (SOL)

realized_yield (APY)

1

10.6%

95 000

8.12%

2

9.58%

200 000*

8.12%

3

9.4%

80 000

8.12%

…

…

…

…

166

8.12%

15 000**

8.12%

167

8.12%

15 000**

8.12%

168

8.10%

0

0%

In the example above, Marinade would distribute stake to a total of 168 validators.

Let's imagine that the validator ranked 1 has a base APY of 7.6%, and has set a bid (CPMPE) that pushes his max_yield to 10.6%.

In that epoch, Validator 1 would not spend his full "CPMPE" to achieve a 10.6% yield, but their bond would only get charged enough SOL to arrive at an 8.12% APY. This will be the case for all validators that provide a max_yield that is higher than 8.12% APY.

Alternatively, if the validator ranked 167 in that example had a base APY of 7.6%, and a bid to push his max_yield to 8.12% APY, this validator would be paying their full bid (CPMPE) for that epoch.

This mechanism ensures that validators can set their true max_yield without worrying about overpaying for stake at any given point.

How to participate in the Stake Auction Marketplace

Any validator can participate in the Stake Auction Marketplace.

To participate, a validator must:

  • Set a CPMPE bid in lamports (Cost per mile per epoch, corresponding to the maximum bid that the validator is willing to pay to receive 1000 SOL delegated for an epoch)

Bonds Settlements

Bonds Calculation Formula (for validators receiving SAM stake):

Bid Charged =(Active stake from Marinade at end of epoch * Effective Bid) / 1000

The settlement created for a given epoch can contain extra SOL from the bond, allowing Marinade to enforce the minimum of 1 SOL per stake account. Any additional SOL in the settlement that is not used to pay for stake in that epoch will go back to the bond once the settlement expires after 3 epochs.


Auction Reputation

Auction Reputation tracks how reliably a validator participates in Marinade’s Stake Auction Marketplace (SAM). It plays a critical role in directing stake toward validators who contribute consistently, helping reduce stake churn and maximize productive delegation.

Reputation is a performance metric that determines how much stake Marinade can delegate to a validator. It reflects past auction participation, bid quality, and bond commitment.

Key Properties:

  • Score Range: -20 to 1000

  • New Validators: Start with 1 reputation point

  • Existing Validators: Assigned an initial score based on past participation

  • Minimum Bond Requirement: At least 10 SOL to receive stake via auction (subject to increase, up to 100 SOL)

How Reputation Is Earned

Reputation increases when validators:

  • Win stake in the auction Validators must be in the winning validator set for the epoch.

  • Maintain a sufficient bond Larger bonds signal trust and amplify reputation growth.

  • Submit competitive bids Bids must be above the auction threshold to count toward reputation. Bidding higher than necessary does not increase reputation further.

How Reputation Is Lost

Reputation decreases in the following cases:

  • Stake removal This occurs when a validator is outbid, their bond becomes insufficient, or they withdraw from the auction.

  • Reputation decay A fixed 2% decay is applied every epoch, regardless of performance.

What Reputation Affects

Reputation determines your maximum allowed delegation from SAM:

  • Calculated as maxSpendRobustDelegation

  • Higher reputation enables greater stake delegation

  • Lower reputation reduces how much new stake you can receive

Reputation Formula

Reputation is updated each epoch using the following formula:

marginalPmpeGain = max(0, unlimitedTotalPmpe / churnWinningTotalPmpe - 1)

marinadeActivatedStakeSolUndelegation = 
-min(0, marinadeActivatedStakeSol - marinadeActivatedStakeSol[-1])

spendRobustReputation = 
(1 - spendRobustReputationDecay) * (spendRobustReputation[-1] + marginalPmpeGain 
* totalMarinadeSpend - marinadeActivatedStakeSolUndelegation 
/ adjSpendRobustReputationInflationFactor[-1] * winningTotalPmpe / 1000)

Key Terms

  • marginalPmpeGain = max(0, unlimitedTotalPmpe / churnWinningTotalPmpe - 1)

  • totalPmpe = Validator’s bid plus inflation and MEV rewards

  • unlimitedTotalPmpe = PMPE in a hypothetical auction with no reputation limit

  • churnWinningTotalPmpe = PMPE in a hypothetical auction excluding this validator

  • totalMarinadeSpend = Total stake allocated to the validator

  • marinadeActivatedStakeSolUndelegation = Stake removed since the last epoch

  • winningTotalPmpe = Winning PMPE evaluated before reputation updates, using delegation and bid data from the previous epoch

  • spendRobustReputationDecay = Constant set at 2 percent

Reputation → Delegation Conversion

Reputation translates into a delegation cap using the formulas:

adjMaxSpendRobustReputation = 
adjSpendRobustReputationInflationFactor * spendRobustReputation

maxSpendRobustDelegation = 
spendRobustReputationMult * adjSpendRobustReputation / (totalPmpe / 1000)
  • spendRobustReputationMult = Multiplier set to 1 in production

  • adjSpendRobustReputationInflationFactor = Dynamic coefficient that ensures Marinade can delegate all of its stake

⚠️ Note: This cap only limits future stake. Validators do not lose existing stake due to low reputation. This behavior may change with future protocol updates.

Summary: How to Grow Reputation

To grow your Auction Reputation:

  • Participate consistently in stake auctions

  • Maintain adequate bond coverage

  • Win stake with competitively priced bids

  • Avoid bond withdrawal or underbidding, which can lead to stake loss and reputation decline

Reputation ensures stake flows to the most committed and performant validators, benefiting both Marinade and the broader Solana ecosystem.


How to Exit the Stake Auction Marketplace

If you start receiving stake from SAM, please note that the only correct way to exit the marketplace is to request a withdraw from your bond. This allows Marinade to re-delegate stake from you, and you will not be charged for this action.

If you receive stake from SAM but lower your CPMPE, Marinade will create a bond settlement for the expected yield that will be missed (see Bid Reduction Penalty).


Bid Reduction Penalty

Validators receiving stake should not lower their CPMPE to retain stake for more epochs while not paying the initial bid that allowed them to acquire that stake in the first place. This behaviour creates inefficiencies and forces Marinade to rebalance stake, reducing the stakers' APY. To prevent that behaviour, Marinade installed a Bid-Reduction Penalty. If a validator reduces its bid after receiving stake from the auction using a higher bid, it will pay a penalty from its bond. The penalty is calculated according to the following formula:

limit = min(effBid, effBid[-1], effBid[-2], effBid[-3])
penaltyCoef = min(1, sqrt(1.5 * max(0, limit - bidCpmpe) / limit)
penaltyPmpe = winningTotalPmpe + effBid
penalty = penaltyCoef * penaltyPmpe * marinadeActivatedStakeSol / 1000

Where:

effBid[-i] is the effBid of the auction i epoch in the past,

winningTotalPmpe is the auction winning pmpe for a 0-commission validator, including the bid, inflation and MEV rewards,

marinadeActivatedStakeSol is the active delegated stake on this validator,

effBid is the bid derived from the auction-winning APY that this validator would pay if he remains part of the winning set.

If the validator did not lower his bid, no penalty is paid. If the validator lowers his bid, he pays a full penalty according to the formula above.

⚠️ Important Clarification: Paying the penalty does not entitle the validator to keep the stake. Validators who deliberately lower their bid to reduce payment obligations, even if they pay the associated penalty, will be unstaked. These validators should not have retained the stake in the first place under fair auction conditions.

Marinade’s system will actively rebalance such stake allocations to protect the protocol and uphold fairness for both validators and stakers.

Example A - Validator lowers its bid to 0

  • Validator receives 100k SOL from Marinade, with 0% commission on MEV and inflation, and a CPMPE set at 0.15

  • The validator lowers his bid to 0 on Epoch N

  • Effective Bid for the past 3 epochs and current epoch is 0.1 (for a 0-commission validator)

  • WinningTotalPmpe for the current epoch is 0.60 SOL

limit = min(0.1,0.1,0.1,0.1), so limit is 0.1 PenaltyCoef = min( 1, sqrt(1.5 * max (0, 0.1 - 0) /0.1), so PenaltyCoef is 1 PenaltyPmpe = 0.60 + 0.1, so PenaltyPmpe is 0.70 Penalty = 1*0.7*100000/1000, so the Penalty is 70 SOL.

Example B - Validator lowers its bid to 0.075

  • Validator receives 100k SOL from Marinade, with 0% commission on MEV and inflation, and a CPMPE set at 0.15

  • The validator lowers his bid to 0.075 on Epoch N

  • Effective Bid for the past 3 epochs and current epoch is 0.1 (for a 0-commission validator)

  • WinningTotalPmpe for the current epoch is 0.60 SOL

limit = min(0.1,0.1,0.1,0.1), so limit is 0.1 PenaltyCoef = min( 1, sqrt(1.5 * max (0, 0.1 -0.075) /0.1), so PenaltyCoef is 0.61237243569 PenaltyPmpe = 0.60 + 0.1, so PenaltyPmpe is 0.70 Penalty = 0.61237243569*0.7*100000/1000, so the Penalty is 42.8660704983 SOL.

Example C - Validator does not lower its bid but request a withdraw from their bond

  • Validator receives 100k SOL from Marinade, with 0% commission on MEV and inflation, and a CPMPE set at 0.15

  • The validator conserves his bid from Epoch N-3 to Epoch N where bond is withdrawn

  • Effective Bid for the past 3 epochs and current epoch is 0.1 (for a 0-commission validator)

  • WinningTotalPmpe for the current epoch is 0.60 SOL

limit = min(0.1,0.1,0.1,0.1), so limit is 0.1 PenaltyCoef = min( 1, sqrt(1.5 * max (0, 0.1 -0.1) /0.1), so PenaltyCoef is 0 PenaltyPmpe = 0.60 + 0.1, so PenaltyPmpe is 0.70 Penalty = 0*0.7*100000/1000, so the Penalty is 0 SOL.

After a few epochs, the validator can withdraw its bond and exit the auction without paying any penalty.

Stake Distribution Ordering and Decentralization Constraints

Unstaking priority rules

An unstake priority is attributed to all validators:

  • Ineligible Validators:

    • Validators that do not meet the eligibility criteria are assigned a priority of 0.

  • Partially Covered Stake:

    • Validators with a portion of their current stake not covered by their bond are assigned a priority ranging from 1 to N, depending on the percentage of stake that remains uncovered.

  • Overstaked Validators:

    • Validators that are overstaked are assigned a priority from N+1 to M, based on the percentage of their stake from Marinade that is overstaked.

Unstaking Process:

  • Marinade initiates the unstaking process starting with priority 0 and progresses in ascending order (1, 2, ..., M).

  • The process continues until the 5% cap of stake that can be rebalanced per epoch is reached.

Stake Allocation:

Marinade’s stake distribution operates through a unified pipeline that integrates MNDE-directed votes and SAM bids, collectively allocating the entire TVL.

Distribution Mechanics:

  • Priority-Based Distribution: Stake is allocated starting from the highest-ranked validator down the list.

  • Constraint Checks: For each validator, the following constraints are verified before allocating stake:

    • Validator TVL Constraint:

      • Validators who do not have MNDE-Enhanced Stake directed to them are limited to a default stake cap of 4% of Marinade’s TVL. However, validators with MNDE-directed stake can increase this cap, allowing them to receive additional stake from the auction. (This mechanism helps prevent sybil attacks by ensuring only validators with genuine support through MNDE can exceed the standard cap.)

    • ASO/Country Constraints:

      • Ensures that staking to a validator does not exceed Solana's 30% concentration for ASO and 30% for Country.

    • Bond Balance:

      • Verifies that the validator’s bond balance is sufficient to cover downtime (PSR) and at least one epoch's worth of effective yield, including the bid.

Stake Allocation Process:

  • Sequential Allocation: Stake is allocated to validators in order of their Max_Yield, subject to the above constraints.

  • Handling Ties:

    • If two or more validators have the same Max_Yield, the remaining stake is split equally among them.

    • Constraint checks are performed in parallel to ensure fair distribution.

  • Completion: The process continues until all available stake is distributed or no further allocations are possible due to constraints.

  • Result: This process returns a list of validators sorted by Max_Yield, along with the amount of stake each validator is allocated.

Priority Adjustment:

  • Insufficient Allocation Scenario:

    • If a validator's bid is too low or their bond has insufficient funds, they will receive less stake or no stake at all.

    • Resolution: Validators should keep their bond topped up to maintain the stake they already have. Those without stake yet should increase their bid to improve priority and secure stake allocation.

Eligibility Criteria to Receive Stake From Marinade

For the Stake Auction Marketplace:

  • Validator is not blacklisted (running harmful mods, commission rugs)

  • Validator runs a version of the node that is in the specified semver bounds.

  • Validator's final inflation commission is ≤ 7 % (bids and MEV commission can be used to offset a higher public commission.)

  • Validator's uptime was> 80% in each of the last 3 epochs, calculated using the stake-weighted average of vote credits.

    • One epoch of downtime (1 SOL per 10k SOL)

    • One epoch of "Maximum_yield" for the epoch for the amount of stake received (set by the validator)

    • One epoch of bids (set by the validator)

For MNDE votes:

All the constraints above apply, with those slight differences:

  • Bids are charged for the stake distributed through MNDE, meaning that MNDE-directed stake increases the cap and is charged accordingly.

  • A PSR bond remains necessary to protect against downtime and safeguard the yield for the MNDE-distributed stake.

Blacklist

Marinade will blacklist validators that are identified as harming the network. A validator can get blacklisted for:

  • Slow voting (also called vote lagging)

  • Commission rugs

  • Failing to restart the node in the 36 hours following the cluster restart after a halt for at least 2 times

To be removed from the blacklist, the process is the following:

  1. If a validator is blacklisted by Marinade's unjustly (e.g. validator's poor networking performance made us believe the validator was vote-lagging), the validator will be removed from the blacklist upon reviewing and approving the claim

  2. If a validator, once rightfully blacklisted, chooses to reform their behavior and demonstrate compliance, they will be removed from the blacklist only after an observation period of at least 1 month.

  3. Repeat offenders will be permanently blacklisted and prohibited from receiving Marinade stake. Rule 2 does not apply.

  4. Validators blacklisted for commission rugs are blacklisted permanently. Rule 2 does not apply.

Technical details

  • The delegation strategy scoring runs once per epoch.

  • At the end of each epoch, Marinade's bot performs actions to move our stake distribution towards the desired state.

  • Marinade uses ipwhois for geolocation services and data center identification. The data is updated every 24 hours.

  • Marinade uses Solana on-chain data to collect all metrics about validators apart from geolocation


Useful resources

  • GitHub:

Create a PSR bond associated with its validator, using the (see )

Ensure sufficient bond funding to cover the stake and bid amount. A is available to help estimate the SOL needed in the bond.

A simulation is running on where validators can see how the bid they set would impact the stake distribution. More instructions to participate in that simulation are available .

Reminder: - SOL deposited in a validator's bond will always stay delegated to that validator and can be considered as self-stake. - Always use the to add or withdraw SOL from your validator's bond.

At the start of each epoch (Epoch N+1), Marinade settles bids from validators who received activated stake in the previous epoch. The results are publicly available in the .

Every validator now has a reputation score displayed on the , alongside their bond.

Validator has created and funded its. The PSR bond must contain enough SOL for:

This can be used to estimate the bond size required for a given amount of stake.

Marinade has a public API:

PSR bond also counts in the self-stake requirement of the (SFDP). Any SOL deposited in your bond will count towards your total self-stake.

PSR dashboard and simulation:

MNDE calculator:

Directed stake dashboard:

Bonds repository:

Bonds CLI package:

Google Bucket:

GitHub
Validator Dashboard
validators bond CLI
Readme
calculator
https://psr.marinade.finance/
here
Validator bonds CLI
GitHub repository
PSR Dashboard
PSR bond
calculator
https://validators-api.marinade.finance/docs
Solana Foundation Delegation Program
https://psr.marinade.finance/
https://cogentcrypto.io/MNDECalculator
https://lst-ds-dashboard.solanahub.app/
https://github.com/marinade-finance/validator-bonds
https://www.npmjs.com/package/@marinade.finance/validator-bonds-cli
https://console.cloud.google.com/storage/browser/marinade-validator-bonds-mainnet/
https://github.com/marinade-finance/psr-dashboard
https://github.com/marinade-finance/psr-sam
https://github.com/marinade-finance/psr-sam-pipeline