Cross-chain / Bridge·EVM · Solana · Multi-chain
Rhino.fi
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.
- 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
- pnpm add @rhino.fi/sdk viem
| Variable | Scope | Description |
|---|---|---|
| RHINO_API_KEY | Server | Rhino.fi partner API key issued per app. Required to obtain JWTs and execute bridges through the SDK/REST API in production. |
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.
- ⚑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.