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

FA deposits

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

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

  subgraph ACT["L2 · EVM · ACTUAL"]
    direction TB
    QUEUE["Call FABridge.queueBlockscout · transaction · 0xff…02"]:::evm
    QD["Event QueuedDepositBlockscout · event · 0xff…02"]:::evm
    CLAIM["Call FABridge.claimBlockscout · transaction · 0xff…02"]:::evm
    EVA["Event DepositBlockscout · event · 0xff…02✓ etherlink.on_deposit✚ EtherlinkDepositOperation✚ EtherlinkToken"]:::evm
    WT(["Watchtower"]):::actor
    QUEUE --> QD
    QD --> CLAIM
    CLAIM --> EVA
  end

  subgraph LEG["L2 · EVM · LEGACY"]
    direction TB
    EVL["Event DepositBlockscout · event · 0x00…00✓ etherlink.on_deposit✚ EtherlinkDepositOperation✚ EtherlinkToken"]:::evm
  end

  subgraph ERC["L2 · ERC-20 (token)"]
    direction TB
    TM["Call Token.mintBlockscout · call · ERC-20"]:::evm
    MINT["Event TransferBlockscout · event · ERC-20✓ etherlink.on_transfer✎ EtherlinkTokenHolder"]:::evm
    TM --> MINT
  end

  TT --> INBOX
  KFA -->|with proxy → queue| QUEUE
  KFA -->|without proxy| EVA
  KFA -->|old kernel| EVL
  EVA --> TM
  EVL --> TM
  WT -.-> CLAIM

  class TT indexed
  class INBOX indexed
  class EVA indexed
  class EVL indexed
  class EVL legacy
  class MINT indexed
  class DEP faded
  class KFA faded
  class QUEUE faded
  class QD faded
  class CLAIM faded
  class TM faded
  class WT faded

  classDef l1 fill:#e8836b1f,stroke:#e8836b,stroke-width:1.5px;
  classDef evm fill:#5aa6e01f,stroke:#5aa6e0,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 faded stroke-width:1.5px;
  classDef legacy stroke-width:1.5px;

  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:#8b919c,stroke-width:2.4px;
  linkStyle 7 stroke:#5aa6e0,stroke-width:2.4px;
  linkStyle 8 stroke:#5aa6e0,stroke-width:2.4px;
  linkStyle 9 stroke:#5aa6e0,stroke-width:2.4px,stroke-dasharray:6 5,opacity:0.55;
  linkStyle 10 stroke:#5aa6e0,stroke-width:2.4px;
  linkStyle 11 stroke:#5aa6e0,stroke-width:2.4px;
  linkStyle 12 stroke:#5aa6e0,stroke-width:2.4px,stroke-dasharray:6 5,opacity:0.55;
    
Legend
Hue L1 L2 EVM Kernel
Decision indexed not indexed
Status Legacy · remains in mainnet