overview· xtz deposits· fa deposits· xtz withdrawals· xtz fast withdrawals· fa withdrawals· design
bridge indexing · withdrawal

XTZ withdrawals · standard

flowchart TD
  subgraph MICH["L2 · MICHELSON"]
    direction TB
    USER_M(["User"]):::actor-mich
    NAC["Call Gateway.call_evmTzKT · transaction · Gateway"]:::mich
    USER_M -->|xtz| NAC
  end

  subgraph EVM["L2 · EVM"]
    direction TB
    USER_E(["User"]):::actor-evm
    WB["Call XTZBridge.withdraw_base58EVM node · transaction · 0xff…01"]:::evm
    EV["Event WithdrawalEVM node · event · 0xff…01✓ etherlink.on_xtz_withdraw✚ EtherlinkWithdrawOperation"]:::evm
    USER_E -->|xtz| WB
    WB --> EV
  end

  subgraph KER["ROLLUP / KERNEL"]
    direction TB
    SOM["Call SendOutboxMessageKernel · precompile · 0xff…03"]:::sys
    OUT["Rollup outbox messageRollup node · outbox · Rollup✓ rollup_message_index"]:::sys
    SOM --> OUT
  end

  subgraph L1["L1 · MICHELSON"]
    direction TB
    PUB["Rollup publishTzKT · transaction · Rollup"]:::l1
    CEM["Rollup cementTzKT · transaction · Rollup✓ tezos.on_cement_commitment✚ RollupCementedCommitment"]:::l1
    EXE["Rollup executeTzKT · transaction · Rollup✓ tezos.on_rollup_execute✚ TezosWithdrawOperation"]:::l1
    WD["Call Ticketer.burnTzKT · transaction · Tez-Ticketer"]:::l1
    VT["Value TransferTzKT · transaction · Tez-Ticketer"]:::l1
    USER_L1(["User"]):::actor
    WT(["Watchtower"]):::actor
    CEM -.-> EXE
    EXE -->|ticket| WD
    WD --> VT
    VT -->|xtz| USER_L1
  end

  NAC -->|NAC| WB
  WB --> SOM
  OUT --> PUB
  PUB -.->|⏳ ~14 days · refutation window| CEM
  WT --> EXE

  class EV indexed
  class OUT indexed
  class CEM indexed
  class EXE indexed
  class NAC faded
  class WB faded
  class SOM faded
  class PUB faded
  class WD faded
  class VT faded
  class WT faded
  class USER_M faded
  class USER_E faded
  class USER_L1 faded

  classDef l1 fill:#e8836b1f,stroke:#e8836b,stroke-width:1.5px;
  classDef evm fill:#5aa6e01f,stroke:#5aa6e0,stroke-width:1.5px;
  classDef mich fill:#6fbf731f,stroke:#6fbf73,stroke-width:1.5px;
  classDef sys fill:#8b919c1f,stroke:#8b919c,stroke-width:1.5px;
  classDef actor fill:transparent,stroke:#e8836b,stroke-width:1.5px;
  classDef actor-mich fill:transparent,stroke:#6fbf73,stroke-width:1.5px;
  classDef actor-evm fill:transparent,stroke:#5aa6e0,stroke-width:1.5px;
  classDef indexed stroke-width:2px;
  classDef faded stroke-width:1.5px;

  linkStyle 0 stroke:#6fbf73,stroke-width:2.4px;
  linkStyle 1 stroke:#5aa6e0,stroke-width:2.4px;
  linkStyle 2 stroke:#5aa6e0,stroke-width:2.4px;
  linkStyle 3 stroke:#8b919c,stroke-width:2.4px;
  linkStyle 4 stroke:#e8836b,stroke-width:2.4px,stroke-dasharray:6 5;
  linkStyle 5 stroke:#e8836b,stroke-width:2.4px;
  linkStyle 6 stroke:#e8836b,stroke-width:2.4px;
  linkStyle 7 stroke:#e8836b,stroke-width:2.4px;
  linkStyle 8 stroke:#6fbf73,stroke-width:2.4px;
  linkStyle 9 stroke:#5aa6e0,stroke-width:2.4px;
  linkStyle 10 stroke:#8b919c,stroke-width:2.4px;
  linkStyle 11 stroke:#e8836b,stroke-width:2.4px,stroke-dasharray:6 5;
  linkStyle 12 stroke:#e8836b,stroke-width:2.4px;
    
Legend
Hue L2 Michelson L2 EVM Kernel / outbox L1 rollup
Decision indexed not indexed
Status ⏳ ~14 days refutation window