Protocol Overview

Marinade was built with a simple architecture to facilitate liquid staking for the next billion users. This architecture also has the benefit of being easy to adapt if necessary and to operate in a permissionless way.

Our code, our delegation strategy and our contracts are open source and can be accessed freely. All our computations can be run on your own computer to verify any information.

Marinade is also completely permissionless, meaning that our bot can be run by anyone in order to use the protocol or keep it operating.

Let's review the different components of our protocol and how they interact together.

What can you do on Marinade?

Marinade offers different options:

  • Stake your SOL and receive mSOL.

  • Deposit your stake account (if you are already delegating your SOL to a validator) and receive mSOL.

  • Stake SOL or deposit a stake account to Marinade Native.

  • Provide liquidity in our mSOL/SOL pool (in SOL exclusively) and earn fees generated when other users use the immediate unstake.

  • Unstake your mSOL, either immediately for a fee or with a delay.

  • Unstake any other liquid staked token immediately for a fee

Our Cookbook page also lists a number of options where mSOL can be used in DeFi. Feel free to check it out!

Stake SOL

Stake_SOL

When you choose to 'Stake', these operations happen under the hood:

  1. You deposit SOL in the reserve account.

  2. Marinade takes this amount and accordingly increases the amount of stake orders falling under:

    1. current epoch (epoch_stake_orders)

    2. total staked (total_stake_orders)

  3. Marinade mints mSOL for the user according to mSOL/SOL ratio.

Deposit an existing stake account

Deposit_Stake_Account

When you choose 'Deposit stake account', these operations happen under the hood:

  1. Marinade finds the delegated-active-credit-observed stake accounts, delegated to any validator.

  2. Marinade takes control of the delegated and fully active stake account by becoming staking and withdrawing authority.

  3. Marinade takes this amount and accordingly increases the amount of stake orders falling under:

    1. current epoch (epoch_stake_orders)

    2. total staked (total_stake_orders)

  4. Marinade mints mSOL for the user according to the mSOL/SOL ratio.

In order to be able to deposit your stake account, it needs to contain at least 1 SOL.

Provide liquidity in the Unstake Liquidity Pool

Add_liquidity / Remove_Liquidity

You can only provide SOL to the Unstake Liquidity Pool. By doing this, you make your SOL available for users who want to use the 'Unstake now' function and you earn a share of the fees in exchange. You can learn more about our unstake liquidity pool on the following page:

Unstake Liquidity Pool

Unstake now

Liquid_Unstake

When you choose 'Unstake now', these operations happen under the hood:

  1. You transfer mSOL to Marinade.

  2. Marinade performs a mSOL → SOL swap using the liquidity pool.

  3. You get SOL according to the mSOL price and swap fee deducted.

Flow of 'Unstake now'.

Using 'Unstake now' involves a variable fee (0.1% - 9%) depending on the available liquidity in the Unstake pool. Marinade will automatically compare the Unstake pool and Jupiter aggregator to give you the best price.

Delayed unstake

Delayed_Unstake

When you choose 'Delayed unstake', these operations happen under the hood:

  1. You are given a claim ticket (that will be a NFT issued on the blockchain) indicating the amount and due time of your unstake.

  2. mSOL is burnt and removed from the supply.

  3. The unstake operation is launched and performed by the bot.

  4. In due time, you will be able to claim your SOL and destroy the claim ticket in exchange. (A claim ticket has no expiry date.)

This mechanism is required to perform larger unstake operations, when the amount is bigger than the current balance of the liquidity pool or if you do not mind waiting for the unstaking period.

Example of Delayed unstake at Epoch N:

There are 3 moments in an epoch for Marinade. The beginning of an epoch, the epoch itself, and the last hours before the end of an epoch. These 3 moments have an impact on the Delayed Unstake function.

Here are the three situations that can happen when you use ‘Delayed unstake’ during epoch N.

  • You start unstaking during Z, which is the beginning of epoch n (a few minutes into epoch n).

You will receive your SOL at the beginning of epoch n+1. The amount of SOL you receive is computed as SOL = [mSOL to burn]*[mSOL price] when the unstaking starts, but the mSOL price may not be updated as the Marinade bot needs to be run to update the price at the beginning of each epoch. We suggest waiting a few hours into the epoch before using 'Delayed unstake' and starting it before the last 4 hours of the epoch.

  • You start unstaking during A.

You will receive SOL at the beginning of epoch n+1. The amount computed is [mSOL to burn]*[mSOL price] when the unstaking starts.

  • You start unstaking during B, the last 4 hours of epoch n.

You will receive SOL at the beginning of epoch n+2. The amount computed is [mSOL to burn]*[mSOL price] when the unstaking starts.

An epoch lasts approximately two days on the Solana blockchain. You can follow the progress of the current epoch directly on Marinade.

Use mSOL Directed Stake

Directed Stake

Use MNDE Directed Stake

MNDE Directed stake

Use Marinade Native

Marinade Native

Last updated