← Protocols
Rhino.fi
Cross-chain / Bridge·EVM · Solana · Multi-chain

Rhino.fi

01Description

Meta-bridge and cross-chain liquidity layer for stablecoins. Originally launched as DeversiFi (StarkEx-backed L2 DEX), now operates as a multi-route bridge that abstracts canonical bridges, CCTP, and third-party liquidity behind a single quote/commit API.

02Best for
  • 01fast stablecoin bridging (USDC, USDT)
  • 02single-API meta-bridge across 30+ EVM L1/L2s
  • 03embedded bridge widgets for consumer apps
  • 04Solana <-> EVM stablecoin flows
  • 05fixed-fee, fast-fill bridge UX
03Install
  • pnpm add @rhino.fi/sdk viem
04Environment variables
VariableScopeDescription
RHINO_API_KEYServerRhino.fi partner API key issued per app. Required to obtain JWTs and execute bridges through the SDK/REST API in production.
05Prompt snippet
Use `@rhino.fi/sdk`: instantiate `new RhinoSdk({ apiKey })`, then quote a bridge with `sdk.bridge.getQuote({ token, amount, chainIn, chainOut, depositor, recipient, mode: 'pay' })` — the response has `quoteId`, `payAmount`, `receiveAmount`, `fees`, and `expiresAt`. Commit and execute via `sdk.bridge.bridge({ quote, getSignature, hooks })` where the SDK handles ERC20 approvals, the on-chain commit tx, and polling. Track an in-flight bridge with `sdk.bridge.getBridgeStatus({ quoteId })` (states: `PENDING`, `EXECUTED`, `FAILED`). For REST integrations call `POST /bridge/quote` then `POST /bridge/commit` with a JWT obtained from `POST /authentication/jwt` using the API key.
06Gotchas
  • Quotes have a hard `expiresAt` (~60s) — pass the original `quoteId` to commit; if expired, re-quote, do not patch amounts.
  • Rhino runs as a meta-bridge: route exhaustion is real on long-tail tokens. Always handle `NO_ROUTE` / empty quote responses and fall back to lifi/socket.
  • Production traffic requires the partner API key + JWT; the public docs endpoints are heavily rate-limited and unsuitable for end users.
  • Some routes settle via canonical bridges (e.g., Optimism withdrawals) and have minute-to-hour finality even though the source tx confirms in seconds — surface `expectedSettlementTime` from the quote.
  • Historic StarkEx (DeversiFi) deposits/positions are NOT addressable through `@rhino.fi/sdk`; legacy users must use the Rhino.fi web app to migrate.
  • Solana legs require a Solana adapter and have separate min/max amounts; mixing EVM and Solana decimal handling is a common bug.
07Alternatives