overview· xtz deposits· fa deposits· xtz withdrawals· xtz fast withdrawals· fa withdrawals· design
Bridge indexing · deposit

XTZ deposits

flowchart TD
  subgraph L1["L1 · MICHELSON"]
    direction TB
    MINT["Call ticketer.mintTzKT · transaction · tez-ticketer"]:::l1
    TT["Transfer TicketTzKT · transaction · rollup✓ tezos.on_rollup_call✚ TezosDepositOperation"]:::l1
    MINT --> TT
  end

  subgraph KER["ROLLUP / KERNEL"]
    direction TB
    INBOX["Inbox messageTzKT · inbox · rollup✓ rollup_message_index✚ RollupInboxMessage"]:::sys
    KP["Kernel parse_routing"]:::ker
    INBOX --> KP
  end

  subgraph EVMA["L2 · EVM · ACTUAL"]
    direction TB
    QUEUE["Call XTZBridge.queueBlockscout · transaction · 0xff…01"]:::evm
    QD["Event QueuedDepositBlockscout · event · 0xff…01"]:::evm
    CLAIM["Call XTZBridge.claim_xtzBlockscout · transaction · 0xff…01"]:::evm
    VT["Value TransferBlockscout · transaction · 0x…feed✓ etherlink.on_xtz_deposit✚ EtherlinkDepositOperation"]:::evm
    EV["Event DepositBlockscout · event · 0xff…01"]:::evm
    WT(["Watchtower"]):::actor
    QUEUE --> QD
    QD --> CLAIM
    CLAIM --> VT
    VT --> EV
  end

  subgraph EVML["L2 · EVM · LEGACY"]
    direction TB
    LVT["Value TransferBlockscout · transaction · 0x00…00✓ etherlink.on_xtz_deposit✚ EtherlinkDepositOperation"]:::evm
    LEV["Event DepositBlockscout · event · 0x00…00"]:::evm
    LVT --> LEV
  end

  subgraph MICH["L2 · MICHELSON"]
    direction TB
    MTX["Value TransferTzKT · transaction · tz1Ke2h7…"]:::mich
    MEV["Event DepositTzKT · event · tz1Ke2h7…◔ planned: tezos.events✚ TezosDepositOperation"]:::mich
    MTX --> MEV
  end

  TT --> INBOX
  KP -->|has code → queue| QUEUE
  KP -->|no code| VT
  KP -->|old kernel| LVT
  KP -->|Michelson · tz1| MTX
  WT -.-> CLAIM

  %% decision classes — one line per node (a comma in class = a list of NODES, not classes)
  class TT indexed
  class INBOX indexed
  class VT indexed
  class LVT indexed
  class LVT legacy
  class LEV legacy
  class QUEUE faded
  class QD faded
  class CLAIM faded
  class EV faded
  class LEV faded
  class MINT faded
  class MTX faded
  class KP faded
  class WT faded
  class MEV planned

  %% IMPORTANT: no color: in classDef — mermaid turns it into `.class span{color !important}`,
  %% which overrides per-line colors (.t/.s/.ix/.md). Text color is set ONLY by themeCSS. classDef = border/fill.
  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 ker fill:#d9a83c21,stroke:#d9a83c,stroke-width:1.5px;
  classDef sys fill:#8b919c1f,stroke:#8b919c,stroke-width:1.5px;
  classDef actor fill:transparent,stroke:#5aa6e0,stroke-width:1.5px;
  classDef indexed stroke-width:2px;
  classDef planned stroke-width:2px;
  classDef faded stroke-width:1.5px;
  classDef legacy stroke-width:1.5px;

  %% edge color = runtime of the source (rule #4). Order = order of edge declaration, including edges inside subgraphs
  linkStyle 0 stroke:#e8836b,stroke-width:2.4px;
  linkStyle 1 stroke:#8b919c,stroke-width:2.4px;
  linkStyle 2 stroke:#5aa6e0,stroke-width:2.4px;
  linkStyle 3 stroke:#5aa6e0,stroke-width:2.4px;
  linkStyle 4 stroke:#5aa6e0,stroke-width:2.4px;
  linkStyle 5 stroke:#5aa6e0,stroke-width:2.4px;
  linkStyle 6 stroke:#5aa6e0,stroke-width:2.4px;
  linkStyle 7 stroke:#6fbf73,stroke-width:2.4px;
  linkStyle 8 stroke:#8b919c,stroke-width:2.4px;
  linkStyle 9 stroke:#5aa6e0,stroke-width:2.4px;
  linkStyle 10 stroke:#5aa6e0,stroke-width:2.4px;
  linkStyle 11 stroke:#5aa6e0,stroke-width:2.4px,stroke-dasharray:6 5,opacity:0.55;
  linkStyle 12 stroke:#6fbf73,stroke-width:2.4px;
  linkStyle 13 stroke:#5aa6e0,stroke-width:2.4px,stroke-dasharray:6 5,opacity:0.55;
    
Legend
Hue L1 L2 EVM L2 Michelson Kernel
Decision indexed planned not indexed
Status Legacy · remains in mainnet