Withdraw
Last updated
Last updated
There are 4 types of withdraw functions: withdraw, forced withdraw (permissionless), proxy withdraw, and Dunkirk exit.
Calls | EVM Signature | NonEvm Signature | Comment |
---|---|---|---|
proxy withdraw
applies to accounts that can not generate pubkeyhash. For example, a user mistakenly transfers tokens to a smart contract address that does not support pubkeyhash generation. To withdraw the token from Layer2 to Layer1 in such a case, a third-party proxy is required to send the withdrawal request. Noted that the to_address must be THE smart contract address.
💡 Fast Withdraw is not a Layer2 function, but a supplementary feature to Layer2 withdraw function.
zkLink verify contract supports Brokers to prepay the withdrawal to users as a substitute to regular withdraws, only if the user agrees to pay the broker fee.
The record of prepayment information is stored in Layer1 smart contracts. When a withdrawal is zk_verified on-chain, the according prepayment record will be checked in accepts
; if it is included, the to_address will be replaced with the broker address.
The serial execution of the broker logic defined in the smart contract makes sure that: 1. multiple brokers cannot take the same fast withdraw request simultaneously; 2. a single request cannot be approved multiple times.
The broker records are stored in the contract. Once the prepayment is successfully executed, the broker will definitely receive the prepaid principal.
Forced Withdraw
• ECDSA
(secp256k1)
• ECDSA
(Stark Curve)
On-chain transaction that needs to be initiated towards the according networks
Dunkirk Exit
• ECDSA
(secp256k1)
• ECDSA
(Stark Curve)
On-chain transaction that needs to be initiated towards the according networks
Withdraw
• ECDSA
(EIP712, secp256k1)
• EDDSA
(alt_babyjubjub)
• ECDSA
(Stark Curve)
• EDDSA
(alt_babyjubjub)
zkLink L2 operation that requires two signatures: ECDSA for verification from dApp-end, and EDDSA for circuit verification
Proxy Withdraw
• ECDSA
(EIP712, secp256k1)
• EDDSA
(alt_babyjubjub)
• ECDSA
(Stark Curve)
• EDDSA
(alt_babyjubjub)
zkLink L2 operation that requires two signatures: ECDSA for verification from dApp-end, and EDDSA for circuit verification
Comment
Ethereum, zkSync, Scroll, Linea, BSC, Polygon, Avalanche, etc.
In the current version, the only non-EVM network that zkLink supports is Starknet