# Bridge

The bridge precompile allows users to initiate withdrawals from Pod to other chains. Tokens withdrawn via the bridge precompile are burned on Pod and can be claimed on the destination chain's bridge contract using a validator proof.

For how the bridge works end-to-end, see [Native Bridge](https://docs.v2.pod.network/documentation/native-bridge). For step-by-step guides, see [Bridge to Pod](/guides-references/guides/bridge-to-pod.md) and [Bridge from Pod](/guides-references/guides/bridge-from-pod.md).

**Precompile address:** `0x50d0000000000000000000000000000000000001`

## Interface

```solidity
interface IPodBridge {
    /// @notice Emitted when tokens are withdrawn for bridging to another chain.
    event Withdraw(
        bytes32 indexed id,
        address indexed from,
        address indexed to,
        address token,
        uint256 amount,
        uint256 chainId
    );

    /// @notice Initiate a withdrawal to another chain. Burns tokens on Pod and emits
    ///         a Withdraw event. Use the transaction hash to obtain a claim proof
    ///         via pod_getBridgeClaimProof.
    /// @param token Token address on Pod. Use 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE for native token.
    /// @param amount Amount of tokens to bridge.
    /// @param to Recipient address on the target chain.
    /// @param chainId Target chain ID where the claim will happen. Prevents replay across chains.
    /// @return id Unique withdraw identifier.
    function withdraw(
        address token,
        uint256 amount,
        address to,
        uint256 chainId
    ) external returns (bytes32 id);
}
```

## Decimal Scaling

All tokens on Pod are represented with 18 decimals, regardless of their decimals on the target chain (e.g. USDC has 6 decimals on Ethereum but 18 on Pod).

When calling `withdraw` to bridge from Pod to another chain, the `amount` must be specified in the **target chain token's units**, not in Pod's 18-decimal representation. For example, to bridge 1 USDC to Ethereum, pass `1000000` (1e6), not `1000000000000000000` (1e18).

## Native Token Withdrawals

When withdrawing the native token (ETH), **`tx.value` must be `0`**. The bridge deducts the balance internally — do not send value with the transaction.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.v2.pod.network/guides-references/references/applications-precompiles/bridge.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
