Staking

Stake SOL, USDC, and USDT through curated Solana protocols (Marinade, Jito, Kamino) with an AI-built plan tailored to risk, timeframe, and goal.

What this is

Staking on TRUE is a guided flow that takes a user’s stated goal (“safe yield on idle SOL”, “max APY on USDC for 3 months”, “liquid SOL I can exit any time”) and builds a plan across curated Solana protocols. Execution is non-custodial: every stake/unstake is a Solana transaction signed by the user’s wallet. TRUE never holds the staked principal.

The staking microservice is hosted at https://stake.truefinance.ai.

Stakeable assets

  • SOL — staked natively or as a liquid staking token (mSOL, JitoSOL).
  • USDC — supplied to lending markets (e.g., Kamino main market).
  • USDT — supplied to lending markets.

Providers

ProviderTypeAsset
Marinade NativeSolana validator delegation, no LSTSOL
Marinade LiquidLiquid staking token (mSOL)SOL → mSOL
JitoLiquid staking token (JitoSOL), MEV rewardsSOL → JitoSOL
Kamino Main MarketLending supplyUSDC, USDT

JitoSOL mint: J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn.

Goals and timeframes

The plan generator takes a goal and a timeframe and selects the provider mix accordingly.

GoalWhat it optimises for
safeLower-risk, well-established protocols. Marinade Native is the default anchor.
yieldHighest APY available within the user’s risk score. Skews toward Kamino for stables, Jito for SOL.
liquidLSTs only (mSOL, JitoSOL) so the user can exit through DEX liquidity at any time.
setTarget-allocation plan against a chosen mix.
TimeframeNotes
1mOne month.
3mThree months.
6mSix months.
1yOne year.
flexNo commitment; favours liquid options.

How a stake is built

01
Options
Client fetches /v1/stake/options for live APYs, mints, and per-provider risk scores.
02
Plan
Client streams /v1/stake/plan (SSE) with asset, amount, goal, timeframe, locale. Claude Haiku generates a personalised allocation with rationale.
03
Build TX
Client posts /v1/stake/build-tx for each leg of the plan. Server returns base64-encoded Solana transactions.
04
Sign and send
User signs each transaction in their wallet (Phantom / Dynamic / Solflare / Backpack). The client broadcasts to the cluster.
05
Track
Active positions show up in /v1/stake/positions/{wallet} with amountUsd, costBasisUsd, earnedUsd, weightedApy.

Unstaking

Unstaking flows through /v1/stake/unstake-tx which builds an unstake transaction for the user’s wallet to sign. The flow accepts a liquid flag (default true):

  • Liquid unstake — for mSOL/JitoSOL, swaps the LST back to SOL through DEX liquidity (Jupiter route). Instant settlement, subject to liquidity-pool spread.
  • Native unstake — initiates a standard Solana stake-account deactivation. Settles at the next epoch boundary (~2 days).

Cooldowns are protocol-dependent. The ProviderOption carries a lockup string and isLiquid boolean so the UI can surface the trade-off before the user signs.

Rules

  • Risk score 1–5 per provider option. The plan generator filters by this against the user’s stated risk appetite.
  • No principal custody. All stake transactions move funds from the user’s wallet directly to the protocol vault.
  • Slashing risk is protocol-dependent and surfaced in the plan rationale. Marinade Native and Jito carry validator-slashing exposure; Kamino carries smart-contract and bad-debt exposure.
  • APYs are live. The plan rationale shows the APY at the moment of generation; the realised APY can drift between sign-and-send and settlement.
Yield is not free

Every provider has a failure mode — validator slashing, bad-debt socialisation, oracle exploits, smart-contract bugs. The risk score is a guide, not a guarantee. TRUE does not insure deposits and does not have an admin key on any of these protocols.

For Developers

Endpoints

GET https://stake.truefinance.ai/v1/stake/options

Returns the live provider list, current APYs, mints, lockups, and risk scores.

GET https://stake.truefinance.ai/v1/stake/positions/{wallet}

Returns active positions for a Solana address: amountUsd, costBasisUsd, earnedUsd, weightedApy, provider.

POST https://stake.truefinance.ai/v1/stake/plan

SSE endpoint. Body: { asset, amount, goal, timeframe, locale }. Streams a plan with provider allocations and per-leg rationale.

POST https://stake.truefinance.ai/v1/stake/build-tx

Body: { wallet, asset, amount, provider }. Returns a base64-encoded Solana transaction for the user to sign.

POST https://stake.truefinance.ai/v1/stake/unstake-tx

Body: { wallet, position, liquid? }. Returns a base64-encoded Solana transaction for the user to sign.

Localisation

The plan rationale is localised at the source: pass locale (en, es, pt, fr, de, tr, ru) to /plan and the AI-generated reasoning streams in the requested language. Provider names, APY values, and mint addresses stay untranslated.

Safety, limits, failure modes

  • Plan drift. Between plan generation and signing, APYs and on-chain liquidity can move. The build-tx step uses the provider’s live state, not the planned APY.
  • Native unstake epoch lag. Marinade Native unstake settles at the next epoch (~2 days). Plan accordingly if liquidity is required sooner.
  • LST liquidity. A liquid unstake is only as instant as the LST/SOL pool depth. Large redemptions can incur slippage; the build-tx step surfaces the expected receive amount before signing.
  • Validator failure. If a Marinade Native validator gets slashed or jailed, the protocol’s automated rebalancing handles redelegation; the user does not action this directly.

See also

Last updated: