Skip to main content
Official Arbitrum L1-L2 gateway bridge. Routes tokens through the canonical Arbitrum rollup bridge with 7-day withdrawal finality.

Notes

  • L1 to L2 only via this contract. For L2 to L1 withdrawals, use ArbSys.sendTxToL1() on Arbitrum (takes 7 days)
  • The router auto-routes tokens to the correct gateway (standard, custom, or WETH gateway)
  • Approval target: approve tokens to the gateway returned by getGateway(token), NOT to the router itself
  • msg.value must cover: maxSubmissionCost + (maxGas * gasPriceBid) for L2 execution
  • L1 to L2 deposits finalize in ~10-15 minutes (after L1 finality + sequencer inclusion)
  • L2 to L1 withdrawals require 7-day challenge period before funds can be claimed on L1
  • For ETH deposits, send ETH directly to the Arbitrum Delayed Inbox (no token approval needed)
  • Canonical bridge, secured by the Arbitrum rollup itself

Its names in a program

On Ethereum, ArbitrumBridge is a namespace: its contracts need no import.

Deployments

ABI

ArbitrumL1GatewayRouterABI

import ArbitrumL1GatewayRouterABI from "./protocols/arbitrum-bridge/ArbitrumL1GatewayRouterABI.json"; Speaks for: l1GatewayRouter.
  • outboundTransfer(address _token, address _to, uint256 _amount, uint256 _maxGas, uint256 _gasPriceBid, bytes _data) payable returns (bytes)
  • getGateway(address _token) view returns (address)

Next steps