跳转至

充值、提现与链上钱包体系

相关主题

概念地图:钱包与托管 · 交易所资金; 易混点:托管 ≠ MPC。

30 秒版(开场)

CEX 充提 = canonical 链上索引 + 内部账务入账 + 提现审批/签名/广播状态机。 架构师要讲清链的最终性模型、memo/tag、reorg 冲正、nonce/UTXO 预留和 “广播结果未知”状态。与 S-BC-05 索引器 同源,但增加托管、风控与审计边界。

3 分钟版(精讲深度)

  1. 是什么:用户链上转入平台地址 → 平台记账;提现反向:扣账 → 签名 tx → 广播。
  2. 为什么:资金入口/出口是盗币与合规重点。
  3. 怎么做:每链独立索引;deposit_id 幂等;提现多状态 + 2FA/白名单。

10 分钟版(状态机 + 架构)

stateDiagram-v2
  [*] --> Detected: 链上转账
  Detected --> Confirming: 未达 N 确认
  Confirming --> Credited: 入账
  Confirming --> Reverted: reorg 回滚
  Credited --> Reversing: 深度 reorg / 链异常
  Reversing --> Reverted: 追加冲正分录
  Credited --> [*]

提现状态机

状态 说明
Pending 用户申请
RiskReview 风控/大额人工
Signing 热钱包排队签名
BroadcastUnknown RPC 超时,尚不能确定节点是否已接收
Broadcasted 已获得 tx hash,等待打包/最终性
Confirmed 链上成功
OnchainFailed receipt 明确失败或交易按策略判定不可恢复
Refunded 在确认没有有效出金交易后,追加解冻/退款分录

钱包架构

类型 用途
用户充值地址 HD 派生或 memo(EOS/XRP)
热钱包 日常提现,低余额
温/冷钱包 大额存储,离线签名
Gas 钱包 专门补 ETH 作 Gas

多链注意

  • ERC-20:只处理资产 allowlist 中合约的 canonical Transfer,同时校验 receipt、 log identity、token decimals/行为与 reorg(S-BC-04)
  • 原生币:仅扫描顶层 tx.value 会漏掉合约内部转账;应按链能力使用 traces、 专用充值合约事件或受控地址余额/流水对账
  • 误链/误资产/转入合约:能否找回取决于地址控制权、token/链能力与平台政策; 不应一概承诺“可找回”或“绝对无法找回”
  • L2:不同 finality(S-BC-07)

生产场景

  • 小额快速充值:可先展示 provisional 状态,但入账/可提现阈值应按链的概率或 经济最终性、金额、资产风险和 reorg 历史分层;不存在通用的“主网 12+”
  • 提现拥堵:动态提 Gas fee;队列 + 用户可选快/慢
  • BroadcastUnknown:签名广播后 RPC 超时 → 保留 raw tx 与 intent,多节点核对; 决策表见 S-NODE-05
  • 地址黑名单:KYT 拦截(S-EXCH-05)

深挖问答

  1. memo 币怎么充? → 用户必须填 memo;索引按 (address, memo) 映射 userId。
  2. 热钱包被盗? → MPC/HSM/多签(按链能力)、最小热余额、分层额度、 独立审批与 signer、异常熔断、冷资产隔离;保险不能替代预防控制。
  3. 内部转账 vs 链上? → 站内划转只改账务,无链上 tx。
  4. Go 签名在哪? → 独立 Signer 服务(S-BC-03)。
  5. BroadcastUnknown 能否换 nonce 重提? → 不能直接换;先证明旧 attempt 未生效, 再做同 intent 的 fee bump / replacement,否则可能双花或双扣。

反模式与事故

  • 把未最终确认充值直接变为可提现余额 → 暴露于 reorg、双花或链异常风险
  • 试图用分布式锁把账务与链上广播“做成原子事务” → 外部链无法加入本地事务; 应使用账务 reservation + 持久化状态机 + payload 幂等 + nonce/UTXO reservation, 并显式处理 RPC 超时后的 unknown 状态
  • 链上地址无校验 → 错链充值丢失
  • 超时即退款 → 旧交易稍后上链导致资金损失

延伸阅读