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

#SignerContract fieldAttests that...
1User walletuserSignatureThe user authorizes a specific (token, amount, receiver) payout.
2Trade systemcoreSignatureThe user's off-chain balance is sufficient and not locked in open positions.
3Proofer validatorproofSignatureAn 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

  1. You enter an amount and (optionally) a receiver address. By default, the receiver is your connected wallet.
  2. The browser reads the vault's paymentManager address from the vault contract.
  3. You sign an EIP-712 Withdraw payload bound to that payment-manager contract.
  4. The signed payload is submitted to the backend.
  5. The trade system signs its attestation that your balance covers the withdrawal.
  6. The proofer validator independently signs its attestation of the state proof.
  7. 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.