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
| Provider | Type | Asset |
|---|---|---|
| Marinade Native | Solana validator delegation, no LST | SOL |
| Marinade Liquid | Liquid staking token (mSOL) | SOL → mSOL |
| Jito | Liquid staking token (JitoSOL), MEV rewards | SOL → JitoSOL |
| Kamino Main Market | Lending supply | USDC, USDT |
JitoSOL mint: J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn.
Goals and timeframes
The plan generator takes a goal and a timeframe and selects the provider mix accordingly.
| Goal | What it optimises for |
|---|---|
safe | Lower-risk, well-established protocols. Marinade Native is the default anchor. |
yield | Highest APY available within the user’s risk score. Skews toward Kamino for stables, Jito for SOL. |
liquid | LSTs only (mSOL, JitoSOL) so the user can exit through DEX liquidity at any time. |
set | Target-allocation plan against a chosen mix. |
| Timeframe | Notes |
|---|---|
1m | One month. |
3m | Three months. |
6m | Six months. |
1y | One year. |
flex | No commitment; favours liquid options. |
How a stake is built
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.
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.
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
- True Agents — autonomous strategies can be combined with staked positions.
- Authentication — wallet sign-in for staking flows.
- Safety Overview — broader safety model.