- EIP-712 signed by the user against the vault’s
WithdrawERC20typed-data struct. - AML-screened by core-api (Global Ledger sanction + risk check).
If flagged, the withdrawal enters
MLRO_REVIEWfor human compliance review. - Backend co-signed with a second EIP-712 signature. Dual signatures are both required on-chain; neither party can move funds alone.
- Submitted on-chain by PredictStreet’s backend submitter (PredictStreet pays gas).
- Confirmed when the on-chain tx receipt is observed.
State machine
Typical timeline
- Happy path (no flag): under 10s from request to
CONFIRMEDon testnet; target < 60s on mainnet. - MLRO review path: SLA 1 business day for decision, per SOP §8.
User-visible balance effects
| Transition | available | locked | Comment |
|---|---|---|---|
| Request | −amount | +amount | Locked until outcome |
CONFIRMED | 0 | −amount | Funds gone from platform |
REJECTED / CANCELLED / on-chain revert | +amount | −amount | Full refund |
Partner & MM notes
Market makers running high withdrawal cadence should:- Pre-register destination wallets via deposit sources (see Deposit sources) — otherwise the first withdrawal to a new address triggers enhanced due diligence review above the threshold.
- Poll
GET /api/me/withdrawals/{id}or subscribe to thewithdrawals.meWebSocket channel for state transitions.
Next
Dual-sig flow
Why two signatures, how the co-sign works.
EIP-712 struct
WithdrawERC20 struct + signing.
State machine
All states + transitions.
Deposit sources
Return-to-source rules and EDD.