> ## 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.

# Linea Native Bridge (linea-bridge)

> Official Linea zkEVM bridge via L1MessageService. Deposits ETH from Ethereum to Linea with ZK proof-based finality.

Official Linea zkEVM bridge via L1MessageService. Deposits ETH from Ethereum to Linea with ZK proof-based finality.

| Fact | Value |
| - | - |
| Category | Bridges |
| Family | none |
| Namespace | `LineaBridge` on ethereum, linea |
| Chains | ethereum, linea |

## Notes

* **L1 to L2** via L1MessageService. L2 to L1 via L2MessageService on Linea
* `sendMessage` is a general-purpose L1-to-L2 message sender -- ETH transfer is implicit via msg.value
* The `_fee` parameter incentivizes postmen (relayers) to deliver the message. Set to 0 and self-claim via `claimMessage`
* `_calldata` enables arbitrary contract execution on L2 when the message is delivered
* zkEVM architecture -- finality with ZK proofs (typically 8-32 hours for proof generation)
* L2 to L1 withdrawals also require ZK proof finalization
* For ERC-20 bridging, use the Linea Token Bridge contracts (separate from the message service)
* Canonical bridge, secured by Linea's ZK proving system (Consensys)

## Its names in a program

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

```ts theme={null}
function main() {
  // Ethereum's l1MessageService, `0xd19d4B5d358258f05D7B411E21A1460D11B0876F`.
  require(LineaBridge.L1MessageService != 0);
}
```

## Deployments

| Chain | Contract | Address | In a program |
| - | - | - | - |
| [Ethereum](https://docs.eco.com/sauce-sdk/reference/chains/ethereum.md) | l1MessageService | `0xd19d4B5d358258f05D7B411E21A1460D11B0876F` | `LineaBridge.L1MessageService` |
| [Linea](https://docs.eco.com/sauce-sdk/reference/chains/linea.md) | l2MessageService | `0x508Ca82Df566dCD1B0DE8296e70a96332cD644ec` | `LineaBridge.L2MessageService` |

## ABI

### `LineaL1MessageServiceABI`

`import LineaL1MessageServiceABI from "./protocols/linea-bridge/LineaL1MessageServiceABI.json";` Speaks for: l1MessageService.

* `sendMessage(address _to, uint256 _fee, bytes _calldata) payable`
* `claimMessage(address _from, address _to, uint256 _fee, uint256 _value, address _feeRecipient, bytes _calldata, uint256 _nonce)`

## 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.