Stake pools conflate three different functions (delegation, tokenisation, and liquidity), and do none of them well as a result.
Stake pools serve three distinct purposes:
- TOKENISE: to convert native stake accounts into a yield-generating SPL token
- DELEGATE: to achieve high staking yields and decentralise the network by delegating to different validators
- LIQUIDATE: to allow staked SOL to be instantly exchangeable for SOL.
Note that each purpose can be solved individually without the others:
- TOKENISE: a “stake pool” that delegates to only one validator. This is single-validator stake pools, or cgntSOL/laineSOL/mrgnfi's LST, which only delegate to validators they control.
- DELEGATE: a "delegation bot" that simply delegates on your behalf but doesn’t issue a SPL token. This is Marinade Native.
- LIQUIDATE: create a pool of SOL that accepts any staked SOL, or a marketplace for staked SOL. This is Sanctum.
And in most cases, these single-purpose solutions do their job better.
Single-validator stake pools let you easily trade/compose upon your staked SOL while giving you full control of where your stake goes -- good if you have a validator you prefer.
Delegation bots like Marinade Native let you spread your stake out without the exposure to smart contract risk.
And SOL reserve pools like Sanctum are at least twice as capital efficient than normal xSOL-SOL AMMs, and will grow to be hundreds of times more capital efficient as stake pool tokens proliferate. [1]
More and more people have come to this insight over time and they've started solving each pillar separately rather than try to push stake pools as-is. My view is that liquidity is the most important key to unlocking DeFi, which is why I'm working on Sanctum.
If stake pools are so bad, how did we get here in the first place? The design of the stake pool program is a holdover from Ethereum. We made a mistake by blindly porting over the design decisions from Ethereum -- I was there when the Solana Foundation worked with Lido to design the stake pool reference implementation. With the benefit of three years of hindsight, we should have designed the stake pool program differently. But what's done is done -- now let's take the next step forward.
In a normal AMM, you have 50-50 of each asset: the staked SOL xSOL, and the SOL. But this xSOL is not necessary! You can deposit SOL in a stake pool to get xSOL, in any quantity with zero slippage (literally infinite size). What you need is a single-sided pool of SOL, to service all xSOL withdrawals -- this is at least twice as capital efficient compared to a traditional AMM. ↩︎