maxStakeWanted Parameter

Cap the maximum amount of Marinade stake a validator wants to receive through SAM.

TL;DR: Cap the maximum Marinade stake a validator wants to receive. The CLI takes lamports, dashboards show SOL β€” confirm units. The 10,000 SOL floor overrides lower settings, and lowering the cap below current stake does not shed existing stake.

Overview

The maxStakeWanted parameter sets a ceiling on how much Marinade stake a validator wants to receive through the Stake Auction Marketplace. Marinade will not delegate above this ceiling, but reaching it is not guaranteed. Validators must still place competitive bids and meet eligibility criteria to win stake up to the configured value.

How It Works

A few behaviors to understand before configuring:

  • 10,000 SOL minimum floor: Marinade enforces a minMaxStakeWanted of 10,000 SOL. The effective cap is max(10,000 SOL, current Marinade stake, maxStakeWanted). Setting maxStakeWanted below 10,000 SOL has no effect: the floor still applies. A validator wanting to be capped below 10,000 SOL cannot achieve this through maxStakeWanted alone.

  • Default is no functional cap: When maxStakeWanted is unset or set to 0, the effective cap is the higher of 10,000 SOL or current Marinade stake. Once a validator's stake grows past 10,000 SOL, the floor becomes inactive and incoming stake is governed only by bid competitiveness, bond size, and decentralization constraints.

  • Applies to new stake only: The cap affects which new stake Marinade considers delegating each epoch. It does not remove stake that is already delegated. Validators continue paying bids on existing stake regardless of the current cap value.

  • Enforced each auction cycle: The auction checks the cap every epoch. As long as the cap is in place, Marinade will not delegate beyond it.

  • No effect when already at or above the cap: If existing delegated stake is already at or above the cap, no new stake will be delegated.

  • The cap cannot reduce existing stake: Lowering maxStakeWanted below current stake does not unstake anything. To shed existing stake, a validator must withdraw the bond to exit SAM, then rejoin with a new lower cap once the existing stake is fully redelegated. See Eligibility Criteria for the exit flow.

Setting the Cap

Use the validator bonds CLI to set or update the cap.

validator-bonds -um configure-bond <vote-account-address> \
  --authority <bond-authority-keypair> \
  --max-stake-wanted <lamports>

For example, to cap incoming Marinade stake at 25,000 SOL:

(25,000 SOL Γ— 1,000,000,000 lamports/SOL = 25,000,000,000,000 lamports.)

Examples

Example 1: Capped Growth

A validator sets maxStakeWanted to 25,000 SOL and currently has 22,000 SOL delegated from Marinade. Even with a competitive bid, sufficient bond, and full eligibility, Marinade will only delegate up to 3,000 SOL more before the cap is reached.

Example 2: Cap Below Current Stake

A validator currently has 40,000 SOL delegated from Marinade and lowers maxStakeWanted to 30,000 SOL. The cap does not remove the extra 10,000 SOL. The validator continues paying bids on the full 40,000 SOL. To actually shed stake, the validator must withdraw the bond to exit SAM, wait for the existing stake to be redelegated, and then rejoin with the new lower cap. This is why starting with a small cap and scaling up incrementally is the recommended approach.

Example 3: Setting Below the 10,000 SOL Floor

A new validator sets maxStakeWanted to 5,000 SOL, expecting to be capped at 5,000 SOL. The effective cap is max(10,000, 0, 5,000) = 10,000 SOL. The validator's setting is overridden by the 10,000 SOL floor, and Marinade may delegate up to 10,000 SOL if the bid is competitive. To stay below 10,000 SOL, the validator must rely on bid and bond sizing rather than the cap parameter.

Start with a small cap and raise it as the bond and operations can support more stake.

The maxStakeWanted cap is one-directional in practice: it can always be raised, but lowering it does not actively reduce stake already delegated. Starting low gives validators control over growth and avoids being surprised by a large allocation that exceeds bond capacity. As the bond grows and operations are comfortable with more stake, the cap can be raised incrementally.

Disabling the Cap

To effectively remove the limit and prevent capping as Marinade's TVL grows, set the cap to 0, or to a very large lamport value such as 1000000000000000000 (10^18). With 0 or no setting, the effective cap is max(10,000 SOL, current Marinade stake). Once stake exceeds 10,000 SOL, the floor is no longer binding and growth is governed by bid, bond, and decentralization constraints.

Common Pitfalls

A few patterns that cause support tickets.

  • Setting the cap in SOL units instead of lamports: Causes the cap to be ~1 billion times smaller than intended. Always confirm units before submitting.

  • Setting the cap below 10,000 SOL: Has no effect. The 10,000 SOL floor overrides any lower value.

  • Setting the cap too low and missing redistribution events: When other validators exit SAM (blacklist, bond withdrawal, bond underfunding), their stake is reallocated to validators with competitive bids. A conservative cap can lock a validator out of these allocations even if the bid would have won.

  • Setting the cap without considering bond capacity: The cap is independent of the bond, so a high cap with a small bond can lead to receiving more stake than the bond can cover. Insufficient bond relative to active stake triggers the Bond Risk Reduction Mechanism.

  • Expecting the cap to reduce existing stake: It does not. The cap only filters new allocations.

Where to View the Current Setting

Two sources reflect the current maxStakeWanted value.

  • CLI: validator-bonds -um show-bond <vote-account-address> returns the on-chain value immediately. The CLI is the source of truth.

  • PSR dashboard: The PSR dashboard displays the current cap in SOL under the validator's bond configuration. Refreshes every few hours.

Last updated

Was this helpful?