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

XTZ fast withdrawals

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
    FW["Call XTZBridge.fast_withdraw_base58EVM node · transaction · 0xff…01"]:::evm
    EV["Event FastWithdrawalEVM node · event · 0xff…01✓ etherlink.on_xtz_withdraw✚ EtherlinkWithdrawOperation"]:::evm
    USER_E -->|xtz| FW
    FW --> 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 L1B["L1 · MICHELSON · after ~14 days"]
    direction TB
    CEM["Rollup cementTzKT · transaction · Rollup✓ tezos.on_cement_commitment✚ RollupCementedCommitment"]:::l1
    EXE["Rollup executeTzKT · transaction · Rollup✓ tezos.on_rollup_execute✎ TezosWithdrawOperation"]:::l1
    FW_DEF["Call FastWithdrawal.defaultTzKT · transaction · FastWithdrawal"]:::l1
    FW_EV["Event settle_withdrawalTzKT · event · FastWithdrawal"]:::l1
    WD["Call Ticketer.burnTzKT · transaction · Tez-Ticketer"]:::l1
    VT_FIN["Value TransferTzKT · transaction · Tez-Ticketer"]:::l1
    SP_REF(["Service Provider"]):::actor
    WT(["Watchtower"]):::actor
    CEM -.-> EXE
    EXE -->|ticket| FW_DEF
    FW_DEF --> FW_EV
    FW_DEF -->|ticket| WD
    WD --> VT_FIN
  end

  subgraph L1A["L1 · MICHELSON · instant"]
    direction TB
    PUB["Rollup publishTzKT · transaction · Rollup"]:::l1
    PAY["Call FastWithdrawal.payout_withdrawalTzKT · transaction · FastWithdrawal✓ tezos.on_claim_xtz_fast_withdrawal✎ TezosWithdrawOperation"]:::l1
    PAY_EV["Event payout_withdrawalTzKT · event · FastWithdrawal"]:::l1
    VT_PAY["Value TransferTzKT · transaction · FastWithdrawal"]:::l1
    USER_L1(["User"]):::actor
    SP(["Service Provider"]):::actor
    PAY --> PAY_EV
    PAY --> VT_PAY
    VT_PAY -->|xtz| USER_L1
  end

  NAC -->|NAC| FW
  FW --> SOM
  OUT --> PUB
  PUB -.->|⏳ ~14 days · refutation window| CEM
  PUB -.->|SP sees commitment| SP
  SP -->|xtz| PAY
  VT_FIN -->|xtz| SP_REF
  WT --> EXE

  class EV indexed
  class OUT indexed
  class CEM indexed
  class EXE indexed
  class PAY indexed
  class NAC faded
  class FW faded
  class SOM faded
  class PUB faded
  class FW_DEF faded
  class FW_EV faded
  class WD faded
  class VT_FIN faded
  class PAY_EV faded
  class VT_PAY faded
  class SP faded
  class SP_REF faded
  class WT faded
  class USER_L1 faded
  class USER_M faded
  class USER_E 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:#e8836b,stroke-width:2.4px;
  linkStyle 9 stroke:#e8836b,stroke-width:2.4px;
  linkStyle 10 stroke:#e8836b,stroke-width:2.4px;
  linkStyle 11 stroke:#e8836b,stroke-width:2.4px;
  linkStyle 12 stroke:#6fbf73,stroke-width:2.4px;
  linkStyle 13 stroke:#5aa6e0,stroke-width:2.4px;
  linkStyle 14 stroke:#8b919c,stroke-width:2.4px;
  linkStyle 15 stroke:#e8836b,stroke-width:2.4px,stroke-dasharray:6 5;
  linkStyle 16 stroke:#e8836b,stroke-width:2.4px,stroke-dasharray:6 5;
  linkStyle 17 stroke:#e8836b,stroke-width:2.4px;
  linkStyle 18 stroke:#e8836b,stroke-width:2.4px;
  linkStyle 19 stroke:#e8836b,stroke-width:2.4px;
    
Legend
Hue L2 Michelson L2 EVM Kernel / outbox L1 rollup / SP
Decision indexed not indexed
Status ⏳ ~14 days refutation window actor (off-chain) · capsule