Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

加密貨幣交易所 × BitGo 託管架構完整說明

文件目的:說明交易所使用第三方託管服務(如 BitGo)時的完整運作模式、資金流設計、風控機制與工程實務架構。


先看白話版(3 分鐘懂)

角色比喻

想像你去銀行存錢、領錢:

現實世界加密貨幣世界做什麼
銀行櫃臺交易所(Exchange)記帳、審核、擋詐騙
金庫 + 保全BitGo(託管方)保管鑰匙、開金庫門、把錢送出去
央行公開帳冊區塊鏈(Blockchain)記錄所有交易,公開透明、不可竄改
你的存摺內部帳本(Ledger)你在交易所看到的餘額

為什麼要分開? 就像銀行櫃員不該自己拿金庫鑰匙一樣——權責分離才安全。

入金白話(存錢)

你(用戶)想把 1 BTC 存進交易所:

1. 交易所先跟 BitGo「申請一個專屬收款地址」給你
   → 就像銀行給你一個帳號

2. 你從自己的錢包把 1 BTC 轉到這個地址
   → 就像你用 ATM 轉帳

3. 區塊鏈開始確認這筆交易(等 3~6 次確認)
   → 就像銀行等跨行清算完成

4. BitGo 偵測到入帳,用 webhook 通知交易所
   → 就像對方銀行通知你的銀行「錢到了」

5. 交易所在你的內部帳本 +1 BTC
   → 你的 App 上看到餘額增加了

⚠️ 但交易所不能只看通知就加錢!
   每天還要拿「帳本餘額」vs「鏈上實際餘額」做交叉比對(對帳)
   → 就像銀行每天軋帳

提幣白話(領錢)

你想從交易所提 0.5 BTC 到自己的錢包:

1. 你在 App 上按「提幣」
   ↓
2. 交易所做一連串檢查:
   ├─ 你是誰?(KYC 身份驗證)
   ├─ 這個地址安不安全?(AML 反洗錢)
   ├─ 你帳上有那麼多嗎?(餘額驗證)
   ├─ 今天提太多了嗎?(限額判斷)
   └─ 看起來正常嗎?(風控模型)
   ↓
3. 全部通過 → 丟進「提款排隊區」
   ↓
4. 交易所呼叫 BitGo API:「請幫我轉 0.5 BTC 到這個地址」
   ↓
5. BitGo 內部再做一次審核(Policy Engine):
   ├─ 小額 → 自動放行
   ├─ 大額 → 需要主管審批
   └─ 超大額 → 多人簽名(Multi-sig / MPC)
   ↓
6. 簽名完成 → 廣播到區塊鏈 → 完成

重點:
  「能不能提」→ 交易所說了算
  「怎麼安全地把錢轉出去」→ BitGo 說了算

錢包分層白話(金庫管理)

想像交易所的錢分三個地方放:

┌─────────────────────────────────────────────────┐
│                                                 │
│  🔥 熱錢包(Hot Wallet)── 收銀臺的零錢箱      │
│     放 3~5% 的錢                                │
│     特點:隨時可用、但放少量、被搶損失小        │
│                                                 │
│  🌡️ 溫錢包(Warm Wallet)── 辦公室保險箱       │
│     放 10~15% 的錢                              │
│     特點:需要授權才能開、用來補零錢箱          │
│                                                 │
│  🧊 冷錢包(Cold Custody)── 銀行金庫          │
│     放 80%+ 的錢                                │
│     特點:離線保管、多人簽名才能動、最安全      │
│                                                 │
└─────────────────────────────────────────────────┘

錢的流向:冷 → 溫 → 熱 → 用戶提幣
         (平時大部分錢鎖在金庫,只在需要時才一層一層搬出來)

一句話總結

這套架構的本質是用「權責分離 + 多層防線」換到安全、流動性與合規的平衡。


一、整體系統架構

全景圖

┌──────────────────────────────────────────────────────────────────────┐
│                          用戶層(User Layer)                        │
│                                                                      │
│   📱 Mobile App          💻 Web App          🤖 API Client          │
│       │                      │                    │                  │
│       └──────────────────────┴────────────────────┘                  │
│                              │                                       │
│                         HTTPS / WSS                                  │
│                              │                                       │
├──────────────────────────────┼───────────────────────────────────────┤
│                     交易所後端(Exchange Backend)                    │
│                              │                                       │
│  ┌───────────────┐  ┌───────────────┐  ┌───────────────┐            │
│  │  API Gateway  │  │  Auth Service │  │  Rate Limiter │            │
│  └───────┬───────┘  └───────────────┘  └───────────────┘            │
│          │                                                           │
│  ┌───────┴──────────────────────────────────────────────┐           │
│  │                 核心業務服務                            │           │
│  │                                                       │           │
│  │  ┌─────────────┐  ┌──────────────┐  ┌─────────────┐ │           │
│  │  │ User Account│  │  Risk Engine │  │  Withdraw   │ │           │
│  │  │   Ledger    │  │  風控引擎     │  │   Queue     │ │           │
│  │  │  用戶帳本    │  │              │  │  提款佇列    │ │           │
│  │  └─────────────┘  └──────────────┘  └─────────────┘ │           │
│  │                                                       │           │
│  │  ┌─────────────┐  ┌──────────────┐  ┌─────────────┐ │           │
│  │  │Reconciliation│ │  Liquidity   │  │  Deposit    │ │           │
│  │  │  Service    │  │   Monitor    │  │  Processor  │ │           │
│  │  │  對帳服務    │  │  流動性監控   │  │  入金處理器  │ │           │
│  │  └─────────────┘  └──────────────┘  └─────────────┘ │           │
│  └──────────────────────────┬───────────────────────────┘           │
│                              │                                       │
├──────────────────────────────┼───────────────────────────────────────┤
│                              │  REST API / Webhook                   │
│                              │                                       │
│                     託管層(Custodian Layer - BitGo)                 │
│                              │                                       │
│  ┌───────────────────────────┴──────────────────────────┐           │
│  │                                                       │           │
│  │  ┌────────────┐  ┌─────────────┐  ┌──────────────┐  │           │
│  │  │ Hot Wallet │  │ Warm Wallet │  │ Cold Custody │  │           │
│  │  │  熱錢包     │  │  溫錢包      │  │  冷錢包       │  │           │
│  │  │  3~5%      │  │  10~15%     │  │  80%+        │  │           │
│  │  └────────────┘  └─────────────┘  └──────────────┘  │           │
│  │                                                       │           │
│  │  ┌──────────────────────────────────────────────┐    │           │
│  │  │  Policy Engine(策略引擎)                     │    │           │
│  │  │  ├─ Approval Rules(審批規則)                 │    │           │
│  │  │  ├─ Multi-sig(多重簽名)                      │    │           │
│  │  │  ├─ MPC(多方計算)                            │    │           │
│  │  │  └─ Whitelist(地址白名單)                    │    │           │
│  │  └──────────────────────────────────────────────┘    │           │
│  └──────────────────────────┬───────────────────────────┘           │
│                              │                                       │
├──────────────────────────────┼───────────────────────────────────────┤
│                              │  簽名 & 廣播                          │
│                              │                                       │
│                     區塊鏈層(Blockchain Layer)                      │
│                              │                                       │
│  ┌──────────────────────────────────────────────────────┐           │
│  │  BTC Network  │  ETH Network  │  其他鏈 ...          │           │
│  │  ┌─────┐      │  ┌─────┐      │  ┌─────┐            │           │
│  │  │Node │      │  │Node │      │  │Node │            │           │
│  │  │ ⛓️  │      │  │ ⛓️  │      │  │ ⛓️  │            │           │
│  │  └─────┘      │  └─────┘      │  └─────┘            │           │
│  └──────────────────────────────────────────────────────┘           │
│                                                                      │
└──────────────────────────────────────────────────────────────────────┘

核心責任分工

┌──────────────────────────┐     ┌──────────────────────────┐
│     交易所負責什麼?       │     │     託管方負責什麼?       │
│                          │     │                          │
│  ✅ 用戶帳本管理          │     │  ✅ 私鑰安全保管          │
│  ✅ KYC / AML 合規        │     │  ✅ 交易簽名(sign)      │
│  ✅ 風控模型判斷           │     │  ✅ 交易廣播(broadcast)  │
│  ✅ 提款審核與排隊         │     │  ✅ 多重簽名 / MPC        │
│  ✅ 流動性管理             │     │  ✅ 策略引擎(審批規則)   │
│  ✅ 對帳服務               │     │  ✅ 地址生成與管理         │
│  ✅ 手續費估算             │     │  ✅ 鏈上交易監控           │
│                          │     │                          │
│  一句話:決定「能不能做」  │     │  一句話:決定「怎麼安全做」│
└──────────────────────────┘     └──────────────────────────┘

二、入金流程(Deposit Flow)

完整入金時序圖

  用戶         交易所後端         BitGo(託管方)       區塊鏈
   │               │                  │                  │
   │  1.請求入金地址  │                  │                  │
   │──────────────>│                  │                  │
   │               │  2.createAddress()│                  │
   │               │─────────────────>│                  │
   │               │  3.回傳專屬地址    │                  │
   │               │<─────────────────│                  │
   │  4.顯示地址    │                  │                  │
   │<──────────────│                  │                  │
   │               │                  │                  │
   │  5.用戶轉帳到此地址              │                  │
   │─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ >│
   │               │                  │  6.偵測到入帳     │
   │               │                  │<─────────────────│
   │               │                  │  7.等待 N 次確認  │
   │               │                  │<─────────────────│
   │               │  8.webhook 通知   │                  │
   │               │<─────────────────│                  │
   │               │                  │                  │
   │               │  9.驗證 webhook   │                  │
   │               │  (HMAC 簽名驗證)│                  │
   │               │                  │                  │
   │               │  10.更新帳本 +餘額│                  │
   │               │──(內部)──>       │                  │
   │  11.餘額更新   │                  │                  │
   │<──────────────│                  │                  │
   │               │                  │                  │
   │               │  12.定期對帳(帳本 vs 鏈上)         │
   │               │─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ >│

1. 建立地址

  • 交易所後端呼叫 API 建立地址
  • 每位用戶一個地址,或「地址 + Memo」(依鏈種)
Backend → Custodian API → createAddress()

白話:就像銀行開戶時給你一個帳號。BTC/ETH 每人一個獨立地址;XRP/EOS 等鏈用「共用地址 + Memo 備註」來區分用戶(類似銀行帳號 + 附言)。

2. 用戶轉帳

User → Blockchain → Custodian Wallet
  • 託管方監聽鏈上交易
  • 等待確認數(confirmations)
  • 透過 webhook 通知交易所

白話:用戶把幣從自己的錢包轉過來。BitGo 會一直「盯著」區塊鏈看有沒有新的入帳。BTC 通常等 3~6 個區塊確認(約 30~60 分鐘),ETH 等 12~32 個區塊確認(約 3~7 分鐘)。確認夠多後,BitGo 才通知交易所。

為什麼要等確認? 防止「雙花攻擊」——攻擊者先轉帳給你,等你加了餘額後又把交易撤回。確認次數越多,被撤回的機率越低。

3. 帳本入帳

Webhook → Backend → Credit User Ledger

重要原則:

  • Webhook 不可作為唯一依據
  • 必須定期做鏈上對帳(on-chain reconciliation)

白話:Webhook 就像快遞通知「你的包裹到了」,但你不能光憑通知就確認——萬一通知是假的呢?所以交易所必須自己去鏈上查一遍,就像你去門口看看包裹是不是真的在那裡。

對帳的具體做法

每天凌晨 3:00 自動執行:
  1. 拉出所有用戶帳本餘額加總 → SUM_ledger
  2. 查詢 BitGo 報告的錢包餘額 → SUM_custodian
  3. 直接查鏈上地址餘額    → SUM_onchain

  SUM_ledger == SUM_custodian == SUM_onchain → ✅ 正常
  任何不等 → 🚨 立即告警,人工介入

三、提幣流程(Withdraw Flow)

完整提幣時序圖

  用戶         交易所後端         BitGo(託管方)       區塊鏈
   │               │                  │                  │
   │  1.申請提幣    │                  │                  │
   │──────────────>│                  │                  │
   │               │                  │                  │
   │               │  2.交易所內部審核  │                  │
   │               │  ┌──────────────┐│                  │
   │               │  │ KYC/AML 檢查 ││                  │
   │               │  │ 風控模型評估  ││                  │
   │               │  │ 餘額是否足夠  ││                  │
   │               │  │ 今日限額檢查  ││                  │
   │               │  │ 冷卻期檢查   ││                  │
   │               │  └──────┬───────┘│                  │
   │               │         │        │                  │
   │               │    通過?│        │                  │
   │               │    ├─ 否 → 拒絕,通知用戶           │
   │               │    └─ 是 ↓        │                  │
   │               │                  │                  │
   │               │  3.進入提款佇列   │                  │
   │               │  ┌──────────────┐│                  │
   │               │  │ Withdraw     ││                  │
   │               │  │ Queue        ││                  │
   │               │  │ (可做併單)    ││                  │
   │               │  └──────┬───────┘│                  │
   │               │         │        │                  │
   │               │  4.呼叫 send()   │                  │
   │               │─────────────────>│                  │
   │               │                  │                  │
   │               │         5.BitGo Policy Engine       │
   │               │         ┌────────────────┐          │
   │               │         │ < 0.1 BTC      │          │
   │               │         │  → 自動放行     │          │
   │               │         │                │          │
   │               │         │ 0.1~10 BTC     │          │
   │               │         │  → 主管審批     │          │
   │               │         │                │          │
   │               │         │ > 10 BTC       │          │
   │               │         │  → Multi-sig   │          │
   │               │         │    多人簽名     │          │
   │               │         └───────┬────────┘          │
   │               │                 │                   │
   │               │         6.簽名交易                   │
   │               │                 │                   │
   │               │         7.廣播到區塊鏈               │
   │               │                  │─────────────────>│
   │               │                  │                  │
   │               │  8.回傳 txHash   │                  │
   │               │<─────────────────│                  │
   │  9.通知進度    │                  │                  │
   │<──────────────│                  │                  │
   │               │                  │  10.鏈上確認      │
   │               │  11.webhook 確認 │<─────────────────│
   │               │<─────────────────│                  │
   │  12.提幣完成   │                  │                  │
   │<──────────────│                  │                  │

各階段白話說明

階段誰負責做什麼為什麼
KYC/AML交易所確認身份、檢查洗錢風險法規要求,防止犯罪
風控模型交易所異常行為偵測(如:突然大量提款)防止帳號被盜
餘額驗證交易所帳本上夠不夠不能超支
提款佇列交易所排隊等候處理,可合併多筆節省鏈上手續費
Policy EngineBitGo根據金額大小決定審批流程大額交易需要更高安全級別
簽名 & 廣播BitGo用私鑰簽名、送上鏈沒有私鑰簽名,交易無效

四、錢包分層設計(資金配置模型)

分層架構圖

                     用戶提幣請求
                          │
                          ▼
┌─────────────────────────────────────────────────────┐
│  🔥 熱錢包(Hot Wallet)                              │
│  ┌─────────────────────────────────────────────┐    │
│  │  比例:3~5% 總資產                            │    │
│  │  連線:全天候在線                              │    │
│  │  簽名:自動化(API 可直接觸發)                │    │
│  │  用途:處理即時小額提款                        │    │
│  │  風險:最高(私鑰在線上伺服器)                │    │
│  │                                               │    │
│  │  白話:超商收銀臺的零錢                        │    │
│  └─────────────────────────────────────────────┘    │
│         ▲ 當餘額低於門檻時,自動觸發補倉               │
├─────────┼───────────────────────────────────────────┤
│         │                                            │
│  🌡️ 溫錢包(Warm Wallet)                            │
│  ┌─────────────────────────────────────────────┐    │
│  │  比例:10~15% 總資產                          │    │
│  │  連線:半離線(需授權才啟動)                  │    │
│  │  簽名:需 1~2 位主管審批                      │    │
│  │  用途:定期補充熱錢包、處理中等金額提款         │    │
│  │  風險:中等                                    │    │
│  │                                               │    │
│  │  白話:辦公室保險箱,經理有鑰匙                │    │
│  └─────────────────────────────────────────────┘    │
│         ▲ 需要人工審批或排程補倉                       │
├─────────┼───────────────────────────────────────────┤
│         │                                            │
│  🧊 冷錢包(Cold Custody)                            │
│  ┌─────────────────────────────────────────────┐    │
│  │  比例:80%+ 總資產                            │    │
│  │  連線:完全離線(Air-gapped)                  │    │
│  │  簽名:Multi-sig(2-of-3 或 3-of-5)         │    │
│  │  用途:長期資產存管                            │    │
│  │  風險:最低(私鑰從未接觸網路)                │    │
│  │                                               │    │
│  │  白話:銀行地下金庫,多把鑰匙同時到才能開      │    │
│  └─────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────┘

資金流向:冷 ──→ 溫 ──→ 熱 ──→ 用戶
         (永遠是單向補充,就像水從水庫流向水龍頭)

設計目標

  • 熱錢包保持低暴露:就算被駭,損失只有 3~5%
  • 冷錢包保持高安全:離線 + 多簽,駭客摸不到
  • 兼顧提款流動性:用戶不會因為「錢在冷錢包」就提不出來

五、熱錢包補倉機制

補倉流程圖

┌─────────────────────────────────────────────────┐
│            流動性監控服務(每 5 分鐘檢查)          │
│                                                   │
│   hot_balance < low_threshold?                    │
│        │                                          │
│     是 │         否                                │
│        ▼          └→ 不動作                        │
│   ┌─────────────────────┐                         │
│   │ 計算補充金額          │                         │
│   │ amount = target      │                         │
│   │        - hot_balance │                         │
│   └──────────┬──────────┘                         │
│              │                                     │
│              ▼                                     │
│   ┌─────────────────────┐                         │
│   │ 從溫錢包轉到熱錢包    │   ← 小額補倉,自動化     │
│   │ 或                    │                         │
│   │ 從冷錢包轉到溫錢包    │   ← 大額補倉,需人工審批  │
│   └──────────┬──────────┘                         │
│              │                                     │
│              ▼                                     │
│   ┌─────────────────────┐                         │
│   │ 等待鏈上確認          │   ← 數十分鐘 ~ 數小時    │
│   └──────────┬──────────┘                         │
│              │                                     │
│              ▼                                     │
│   hot_balance 回到安全水位  ✅                      │
└─────────────────────────────────────────────────┘
# 虛擬碼
LOW_THRESHOLD  = total_assets * 0.02   # 低於 2% 觸發補倉
TARGET_BALANCE = total_assets * 0.04   # 補到 4%

if hot_balance < LOW_THRESHOLD:
    amount = TARGET_BALANCE - hot_balance
    if amount <= warm_wallet_limit:
        transfer_from_warm(amount)       # 自動化
    else:
        request_cold_to_warm(amount)     # 需人工審批
        alert_ops_team()                 # 通知運維團隊

實務考量

  • 多重簽章或人工審批:冷錢包動用一定要多人簽名,不能一個人搞定
  • 補倉延遲:鏈上轉帳需要時間(BTC 可能要 1 小時),所以要提前預測
  • 提款尖峰預測:市場大跌時提款量會暴增,需要提前準備

關鍵能力:流動性預測模型——根據歷史數據、市場波動、時間段來預測「接下來幾小時會有多少提款」


六、手續費與提款優化

1. Batch Withdraw(提款併單)

 普通模式(每筆獨立上鏈):         併單模式:

 用戶A 提 0.1 BTC → TX1 (手續費)   ┌─ 用戶A 提 0.1 BTC ─┐
 用戶B 提 0.2 BTC → TX2 (手續費)   │  用戶B 提 0.2 BTC   │→ TX1 (一次手續費)
 用戶C 提 0.5 BTC → TX3 (手續費)   │  用戶C 提 0.5 BTC   │
                                   └────────────────────┘
 總手續費:3 筆                     總手續費:1 筆(節省 66%)

白話:就像快遞公司不會每收一個包裹就派一臺車,而是等湊夠一車再出發。BTC 原生支援一筆交易帶多個輸出(output),可以大幅降低 Gas 費用。

2. 動態手續費模型

┌────────────────────────────────────────┐
│         Mempool 擁塞程度監控             │
│                                        │
│  低擁塞(< 5 sat/vB)                  │
│  → 低手續費,慢慢確認就好(1~2 小時)    │
│                                        │
│  中擁塞(5~30 sat/vB)                  │
│  → 中等手續費,30 分鐘確認               │
│                                        │
│  高擁塞(> 30 sat/vB)                  │
│  → 高手續費,但仍有上限                  │
│  → 超過上限 → 暫時延遲提款              │
│                                        │
│  白話:就像計程車跳錶,塞車時費率較高,   │
│       但交易所不會無上限買單              │
└────────────────────────────────────────┘

3. 提款限速與冷卻

觸發條件                    → 效果
─────────────────────────────────────────
變更密碼                    → 暫停提款 24 小時
綁定新 2FA 設備             → 暫停提款 24 小時
變更提款白名單地址           → 暫停提款 48 小時
新增 API Key(含提款權限)   → 暫停提款 72 小時

白話:如果有人偷了你的帳號、改了密碼,他還是不能馬上把錢提走——因為改密碼後 24 小時內不能提款。這段時間足夠你發現異常、聯繫客服凍結帳號。


七、風控與合規設計

風控全景圖

┌────────────────────────────────────────────────────────────┐
│                      風控引擎(Risk Engine)                  │
│                                                              │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐      │
│  │ 事前防禦      │  │ 事中攔截      │  │ 事後追蹤      │      │
│  │              │  │              │  │              │      │
│  │ • KYC 身份驗證│  │ • 即時風控規則│  │ • 鏈上追蹤    │      │
│  │ • 地址白名單  │  │ • 異常偵測    │  │ • 事件調查    │      │
│  │ • 設備指紋    │  │ • 人工審查    │  │ • SAR 報告    │      │
│  │ • IP 風險評估 │  │ • 冷卻期機制  │  │ • 帳號凍結    │      │
│  └──────────────┘  └──────────────┘  └──────────────┘      │
│                                                              │
│  ┌────────────────────────────────────────────────────┐     │
│  │              地址風險評分系統                         │     │
│  │                                                    │     │
│  │  輸入地址 → 查詢 Chainalysis / Elliptic 等服務       │     │
│  │          → 回傳風險分數 0~100                       │     │
│  │                                                    │     │
│  │  0~30(低風險)  → 正常放行                         │     │
│  │  31~70(中風險) → 增加驗證、延遲處理                │     │
│  │  71~100(高風險)→ 暫停提款、人工審查                │     │
│  │  黑名單命中      → 直接拒絕、上報主管機關             │     │
│  └────────────────────────────────────────────────────┘     │
└────────────────────────────────────────────────────────────┘

提款限制機制

用戶等級每日提款上限單筆上限審核方式
未驗證0(不可提款)--
基本驗證(L1)2 BTC1 BTC自動
進階驗證(L2)10 BTC5 BTC自動 + 大額人工
機構帳戶(L3)100 BTC50 BTC專屬客戶經理

八、私鑰控制模式

模式 A:全託管

┌──────────────────────────────────────────┐
│              全託管模式                     │
│                                          │
│  交易所 ──API──→ BitGo                   │
│  (只能呼叫)      (持有全部私鑰)         │
│                                          │
│  交易所:「請幫我轉 1 BTC 到 xxx」        │
│  BitGo:「好,我簽名後送出」              │
│                                          │
│  優點:                                   │
│  ├─ 合規容易(託管方有牌照、有保險)       │
│  ├─ 交易所不碰私鑰,內鬼偷不走            │
│  └─ 出事有保險賠                          │
│                                          │
│  缺點:                                   │
│  ├─ 託管費用高(按資產規模 %)             │
│  ├─ 完全依賴第三方(BitGo 掛了你也動不了) │
│  └─ 彈性較低                              │
└──────────────────────────────────────────┘

模式 B:2-of-3 Multi‑sig

┌──────────────────────────────────────────┐
│           2-of-3 多重簽名模式              │
│                                          │
│   🔑 Key A                               │
│   持有者:BitGo(託管方)                  │
│   存放:BitGo 安全環境                    │
│                                          │
│   🔑 Key B                               │
│   持有者:交易所                           │
│   存放:交易所的 HSM(硬體安全模組)        │
│                                          │
│   🔑 Key C                               │
│   持有者:備援機構(律師事務所 / 第三方)   │
│   存放:離線安全處                         │
│                                          │
│   規則:任意 2 把鑰匙就能簽名              │
│                                          │
│   正常運作:Key A + Key B 簽名             │
│   BitGo 掛了:Key B + Key C 還能動        │
│   交易所被駭:只有 Key B,偷不走錢         │
│                                          │
│   白話:三個人各拿一把鑰匙,               │
│         要兩個人同時到場才能開保險箱         │
└──────────────────────────────────────────┘

模式 C:MPC(多方計算)— 進階

┌──────────────────────────────────────────┐
│           MPC 模式(Multi-Party Computation)│
│                                          │
│   🧩 碎片 A → BitGo                      │
│   🧩 碎片 B → 交易所                      │
│   🧩 碎片 C → 備援                        │
│                                          │
│   差異:完整的私鑰「從未存在過」            │
│   簽名時各方用自己的碎片做計算,             │
│   合成出有效簽名,但沒人看過完整私鑰        │
│                                          │
│   優點:                                   │
│   ├─ 比 Multi-sig 更安全(無私鑰重組風險)  │
│   ├─ 鏈上看起來像普通交易(省 gas)         │
│   └─ 支援任何區塊鏈(不需鏈原生支援多簽)   │
└──────────────────────────────────────────┘

九、Reconciliation(對帳——關鍵控制點)

三方對帳架構

┌───────────────┐   ┌───────────────┐   ┌───────────────┐
│  交易所帳本    │   │  BitGo 報告    │   │  鏈上餘額      │
│  (Ledger)     │   │  (Custodian)  │   │  (On-chain)   │
│               │   │               │   │               │
│  Σ 用戶餘額   │   │  錢包總餘額    │   │  地址實際餘額   │
│  = 1000 BTC   │   │  = 1000 BTC   │   │  = 1000 BTC   │
└───────┬───────┘   └───────┬───────┘   └───────┬───────┘
        │                   │                    │
        └───────────────────┼────────────────────┘
                            │
                    三者必須相等!
                            │
                   ┌────────┴────────┐
                   │                 │
                相等 ✅            不等 🚨
                   │                 │
              一切正常          ┌─────┴──────┐
                               │            │
                          差額 < 容忍值   差額 > 容忍值
                          (粉塵/手續費)        │
                               │          立即告警
                          記錄備查       人工介入調查

對帳頻率建議

對帳類型頻率比對內容
即時對帳每筆交易單筆入金/提幣金額正確性
定時對帳每小時熱錢包餘額 vs 帳本
全量對帳每日凌晨所有錢包 vs 所有用戶帳本加總 vs 鏈上
深度審計每月含手續費、粉塵、未確認交易的完整核對

若忽略對帳:可能發生的災難——

  • 交易所超額放款(帳本顯示的錢比實際多)→ 擠兌時付不出來
  • 入金漏記 → 用戶投訴
  • 提幣重複執行 → 直接虧錢
  • 內部人員私自轉帳 → 無法及時發現

十、主要風險與對策

┌──────────────────┬───────────────────────┬──────────────────────────┐
│      風險         │       解法             │       白話解釋            │
├──────────────────┼───────────────────────┼──────────────────────────┤
│ 私鑰被盜         │ Multi-sig / MPC       │ 一把鑰匙被偷沒用,        │
│                  │                       │ 要偷到多把才能開鎖        │
├──────────────────┼───────────────────────┼──────────────────────────┤
│ 內部人員盜領      │ Policy Approval       │ 自己人想偷也要過多人審批, │
│                  │ + 職責分離             │ 做不到一個人搞定          │
├──────────────────┼───────────────────────┼──────────────────────────┤
│ 熱錢包被耗盡      │ 提款限速              │ 就算被攻擊也只損失 3~5%, │
│                  │ + 低比例配置           │ 大部分錢在冷錢包安全的     │
├──────────────────┼───────────────────────┼──────────────────────────┤
│ Webhook 偽造     │ HMAC 簽名驗證          │ 每個通知附帶密碼簽名,     │
│                  │                       │ 偽造通知簽名對不上        │
├──────────────────┼───────────────────────┼──────────────────────────┤
│ 手續費暴漲       │ 動態 Fee 模型          │ 塞車時等一下再出發,       │
│                  │ + 設定上限             │ 不跟別人搶計程車          │
├──────────────────┼───────────────────────┼──────────────────────────┤
│ 託管方服務中斷    │ 2-of-3 多簽            │ BitGo 掛了,用備援鑰匙    │
│                  │ + 災備方案             │ 還是能把錢轉走            │
├──────────────────┼───────────────────────┼──────────────────────────┤
│ 區塊鏈重組       │ 高確認數               │ 等足夠多的確認,          │
│ (Chain Reorg)    │ + 重組偵測告警          │ 就算鏈重組也不受影響      │
└──────────────────┴───────────────────────┴──────────────────────────┘

十一、大型交易所進階優化

┌──────────────────────────────────────────────────────────┐
│                  大型交易所進階架構                         │
│                                                          │
│  1. 分鏈獨立 Wallet Cluster                              │
│     ┌─────┐  ┌─────┐  ┌─────┐  ┌─────┐                │
│     │ BTC │  │ ETH │  │ SOL │  │ ... │                │
│     │Cluster│ │Cluster│ │Cluster│ │     │                │
│     └─────┘  └─────┘  └─────┘  └─────┘                │
│     白話:每條鏈有自己的錢包叢集,互不影響                 │
│                                                          │
│  2. 熱錢包分片(Sharding)                                │
│     ┌────┐ ┌────┐ ┌────┐ ┌────┐                        │
│     │Hot1│ │Hot2│ │Hot3│ │Hot4│                        │
│     └────┘ └────┘ └────┘ └────┘                        │
│     白話:熱錢包拆成多個小錢包,一個被攻擊不影響其他       │
│                                                          │
│  3. 多區域 RPC 節點                                      │
│     US-East ←→ EU-West ←→ AP-Southeast                  │
│     白話:全球部署節點,哪裡近用哪裡,速度快又有備援       │
│                                                          │
│  4. 自建 Mempool 監控                                    │
│     白話:自己監控待確認交易池,即時掌握手續費行情和       │
│          可疑交易動態                                     │
│                                                          │
│  5. 行為風險 AI 模型                                     │
│     白話:用 AI 學習用戶正常行為模式,                     │
│          自動偵測異常(如:半夜大額提款、新設備登入)       │
│                                                          │
│  6. 即時流動性壓力測試                                    │
│     白話:模擬「如果現在所有人同時提款」的情境,            │
│          確保隨時有足夠流動性                              │
└──────────────────────────────────────────────────────────┘

十二、核心總結

一張圖看懂全架構

        用戶
         │
    ┌────┴────┐
    │ 入金 │ 提幣 │
    └────┬────┘
         │
  ┌──────┴──────┐
  │   交易所      │  ← 帳本 + 風控 + 對帳 + 流動性管理
  │  「決策者」    │
  └──────┬──────┘
         │ API
  ┌──────┴──────┐
  │   BitGo      │  ← 私鑰 + 簽名 + 策略 + 錢包管理
  │  「執行者」    │
  └──────┬──────┘
         │
  ┌──────┴──────┐
  │   區塊鏈      │  ← 不可竄改的公開帳本
  │  「見證者」    │
  └─────────────┘

交易所負責:帳本、風控、資金調度、合規流程 託管方負責:私鑰安全、簽名機制、鏈上交易執行

真正的技術難點

真正的技術難點不在於呼叫 API,而在於:

難點為什麼難
流動性預測要精準預測提款尖峰,提前補倉,不然用戶提不出來
風險控管要在「不打擾正常用戶」和「攔截可疑交易」之間找平衡
系統對帳三方資料要即時一致,差一分錢都要查清楚
災難復原BitGo 掛了怎麼辦?鏈分叉怎麼辦?要有 Plan B

這些能力,才是交易所長期穩定運作的關鍵。