# L2 Bridge Flows: Net Deposits from Ethereum by Chain

> L2 bridge flows by day: deposits from Ethereum and withdrawals through each rollup's canonical bridge, by chain and token, with net ETH and stablecoin flows.

Markdown copy of https://voltfincrypto.com/apps/l2-bridge-flows

**Question:** Which layer 2s are gaining or losing assets through their canonical bridges with Ethereum?

- Kind: Dashboard in Voltfin Vantage
- Topic: [Layer 2s](https://voltfincrypto.com/topics/layer-2)
- Chains: Ethereum, Base, Arbitrum, OP Mainnet, ZKsync, Linea, Scroll, Unichain, World Chain, Ink, Mantle, Blast
- Status: Planned. The data is not published yet, so this page states no figure; each figure will open its receipt when it is.

Every rollup has a canonical bridge: contracts on Ethereum that lock what users deposit and release it when a withdrawal is proven. This dashboard counts the deposits going in and the withdrawals coming out of each covered layer 2's canonical bridge each day, for ETH, stablecoins and other major tokens. It then shows the net flow, chain by chain.

Net flows show where capital is moving between Ethereum and its layer 2s, which balances alone hide: a chain can hold a steady total while large deposits and withdrawals cancel out. Withdrawals are counted when they are finalized on Ethereum, the moment assets actually leave the bridge, and those still waiting are shown apart.

Only canonical bridges are counted. Assets that reach a layer 2 through third-party bridges, intent networks or burn-and-mint routes such as Circle's CCTP for native USDC never touch the canonical escrow, so the dashboard lists them as outside its scope rather than mixing them in.

## Blueprint

### All layer 2s

Net canonical bridge flows for every covered layer 2.

- **Net ETH flow, period** (ETH): ETH deposited into covered canonical bridges minus ETH withdrawals finalized from them over the selected period.
- **Net stablecoin flow, period** (USD): Stablecoins deposited minus stablecoin withdrawals finalized across covered canonical bridges over the selected period.
- **Largest net inflow**: The layer 2 with the largest net inflow over the selected period, with the amount and its share of all deposits.
- **Withdrawals pending** (USD): Value of withdrawals started on covered layer 2s and not yet finalized on Ethereum at the latest read.
- **Net flow by layer 2** (USD): Each layer 2's deposits minus finalized withdrawals over the selected period, with ETH and stablecoins shown apart.

### One layer 2

Deposits and withdrawals for the chosen layer 2, by token and day.

- **Deposits, period** (USD): Value deposited through the chosen layer 2's canonical bridge over the selected period.
- **Withdrawals finalized, period** (USD): Value released from the chosen layer 2's canonical bridge by finalized withdrawals over the selected period.
- **Deposits by token** (USD): The chosen layer 2's deposits over the selected period, split by token.
- **Deposits and withdrawals by day** (USD): Daily deposits and finalized withdrawals for the chosen layer 2, with the net flow drawn as a line.

Filters: Layer 2 (Every covered layer 2); Period (Last week, month, quarter or year); Asset (ETH, stablecoins or every covered token).

## How it will be measured

- Deposits are read from each bridge's own events on Ethereum: on OP Stack chains, TransactionDeposited and the standard bridge's deposit events; on Arbitrum, MessageDelivered and gateway DepositInitiated; on ZK rollups, their bridges' deposit events.
- Withdrawals are counted when finalized on Ethereum: WithdrawalFinalized on OP Stack portals, OutBoxTransactionExecuted on Arbitrum and the finalization events of each ZK rollup's bridge.
- Amounts are exact token amounts from the events, valued at oracle prices at the block of each transfer; ETH, stablecoins and other tokens are kept in separate series.
- Withdrawals started on a layer 2 but not yet finalized are shown as pending, so a burst of exits shows before the assets leave the bridge.
- Every daily figure names the Ethereum block range it was summed over and the bridge contracts read.

## Data it needs

- `bridge_flows_daily` (to build): Deposits into and withdrawals out of canonical and major third-party bridges by chain, token and day, plus escrow balances at day end.
- `native_prices_daily` (to build): Reference prices of major assets read from on-chain oracle feeds (Chainlink latestRoundData) at each day's last block, with each round's update time.
- Source: OptimismPortal TransactionDeposited and WithdrawalFinalized events on Ethereum for OP Stack chains
- Source: L1StandardBridge deposit and withdrawal-finalized events for ETH and ERC-20 tokens
- Source: Arbitrum Bridge MessageDelivered, gateway DepositInitiated and Outbox OutBoxTransactionExecuted events
- Source: Deposit and withdrawal-finalization events of the ZKsync, Linea and Scroll bridges on Ethereum
- Source: Withdrawal initiation events on each layer 2, for withdrawals still pending
- Source: Chainlink price feeds at the block of each transfer

## Questions

### What is a canonical bridge?

A rollup's own bridge, whose contracts on Ethereum hold deposited assets and release them only when the rollup's proof system confirms a withdrawal. Assets in it are secured by the rollup itself, unlike tokens brought in by a third-party bridge.

### Why are withdrawals counted when they are finalized?

On optimistic rollups a withdrawal waits about a week between being started on the layer 2 and being released on Ethereum. Counting it at finalization matches the moment the assets leave the bridge, and withdrawals still waiting are shown as pending.

### Why are USDC flows missing for some chains?

Native USDC moves between chains through Circle's CCTP, which burns it on one chain and mints it on another, so it never passes through a canonical bridge. Those transfers are outside this dashboard's scope and are labelled as such.

### Does a net outflow mean a layer 2 is shrinking?

Not necessarily. Assets can leave through third-party bridges or exchanges, and value can be created on the layer 2 itself. Net canonical flows show one route in and out; the L2 TVL dashboard shows the full balance by source.

## Glossary

- **Canonical bridge**: A rollup's own bridge contracts on Ethereum, which hold deposits and release them only on withdrawals its proof system confirms.
- **Net flow**: Deposits minus finalized withdrawals over a period, for one bridge and token.
- **Pending withdrawal**: A withdrawal started on a layer 2 that has not yet been finalized on Ethereum.

## Related apps

- [Ethereum L2 TVL: Value Locked in Rollup Bridges](https://voltfincrypto.com/apps/ethereum-l2-tvl)
- [Bridged Token Backing: Locked vs Minted Supply](https://voltfincrypto.com/apps/bridged-token-backing)
- [L2 Withdrawal Times to Ethereum by Rollup](https://voltfincrypto.com/apps/l2-withdrawal-times)
- [Ethereum Layer 2 List Ranked by Activity, Fees and Value](https://voltfincrypto.com/apps/ethereum-layer-2-list)
- [Cross-Chain Intents: Volume, Solvers and Fill Times](https://voltfincrypto.com/apps/cross-chain-intents-solvers)
- [Ethereum TPS: Mainnet and Layer 2 Transactions per Second](https://voltfincrypto.com/apps/ethereum-tps)

Build it in Voltfin Studio: https://app.voltfincrypto.com/signup?next=%2F
