← Protocols
Stride
Lending / Yield·Cosmos

Stride

01Description

Stride is a Cosmos-native liquid-staking zone that mints liquid `stTOKEN` derivatives (stATOM, stOSMO, stTIA, stDYDX, stINJ, etc.) for any IBC-enabled Cosmos asset. Users deposit native tokens via IBC; Stride uses Interchain Accounts (ICS-27) to delegate on the host chain and streams staking rewards back into the stToken exchange rate, which is composable across the Cosmos DeFi stack.

02Best for
  • 01liquid-staking Cosmos assets (ATOM, TIA, OSMO, DYDX, INJ)
  • 02yield-bearing collateral for Cosmos lending markets
  • 03compounded staking + LP yield via Osmosis pools
  • 04redemption with built-in unbonding period
  • 05host-zone delegation via ICS-27
03Install
  • pnpm add stridejs @cosmjs/stargate @cosmjs/proto-signing
04Environment variables
VariableScopeDescription
STRIDE_RPC_URLClientStride Tendermint RPC endpoint (e.g., `https://stride-rpc.polkachu.com`). Required to query host zones and submit liquid-stake messages.
05Prompt snippet
Use `stridejs` to build liquid-stake messages. Connect with `stride.ClientFactory.createRPCQueryClient({ rpcEndpoint })` and read host-zone state via `client.stride.stakeibc.hostZone({ chainId: 'cosmoshub-4' })` — this returns the current `redemptionRate`, the IBC channel from the host chain into Stride, and per-host parameters. For deposits, IBC-transfer the native token from the host chain into the user's Stride address (the memo-based autopilot route is recommended: send via `ibc-transfer` with a JSON memo of `{"autopilot":{"receiver":"<stride-addr>","stakeibc":{"action":"LiquidStake"}}}`), which atomically transfers and mints `stTOKEN`. To redeem, build `stride.stakeibc.MessageComposer.withTypeUrl.redeemStake({ creator, amount, hostZone, receiver })` and the unbonded native asset returns to `receiver` via IBC after the host chain's unbonding period (~21 days for Cosmos Hub).
06Gotchas
  • Redemption is asynchronous — `MsgRedeemStake` queues an unbonding that completes after the HOST chain's unbonding period (e.g., 21 days for Cosmos Hub, 21 days for Osmosis). Surface this clearly; users cannot get native back instantly without using a stToken→native swap on Osmosis.
  • The `redemptionRate` is the only correct way to convert between stToken and underlying — never assume 1:1. It updates each epoch as rewards accrue and after slashing events, so always re-query before quoting amounts.
  • Slashing on the host chain is socialized to all stToken holders proportionally via a redemption-rate decrease. Stride uses validator-set rebalancing to mitigate, but a large slashing on one validator still hits all holders.
  • IBC channel maintenance: the autopilot deposit path depends on a specific IBC channel between host chain and Stride being active and not expired. If the light client expires (14-day trusting period without updates), liquid-staking via IBC freezes until governance unfreezes it.
  • Chain upgrades: Stride coordinates upgrades with host-chain upgrades. After a host chain upgrades, Stride may pause that host zone (`halted=true` in HostZone) until ICS-27 re-syncs; check `hostZone.halted` before submitting deposits or you'll see funds bounce back via IBC timeout.
  • Gas token is `ustrd`. Set `gasPrice: GasPrice.fromString('0.005ustrd')` — too-low gas causes mempool eviction during congestion around epoch boundaries.
  • Each host zone has different exposure: stATOM (Cosmos Hub) ≠ stTIA (Celestia) in unbonding speed, validator set, or slashing parameters. Treat them as distinct assets in UX.
07Alternatives