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