← Protocols
Hop Protocol
01Description

Rollup-to-rollup token bridge using hToken intermediates and bonder-fronted liquidity. Lets users move ETH, USDC, USDT, DAI, and MATIC between Ethereum L1 and major L2s (Arbitrum, Optimism, Base, Polygon, Linea) without waiting for the rollup challenge period.

02Best for
  • 01fast L2 <-> L2 token transfers
  • 02ETH/USDC/USDT canonical bridging without 7-day exit
  • 03rollup-native swap UX
  • 04stablecoin bridging with bonder-fronted liquidity
  • 05minimal-dependency embedded bridge
03Install
  • pnpm add @hop-protocol/sdk ethers
04Environment variables
VariableScopeDescription
HOP_RPC_URL_ETHEREUMServerEthereum L1 RPC URL used by the Hop SDK signer when bridging from / to mainnet.
05Prompt snippet
Use `@hop-protocol/sdk`: `const hop = new Hop('mainnet', signer)`. Get a bridge with `const bridge = hop.bridge('USDC')`, then quote via `bridge.getSendData(amountIn, fromChain, toChain)` — returns `amountOut`, `bonderFee`, `adjustedBonderFee`, and `estimatedReceived`. Send with `bridge.send(amountIn, fromChain, toChain, { recipient, deadline, destinationDeadline, slippage })`. The SDK handles ERC20 approvals to the L2_AmmWrapper / L1_Bridge and submits the deposit. Track via `bridge.getTransferStatus(txHash, fromChain)` until `bonded === true`. Supported tokens: ETH, USDC (including native CCTP-backed routes on some lanes), USDT, DAI, MATIC. Chain identifiers are STRINGS: `'ethereum'`, `'arbitrum'`, `'optimism'`, `'base'`, `'polygon'`, `'linea'`.
06Gotchas
  • Hop only supports a fixed set of tokens (ETH, USDC, USDT, DAI, MATIC, rETH on some lanes) — calling `hop.bridge('FOO')` for an unsupported asset throws. Always whitelist supported tokens client-side.
  • L1 -> L2 transfers are nearly instant via bonders; L2 -> L1 has a 7-day challenge window unless you accept the bonder-fronted exit fee. Communicate both options to users.
  • `bonderFee` is variable and can spike during congestion or when bonder liquidity is low — re-quote immediately before signing and reject if `amountOut < userMinimum`.
  • If no bonder is online for your route, the transfer falls back to the slow path (rollup-native withdrawal time). Surface the worst-case ETA, not just the bonded ETA.
  • Hop's TVL has shrunk significantly post-2024; some lanes have thin AMM liquidity causing high slippage on large transfers — check `amountOutMin` carefully.
  • Hop v2 SDK is in beta and the canonical npm package remains `@hop-protocol/sdk` (v1) — do not mix imports.
  • All chains supported are EVM rollups + Polygon PoS only — no Solana, Cosmos, or non-rollup L1 support.
07Alternatives