> For the complete documentation index, see [llms.txt](https://docs.zetrix.com/zetrix-l2-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.zetrix.com/zetrix-l2-documentation/usage/asset-flow.md).

# Asset Flow

## Overview

```
L1 Native ZETRIX → Bridge → Wrapped Zetrix (wZETRIX) → L2
```

```mermaid
flowchart TB
    A["L1 Native ZETRIX"] --> B["Bridge / Lock on L1"]
    B --> C["Relayer observes deposit"]
    C --> D["Mint wZETRIX on L2"]
    D --> E["Use on L2:<br/>transfer, dApps, gas"]
    E --> F["Burn wZETRIX<br/>to withdraw"]
    F --> G["Bridge unlock on L1"]
    G --> H["L1 Native ZETRIX<br/>returned"]
```

## Deposits (L1 → L2)

```mermaid
sequenceDiagram
    participant User
    participant L1 as Zetrix L1 Bridge
    participant Rel as Relayer
    participant L2 as Z2
    User->>L1: Lock ZTP-20 / ZTP-721 in Bridge
    L1-->>Rel: Delayed message (deposit)
    Rel->>Rel: Wait for confirmations
    Rel->>L2: Deliver → credit wZETRIX / mapped token
    L2-->>User: L2 balance available (seconds)
```

* User locks native ZETRIX / ZTP-20 (or a ZTP-721 NFT) in the L1 **Bridge**, which enqueues a **delayed message**.
* The **Relayer** delivers the message and the asset is credited on L2 (typically within seconds).

## Withdrawals (L2 → L1)

```mermaid
sequenceDiagram
    participant User
    participant L2 as Z2
    participant Prop as Proposer
    participant Rollup as L1 Rollup
    participant Outbox as L1 Bridge / Outbox
    User->>L2: Initiate withdrawal (burn wZETRIX / mapped token)
    L2->>Prop: Include in assertion
    Prop->>Rollup: Post assertion referencing withdrawal
    Note over Rollup: Challenge window (no successful dispute)
    Rollup->>Rollup: Assertion confirmed (final)
    User->>Outbox: Claim with Merkle proof against confirmed assertion
    Outbox-->>User: Release native ZETRIX / token
```

> \[!WARNING] Withdrawals are subject to the **challenge window** before the assertion is confirmed. The user then **claims on L1 with a Merkle proof** against that confirmed assertion via the **Outbox**. Do not treat a withdrawal as complete until the L1 claim succeeds.

## Token Wrapping

* **Wrapping:** Native ZETRIX locked on L1 → wZETRIX minted on L2 (1:1, subject to bridge policy).
* **Unwrapping:** wZETRIX burned on L2 → native ZETRIX released on L1 after the withdrawal is confirmed and claimed.
* **ZTP-20 / ZTP-721:** Fungible (ZTP-20) and NFT (ZTP-721) assets are custodied by the Bridge and mapped to L2 representations via the same lock/mint, burn/claim pattern.

| Direction | L1 action                                           | L2 action                   | Timing                 |
| --------- | --------------------------------------------------- | --------------------------- | ---------------------- |
| Deposit   | Lock in Bridge (delayed message)                    | Mint wZETRIX / mapped token | Fast (seconds)         |
| Withdraw  | Confirm assertion → claim via Outbox (Merkle proof) | Burn / initiate             | After challenge window |

***

[← Wallet Configuration](/zetrix-l2-documentation/usage/wallet-configuration.md) · [Index](/zetrix-l2-documentation/readme.md) · [Tokenomics →](/zetrix-l2-documentation/usage/tokenomics.md)
