Skip to main content

Staking Flow

Before interacting with the API methods, it is useful to understand how JPool works on Solana.

JPool is a liquid staking protocol on Solana. JPool's stake pool allows users to deposit SOL and receive a liquid pool token (JSOL) in return, representing their staked position.

Staking user journey

A high-level view of what happens to your funds and the wait times involved. Each box is a state of your position; the arrows are the actions (and the time) that move between them.

Staking parameters

Key parameters for planning a JPool integration:

ParameterValue
Staking typeLiquid
NetworksMainnet, Devnet
API minimum0.003 SOL
Stake activationImmediate (liquid)
Unbonding / lock when exitingRedeemed via the pool (withdrawal fee applies)
Rewards modelAccrues in JSOL (liquid)

Liquid staking

JPool lets SOL holders earn staking rewards while remaining liquid. When you stake SOL into the JPool stake pool, the protocol delegates it to the pool's validator set and mints JSOL representing your share of the pool.

JSOL appreciates against SOL over time rather than changing in quantity: rewards accrue into the pool, so each JSOL is redeemable for a growing amount of SOL. This exchange rate is exposed as pool_token_rate (lamports per pool token) by the stake-balance endpoint.

Deposit and withdrawal fees

The pool charges a SOL deposit fee when staking and a SOL withdrawal fee when unstaking. Both are returned as decimals by the stake-balance endpoint (fees.solDepositFee and fees.solWithdrawalFee, where 0.03 means 3%). Account for the withdrawal fee when estimating the SOL you will receive on unstake.

Stake

Staking deposits SOL into the JPool stake pool and mints the liquid pool token.

  1. Initiate stake: Use the stake action to craft a transaction with the amount of SOL you want to deposit (minimum 0.003 SOL).
  2. Transaction confirmation: Once confirmed on-chain, your SOL is staked in JPool.
  3. Receive JSOL: Your liquid staking position is represented by JSOL.

Unstake

Unstaking burns pool tokens and returns SOL to your wallet.

  1. Check pool token balance: Retrieve your pool_token_balance (JSOL) from the stake-balance endpoint.
  2. Initiate unstake: Use the unstake action with the pool token amount (JSOL, not SOL) you want to redeem.
  3. Receive SOL: The protocol burns the pool tokens and returns SOL, net of the withdrawal fee.

Signing

JPool reuses the standard Solana transaction flow. Crafting endpoints return a hex-encoded unsigned_tx_hex, which you sign, prepare, and broadcast exactly like native Solana staking. See the JPool integration example for a full worked flow, including signing.

API interaction