CEX 提現模組
三級審核、風控防線、冷熱錢包與四眼放款
本文件範圍說明
原《CEX 中心化錢包產品 PRD》涵蓋 9 大模組。為驗證企業版 skill 的輸出品質,本文件只取「提現」單一模組用企業版格式重寫到 AC / Edge Case 等級。數值沿用原文,原文未明訂者標 Open Q。
01文件資訊
| Document Title | CEX 提現模組 — 產品需求文件 |
|---|---|
| Owner / Status | Product · Draft |
| Version | v0.1(源自原 CEX PRD v1.0, 2023-07-12) |
| Reviewers | Engineering · QA · Risk/Compliance · 財務 · Security |
| Related | 原 CEX PRD §2.1/§5.5/§6.2 · 冷熱錢包 TDD · AML 政策 |
02Executive Summary
解決什麼問題:提現是交易所資金風險最高、最不可逆的路徑,要在「用戶順暢出金」與「擋住盜領、洗錢、內部舞弊」之間取得平衡。
目標使用者:已完成 KYC 的用戶(發起);風控、財務、Security(審核與放款)。
本期核心:三級金額審核、KYC/2FA/白名單前置防線、新地址冷靜期、熱錢包簽名放款、冷錢包四眼多簽、每日對帳。
03背景與問題定義
[已 KYC 的用戶] 在 [需把資產提領到鏈上地址] 的情境下,
因為 [提現一旦上鏈即不可逆,是盜領/洗錢/內部舞弊首要攻擊面],
需要 [一套兼顧體驗與多層防線的出金流程],
否則導致 [用戶資產被盜、平台承擔賠付與法遵風險]。
不處理的代價
- 無冷靜期與白名單 → 盜號後即時提空,平台賠付。
- 無四眼與對帳 → 內部人員可單方挪用,事後無法舉證。
04目標與成功指標
| 指標 | 定義 | Target | Window |
|---|---|---|---|
| 小額自動放行率 | <$1,000 自動完成 / 全部小額 | ≥ 98% | 週 |
| 中額審核時效 | $1k–$10k 規則審核 P95 | < 3 min | 日 |
| 大額審核 SLA | >$10k 人工於 2h 內完成 | ≥ 95% | 日 |
| 每日對帳差異 | 鏈上餘額 vs 帳本 | = 0 | 日 |
| 提現爭議率 | 用戶申訴 / 提現總筆數 | < 0.5% | 月 |
05使用者與情境
| User Type | 目標 | 痛點 | 權限 |
|---|---|---|---|
| 用戶 | 快速安全出金 | 冷靜期等待、審核不透明 | 發起提現、管白名單 |
| 風控 | 攔異常、審中大額 | 誤殺 vs 漏放 | 審核、凍結(需覆核) |
| 財務 | 放款、對帳 | 冷錢包補充耗時 | 放款提交(需覆核) |
| Security | 冷錢包多簽 | 金鑰分片協調 | 3/5 多簽 |
主要情境:盜號後嘗試提領至新地址
- Main Path(防線生效):新地址觸發 24h 鎖定 → 大額進人工 → 異常行為(新設備+新地址+大額)風險分升高 → 攔截 + 通知本人
- Failure Path:若攻擊者早已加白名單且過冷靜期 → 依賴 2FA 與提現前 Email 確認為最後防線
06Scope
In Scope
- 提現前置檢查(KYC 等級、2FA、白名單、餘額、密碼變更冷卻)
- 三級金額審核(自動 / 規則 / 人工)
- 新地址 24h 鎖定、24h 累計限額(按 KYC 等級)
- 熱錢包簽名放款、冷錢包補充四眼多簽
- 提現風控評分(含 AML 鏈上來源)、每日對帳
Out of Scope
| 不做 | 原因 / 移至 |
|---|---|
| 內部劃轉、站內轉帳 | 屬資產劃轉模組 |
| 法幣出金(銀行電匯) | 另一模組(不同法遵) |
| 冷錢包 MPC 自動化 | 原文 Phase 3 |
Phase Boundary
| 階段 | 包含 | 不包含 |
|---|---|---|
| MVP | 三幣種 · 三級審核 · 白名單 · 熱錢包放款 · 冷錢包手動多簽 | 多幣種擴充 · MPC 自動化 |
| Phase 2 | 多幣種 · 進階行為風控(ML) | 子帳戶 |
07Assumptions / Open Questions / Decision Log
Decision Log(沿用原文既定規格)
| ID | 決策 | 規格 | 來源 |
|---|---|---|---|
| D-01 | 三級金額審核 | <$1k 自動;$1k–$10k 規則(3min);>$10k 人工(2h) | §5.5 |
| D-02 | 新地址冷靜期 | 新增地址首次提現鎖定 24h | §5.5 |
| D-03 | 24h 累計限額 | 按 KYC(Lv1 ≤2 BTC/日、Lv2 ≤100 BTC/日) | §1.1 |
| D-04 | 密碼變更冷卻 | 改密碼後 24h 禁止提現 | §6.2 |
| D-05 | 多重驗證 | 2FA(Google Auth + Email/SMS)+ 防釣魚碼 | §6.2 |
| D-06 | 冷熱錢包 | 熱 2–5%、冷 95–98%;冷錢包 3/5 多簽 | §6.4 |
| D-07 | 後台四眼 | 凍結/手動出金/調限額需 Maker-Checker | §6.5 |
| D-08 | 每日對帳 | 鏈上餘額 vs 帳本,差異即時告警 | §6.4 |
Open Questions(原文未明訂)
| ID | 問題 | Owner |
|---|---|---|
| Q-01 | 「24h 累計限額」是滾動視窗還是自然日(UTC)?滾動視窗防繞過較佳 | 風控 |
| Q-02 | 提現手續費固定還是隨 gas 動態?誰吸收波動? | Product/財務 |
| Q-03 | 金額精度與捨入方向?尾差歸屬? | Eng/財務 |
| Q-04 | 提現 pending 超時的用戶側處理與客服 SOP? | Ops |
08Dependencies
| 類型 | 依賴 | Fallback |
|---|---|---|
| 內部 | 資產帳本(凍結/扣款,複式記帳) | 凍結失敗則不進放款 |
| 內部 | 風控引擎(規則 + ML,取嚴格值) | 不可用 → 全轉人工 |
| 內部 | 熱/冷錢包簽名服務 | 熱錢包不足 → 冷錢包補充(四眼) |
| 外部 | AML 鏈上分析(Chainalysis/Elliptic) | 不可用 → 大額一律人工 |
| 外部 | 區塊鏈節點(廣播/確認) | 異常 → 暫停廣播 + 告警 |
09Roles & Permissions
| 操作 | 用戶 | 風控 | 財務 | Security |
|---|---|---|---|---|
| 發起提現 / 管白名單 | ✅ | — | — | — |
| 審核中/大額提現 | — | ✅ | — | — |
| 熱錢包放款提交 | — | — | ✅(需覆核) | — |
| 凍結帳號 / 調限額 | — | ✅ 提交 | — | 覆核 |
| 冷錢包補充 | — | — | 提交 | ✅ 3/5 多簽 |
角色邊界
本節定義「誰能做什麼」屬產品要求。RBAC 實作、Session 機制屬工程技術決策,不在本 PRD 指定(原 CEX 文件將這些寫進 PRD;企業版 skill 建議移至 TDD——差異見文末)。
10後台安全控制清單(金融級)
存取 / 身分驗證層
| 控制 | 規格 |
|---|---|
| IP 白名單 | 後台僅限公司固定 IP + VPN |
| 2FA / GA 綁定 | 後台強制 TOTP,首次登入強制綁定 |
| 登入錯誤凍結 | 連續 5 次失敗 → 凍結 30 分鐘 + 告警 |
| Session 政策 | 閒置 15 分登出、絕對逾時 8 小時 |
操作授權層(核心)
| 控制 | 規格 |
|---|---|
| 高風險二次驗證 | 手動出金、調限額、凍結需再輸入 OTP |
| Maker-Checker 四眼 | 手動出金/凍結/調限額,提交者不得自審(§6.5) |
| 覆核門檻 | 大額(>$10k)強制覆核;冷錢包補充需 3/5 |
| 覆核 SLA | 2h 內未處理 → 升級告警,不自動放行 |
稽核層
| 控制 | 規格 |
|---|---|
| 不可竄改 Audit Log | 審核/放款/凍結記操作者/時間/前後值/來源 IP,寫入獨立審計庫(§6.5) |
| 即時告警 | 大額出金、對帳差異、異常提現即時告警 |
| 定期權限盤點 | 每月複查,離職即時撤銷(§6.5) |
11Functional Requirements
11.1 商業規則
| Rule | 名稱 | 條件 | 系統行為 | Pri |
|---|---|---|---|---|
| R-01 | 前置檢查 | 發起提現 | 依序 KYC → 2FA → 餘額 → 白名單 → 密碼冷卻,任一不過即擋並提示原因 | 最高 |
| R-02 | 三級審核 | 通過前置後依金額分流 | <$1k 自動;$1k–$10k 規則(3min);>$10k 人工(2h) | 最高 |
| R-03 | 新地址鎖定 | 目標為 24h 內新增地址 | 拒絕直到冷靜期滿 | 高 |
| R-04 | 24h 累計限額 | 近 24h + 本次 > KYC 上限 | 擋單,提示升 KYC 或次日再試 | 高 |
| R-05 | 密碼冷卻 | 最近改密碼 < 24h | 禁止提現 | 高 |
| R-06 | 凍結後放款 | 放款前凍結金額(複式記帳) | 凍結成功才進簽名;失敗整筆回退 | 最高 |
| R-07 | 熱錢包不足 | 熱錢包餘額 < 本次 | 觸發冷錢包補充(3/5),轉 pending 不失敗 | 高 |
| R-08 | AML 來源評分 | 命中高風險(混幣器/制裁) | 凍結 + 人工複查,不放行 | 最高 |
11.2 Acceptance Criteria
| AC | Rule | Given / When / Then | Edge Cases | Pri |
|---|---|---|---|---|
| AC-01 | R-03 | Given 用戶 10:00 新增地址 X,現為同日 20:00 When 對地址 X 發起提現 Then ① 拒絕,提示「將於隔日 10:00 解鎖」 ② 記錄冷靜期攔截稽核 |
=24h 邊界(放行);刪除後再加是否重置(Open Q);以 UTC 計 | P0 |
| AC-02 | R-04 | Given Lv1 上限 2 BTC,近 24h 已提 1.9 When 再提 0.2 Then ① 1.9+0.2=2.1 > 2,擋單 ② 提示升 Lv2 或次日 |
=2 BTC(放行);滾動或自然日(Q-01);跨幣種換算 BTC 計價 | P0 |
| AC-03 | R-06 | Given 餘額 5 ETH、提現 3 ETH 已審核 When 放款、凍結 3 ETH Then ① 帳本 available -3、frozen +3(同事務) ② 凍結成功才構建簽名廣播 ③ 確認後 frozen -3 並寫流水(TxHash) |
重複提交(冪等鍵);凍結成功但簽名失敗要回退;廣播成功但確認超時(Q-04);併發搶同餘額 | P0 |
| AC-04 | R-02 | Given 金額 $9,999,規則審核通過 When 3 分鐘內完成規則審核 Then ① 自動進放款 ② 逾 3 分鐘未決 → 轉人工 + 告警 |
=$10,000 應走人工(> 界定);幣價換算 USD 時點;引擎不可用全轉人工 | P0 |
| AC-05 | R-07 | Given 熱錢包 1 BTC、用戶提現 3 BTC When 放款偵測不足 Then ① 轉 pending(不失敗) ② 觸發冷錢包補充(3/5) ③ 到位後自動續放 + 通知 |
多簽長時間未湊齊的 pending 上限與告警;補充期間新提現排隊;部分補充 | P1 |
12User / System Flow
Actor:用戶/風控/財務 Entry:資產頁 → 提現 Related AC:AC-01~05
發起提現
▼
前置檢查(R-01) KYC · 2FA · 餘額 · 白名單 · 密碼冷卻
├─ 任一不過 → 擋單 + 提示原因
▼
地址/限額檢查(R-03/04) 新地址 24h · 累計限額 · AML(R-08)
├─ 命中 → 拒絕 / 凍結人工複查
▼
三級審核(R-02)
├─ <$1k → 自動放行
├─ $1k–$10k → 規則(3min) ─逾時→ 人工
└─ >$10k → 人工佇列(2h · 四眼)
▼
凍結 + 簽名放款(R-06/07)
├─ 熱錢包足 → 簽名廣播
└─ 不足 → 冷錢包補充(3/5多簽) → 續放
▼
鏈上確認 → 更新狀態 + Push + 寫流水(TxHash)
▼
每日對帳(D-08) 鏈上 vs 帳本,差異告警
13Screen / System States(提現表單)
| State | 規格 / 訊息 | 進入條件 |
|---|---|---|
| Empty | 尚無白名單地址 → 引導先新增 | 用戶無已存地址 |
| Loading | 拉取餘額/手續費/限額中,送出鈕 disabled | 開啟提現頁 |
| Normal | 顯示可用餘額、手續費、實際到帳、當日剩餘限額 | 資料就緒 |
| Success | 已提交,顯示狀態追蹤(審核中/廣播中/已完成) | 提交成功 |
| Error | 明確標示被哪條規則擋(新地址/超限/密碼冷卻/AML),附解法 | R-01~08 觸發 |
| Boundary | 逼近當日限額顯示剩餘;低於最小提現額提示 | 接近門檻 |
| Permission Denied | KYC 等級不足 → 引導升級 | KYC 未達 |
| Disabled | 改密碼 24h 內,提現鈕禁用並說明解鎖時間 | R-05 |
關鍵
被擋時必須明確告知「踩了哪條線 + 何時/如何解除」,不可只顯示「提現失敗」——這是提現爭議率的頭號來源。
14Data & Integration
- 複式記帳:每筆提現 = available→frozen→debit 三段,均在 DB 事務內(
SELECT FOR UPDATE),杜絕超發。 - 冪等:提現請求需冪等鍵,重複提交只執行一次(見 AC-03)。
- Source of Truth:帳本為餘額真相;account_balance 為可重建的快取。
- 精度/捨入:各幣種精度與捨入方向需統一定義(Q-03)。
- 對帳:每日鏈上餘額 vs 帳本,差異即時告警(D-08)。
15Non-functional Requirements
| 類別 | 需求 |
|---|---|
| 一致性 | 資金操作絕對一致、不可超發、冪等;凍結與扣款不可漏 |
| 時效 | 中額審核 P95 <3min;大額 2h SLA ≥95% |
| Security | 符合 §10 全部;提現簽名服務與冷錢包分離部署 |
| Audit | 全鏈路可追溯、log 不可竄改 |
| 可用性 | 提現服務 ≥99.9%;節點異常可降級(暫停廣播不丟單) |
16Analytics & Observability
- 告警:對帳差異、大額出金、熱錢包低水位、AML 命中、審核 SLA 逾時、pending 堆積。
- 監控:異常提現樣態(新設備+新地址+大額、改密碼後行為)、單帳號高頻提現。
- Runbook:對帳差異 → 凍結相關提現並人工核;熱錢包不足 → 補充 SOP;節點異常 → 暫停廣播。
17Risk & Mitigation
| 風險 | 手法 | 對策 | 等級 |
|---|---|---|---|
| 盜號提領 | 盜 session 後提空 | 新地址 24h + 大額人工 + 改密碼冷卻 + 提現前 Email 確認 | P0 |
| 內部舞弊 | 員工單方挪用 | 四眼 + 冷錢包 3/5 多簽 + 不可竄改稽核 | P0 |
| 洗錢 | 提領至混幣器/制裁地址 | AML 評分 + 高風險凍結人工 + SAR | P0 |
| 超發/併發 | 併發提現搶同餘額 | 複式記帳 + 行鎖 + 冪等鍵 | P0 |
| 限額繞過 | 拆單多筆規避 24h 限額 | 滾動視窗累計(待 Q-01) | P1 |
| 熱錢包枯竭 | 大額集中提現 | 低水位告警 + 冷錢包補充 + pending 不丟單 | P1 |
18Rollout / Migration / Rollback
- Rollout:先開小額自動放行 + 白名單,觀察對帳零差異後再開中大額;灰度邀請制。
- Rollback:對帳差異或異常提現暴增 → 一鍵切「全部轉人工」(feature flag),不停用戶提交、只暫停自動放行。
- Feature flag:自動放行 / AML / 冷錢包自動補充 各自獨立可控。
19MVP / Complexity
複雜度
只標低/中/高,不做人天估算。
| 子模組 | 產品邏輯 | 整合 | 風險 | 綜合 |
|---|---|---|---|---|
| 前置檢查 + 三級審核 | 中 | 中 | 高 | 中高 |
| 凍結/放款/帳本一致性 | 中 | 高 | 高 | 高 |
| 冷熱錢包 + 多簽補充 | 中 | 高 | 高 | 高 |
| AML + 風控評分 | 中 | 高 | 高 | 高 |
| 提現表單前端 | 低 | 中 | 中 | 中 |
20UAT & Release Readiness
- ☐ 每條 AC 的 Given 含具體數值、QA 可建前置
- ☐ 邊界值覆蓋(=24h、=限額、=$10,000 界定)
- ☐ 冪等/併發:重複提交、搶餘額以測試驗證
- ☐ 凍結成功但簽名失敗的回退路徑驗證
- ☐ 熱錢包不足 → 冷錢包補充 → 續放全鏈路
- ☐ 四眼覆核:提交者無法自審
- ☐ 每日對帳零差異、告警可觸發
- ☐ 被擋提現的錯誤訊息明確可解
給 Sean 的 skill 驗證重點
① 原文規則被拆成 R-xx + AC + Edge Case 後有沒有逼出原文沒寫的洞(=$10,000 走哪級、拆單繞限額、凍結成功簽名失敗要回退)。② 企業版把 DB schema、Go/Rust 選型、K8s 排除在 PRD 外(角色邊界)——你的 PRD 該不該含技術選型?③ §10 後台安全有沒有你實務上會再加的控制。