Core Flow (Withdraw)
Withdrawals are the only path out of the vault, and they require three independent proofs. This is what makes the system genuinely non-custodial: no single party — not even the platform — can release your funds on its own.
This page explains the mechanics. For the step-by-step UI walkthrough, see How to Withdraw Assets.
The three required signatures
| # | Signer | Contract field | Attests that... |
|---|---|---|---|
| 1 | User wallet | userSignature | The user authorizes a specific (token, amount, receiver) payout. |
| 2 | Trade system | coreSignature | The user's off-chain balance is sufficient and not locked in open positions. |
| 3 | Proofer validator | proofSignature | An independent validator confirms the state proof matches what the vault sees. |
These three fields make up the WithdrawalSignatureInfo struct on the vault. A missing or invalid signature reverts the on-chain withdraw call with NotEnoughSignatures or InvalidSignature — your funds stay safely in the vault.
How it works
- You enter an amount and (optionally) a receiver address. By default, the receiver is your connected wallet.
- The browser reads the vault's
paymentManageraddress from the vault contract. - You sign an EIP-712
Withdrawpayload bound to that payment-manager contract. - The signed payload is submitted to the backend.
- The trade system signs its attestation that your balance covers the withdrawal.
- The proofer validator independently signs its attestation of the state proof.
- The payment manager verifies all three signatures and releases funds from the vault.
Status tracking
Withdrawals are processed asynchronously. The dashboard shows the lifecycle: queued → proving → settling → settled. If anything fails (insufficient balance, invalid state proof, expired signature), the withdrawal returns to a failed state with the reason, and your funds remain safely in the vault.
Trust assumptions
- You must sign — without your signature, nothing can be withdrawn.
- The trade system must agree your balance covers the request — protecting against under-collateralized withdrawals.
- The proofer validator runs independently of the trade system — providing a check on the trade system itself.
See the Technical Reference for the exact Withdraw payload and WithdrawRequest struct.