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 Bridgearrow-up-right. For step-by-step guides, see Bridge to Pod and Bridge from Pod.

Precompile address: 0x0000000000000000000000000000000000B41D9E

Interface

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.

Last updated