> ## Documentation Index
> Fetch the complete documentation index at: https://docs.eco.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Base Native Bridge (base-bridge)

> Official Base L1StandardBridge for depositing ETH and ERC-20 tokens from Ethereum to Base. OP Stack architecture with 7-day withdrawal finality.

Official Base L1StandardBridge for depositing ETH and ERC-20 tokens from Ethereum to Base. OP Stack architecture with 7-day withdrawal finality.

| Fact | Value |
| - | - |
| Category | Bridges |
| Family | none |
| Namespace | `BaseBridge` on ethereum, base |
| Chains | ethereum, base |

## Notes

* **L1 to L2 only** via this contract. For L2 to L1 withdrawals, use the L2StandardBridge on Base (takes 7 days)
* OP Stack architecture -- same bridge pattern as Optimism, Mode, Zora
* `depositETH` / `depositERC20` are for an externally owned account only: called from a contract, a Pot included, they revert with "StandardBridge: function can only be called from an EOA". A Sauce program uses `depositETHTo` / `depositERC20To` and names the recipient, the user's wallet unless they chose otherwise
* L1 to L2 deposits finalize in \~2-5 minutes (after L1 inclusion + sequencer processing)
* L2 to L1 withdrawals require 7-day challenge period (optimistic rollup security)
* `_l2Token` must be the official bridged token representation on Base -- incorrect L2 token address will cause deposit to fail
* Canonical bridge, secured by the Base (OP Stack) rollup itself
* L2StandardBridge is at a predefined address: `0x4200000000000000000000000000000000000010`

## Its names in a program

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

```ts theme={null}
function main() {
  // Ethereum's l1StandardBridge, `0x3154Cf16ccdb4C6d922629664174b904d80F2C35`.
  require(BaseBridge.L1StandardBridge != 0);
}
```

## Deployments

| Chain | Contract | Address | In a program |
| - | - | - | - |
| [Ethereum](https://docs.eco.com/sauce-sdk/reference/chains/ethereum.md) | l1StandardBridge | `0x3154Cf16ccdb4C6d922629664174b904d80F2C35` | `BaseBridge.L1StandardBridge` |
| [Base](https://docs.eco.com/sauce-sdk/reference/chains/base.md) | l2StandardBridge | `0x4200000000000000000000000000000000000010` | `BaseBridge.L2StandardBridge` |

## ABI

### `BaseL1StandardBridgeABI`

`import BaseL1StandardBridgeABI from "./protocols/base-bridge/BaseL1StandardBridgeABI.json";` Speaks for: l1StandardBridge.

* `depositETH(uint32 _minGasLimit, bytes _extraData) payable`
* `depositERC20(address _l1Token, address _l2Token, uint256 _amount, uint32 _minGasLimit, bytes _extraData)`
* `depositETHTo(address _to, uint32 _minGasLimit, bytes _extraData) payable`
* `depositERC20To(address _l1Token, address _l2Token, address _to, uint256 _amount, uint32 _minGasLimit, bytes _extraData)`

## Next steps

* [Protocols](https://docs.eco.com/sauce-sdk/reference/protocols.md): the other protocols, by what they do.
* [Protocols and tokens](https://docs.eco.com/sauce/names.md): calling a contract by its namespace, or through its ABI.
* [Glossary](https://docs.eco.com/sauce/glossary.md): the words these pages use, in plain terms.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.