不做大哥好多年 不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • Langchain
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核

逍遥子

不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • Langchain
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核
  • Python

  • GO

  • Java

  • 业务问题

    • 01.微博消息推送Feed流设计
    • 02.秒杀系统架构 ✅
    • 03.支持10万QPS的会员系统 ✅
    • 04.支付系统的设计 ✅
    • 05.即时通讯系统设计
    • 06.外卖系统设计
    • 07.打车系统设计
    • 09.内容分发网络CDN设计
    • 13.日志系统的设计
    • 14.百亿规模浏览记录
    • 15.十亿数据批量写入mysql
    • 16.区块链交易所
      • 01.区块链交易所
        • 1、交易所中私钥的角色
        • 2、私钥安全的核心设计体系
        • 1)冷热钱包隔离策略
        • 2)私钥存储与签名方式
        • 3)签名过程防护
        • 3、大额交易安全控制机制
        • 4、交易所角度的实战面试讲解框架
        • 5、常见面试官提问
        • 6、整体架构图
      • 02.充值 和 提币(提现)
        • 1、如何“存钱”(链上充值流程)
        • 1)用户充值地址生成
        • 2)链上交易广播
        • 3)交易所节点监听链上
        • 4)资产入账
        • 5)安全与风控点:
      • 2、如何“花钱”(链上提币流程)
        • 1)用户申请提币
        • 2)风险控制/合规校验
        • 3)审批流程(大额)
        • 4)提币任务打包签名
        • 5)广播交易到链上
        • 6)交易上链与确认
        • 3、安全与风控点
  • 关键技术

  • 项目常识

  • 计算机基础

  • 区块链

  • 常识
  • 业务问题
xiaonaiqiang
2025-05-28
目录

16.区块链交易所

# 01.区块链交易所

# 1、交易所中私钥的角色

  • 私钥用于控制哪些资产?

    • 用户充值的资产(由交易所生成地址管理)

    • 冷/热钱包资产(用于收发币、提币)

    • DApp、DeFi 跨链调用(部分场景)

  • 面临的核心威胁:

    • 私钥泄露导致资金被盗(最致命)

    • 非授权人员操作(内鬼风险)

    • 软件漏洞/中间人攻击泄漏私钥

    • 高额交易误操作或风控失效

# 2、私钥安全的核心设计体系

# 1)冷热钱包隔离策略

热钱包 冷钱包
小额、高频使用(如用户提现) 大额储备,不联互联网
私钥存在 HSM 或 MPC 节点 私钥存储于离线 HSM
自动提现、限额控制 手动审批、多签控制

面试可讲解点:

  • 热钱包设置每日提币限额、单笔限额
  • 定期将热钱包资产归集到冷钱包

# 2)私钥存储与签名方式

  • HSM(硬件安全模块)

    • 私钥存储在专用硬件中,不能被导出

    • 备防物理篡改、防侧信道攻击能力

    • 常用产品:Thales、AWS CloudHSM、YubiHSM

  • MPC(多方计算)

    • 私钥从未以完整形式出现,而是拆分为若干份,分布在多个节点

    • 签名操作由多个节点共同完成,无需重组私钥

    • 避免“单点私钥”,签名需多个节点共同参与

  • 冷钱包操作

    • 使用隔离环境+UKey(HSM)+物理隔离设备(如离线笔记本)

    • 生成交易 rawTx 后转至冷设备签名,再回传广播

# 3)签名过程防护

  • 不落盘:私钥永不写入磁盘,只在 HSM 内存中短暂存在
  • 签名服务隔离:独立微服务,内部网络访问,禁公网
  • 最小权限原则(RBAC):签名操作需角色权限授权

# 3、大额交易安全控制机制

  • 多签钱包(Multisig)

    • 冷钱包常用配置:3/5、4/7

    • 一人无法动资产,规避内部风险

  • 多级审批流程(提现/转账流程)

    • 用户发起 → 热钱包系统处理(限额内)
    • 超额交易 → 触发审批流
      • 风控系统校验
      • 人工审批(风控人员 + 安全负责人 + 财务)
      • 最终触发冷钱包签名
  • 审计追踪

    • 全链上交易/操作日志存储到 SIEM

    • 异常报警、操作链路可回溯

# 4、交易所角度的实战面试讲解框架

  • 项目背景:

我参与了某交易所的钱包系统安全设计,重点解决私钥保护和大额交易风控问题,避免出现历史上类似 Mt.Gox、币安热钱包攻击的事件。

  • 我的职责:

主要负责私钥存储、签名流程隔离、安全审批流设计,并参与部署 MPC 架构用于私钥分布式签名。

  • 核心工作:

    • 设计冷热钱包分层结构与提币风控规则;

    • 使用 HSM 保护私钥,搭建私钥签名服务(Go 实现,gRPC 接口);

    • 接入多签方案、自动与人工审批结合的大额审批流;

    • 构建审计日志系统,接入 Kafka + ClickHouse 实现操作回溯与异常告警。

  • 技术选型:

    • HSM:Thales

    • MPC:Fireblocks SDK + 自研节点管理

    • 审批流:基于内部 OA 系统(流程引擎 + Webhooks)

    • 日志分析:ELK + ClickHouse + 自研风控规则引擎

  • 安全成果:

    • 实现 0 私钥落盘,全生命周期私钥不可见

    • 支持秒级热钱包自动签名,冷钱包大额资金安全隔离

    • 所有异常操作自动封锁并报警,已拦截多次风险操作

# 5、常见面试官提问

问题 应对思路
私钥为什么不能落盘? 防止磁盘快照/rootkit 恶意读取,HSM/MPC 保证密钥生命周期封闭
冷钱包如何操作交易? 离线签名 → U 盘/二维码传输 rawTx → 上链广播
多签与 MPC 有何区别? 多签是链上结构,MPC 是链下签名流程,本质不同但可组合使用
如何防范“内部人员盗币”? 多签+审批流+访问权限控制+审计链路,全方位限制权限与责任分离
热钱包被黑了怎么办? 提现限额控制 + 自动报警 + 资金归集冷钱包避免大额损失

# 6、整体架构图

  • 设计目标

    • 高可用:系统容灾、无单点、故障自动恢复

    • 高安全:私钥安全、交易防篡改、资产无丢失

    • 一致性保障:账务准确、交易去重、状态一致

    • 可扩展性:支持多链、多币种、热插拔扩展

用户层(APP/SDK) → API 网关 → 钱包服务集群 → 链节点服务
   安全模块(签名、私钥、MPC/HSM)
   账务系统(入账、出账、对账)
   通知模块(消息/事件推送)
   存储(DB + 冷热钱包系统)
   审计与监控(日志、报警、追踪)
1
2
3
4
5
6

关键模块设计

  • 账户与资产管理模块

    • 支持多币种(BTC/ETH/ERC20/TRC20...)

    • 用户 → 地址映射,支持 HD 钱包(助记词 + 派生路径)

    • 用户余额为逻辑余额,链上资产为真实余额

  • 冷热钱包系统

    • 热钱包:用于小额即时交易,部署在线上服务内(私钥加密管理)

    • 冷钱包:大额资产存储,离线隔离(使用 HSM 或手工签名)

    • 支持自动化资金归集(hot 余额达到阈值 → 自动回归冷钱包)

  • 私钥管理与签名服务

    • 强烈建议使用:

      • HSM(硬件安全模块)
      • MPC(多方安全计算)签名
      • 或 KMS(云服务私钥托管)
    • 所有签名请求通过权限控制与审计记录

  • 交易处理模块

    • 转账请求 → 风控校验 → 事务落库 → 异步上链

    • 支持交易状态机(待签名、已签名、广播中、已确认、失败重试)

    • 支持交易重放防护、交易 ID 去重机制

  • 账务系统(核心)

    • 所有链上变化必须同步到账务系统

    • 钱包余额 = 初始余额 + 充值 - 提现

    • 支持资产快照、日终对账、跨链同步、定期清算

  • 对账系统

    • 链上数据拉取服务(监听区块、解析转账事件)

    • 每日或每小时进行对账,确保账务和链上一致

    • 自动发现漏账、重复记账、冲突交易

# 02.充值 和 提币(提现)

flowchart TD
  A[用户充值] --> B[充值地址]
  B --> C[链上交易广播]
  C --> D[链上监听服务]
  D --> E[入账到账户]

  F[用户提币申请] --> G[风控系统校验]
  G -->|通过| H[多级审批流程]
  H --> I[签名服务(HSM/MPC)]
  I --> J[交易广播]
  J --> K[链上确认 & 用户到账]
1
2
3
4
5
6
7
8
9
10
11

# 1、如何“存钱”(链上充值流程)

用户从自己的钱包(如 MetaMask、Ledger、Trust Wallet)向交易所充值 USDT/BTC/ETH 等资产

# 1)用户充值地址生成

  • 每个用户在交易所内绑定一个唯一的链上充值地址。
  • 生成方式:
    • 地址池预生成(由系统统一创建成批地址,并分配给用户)
    • 使用助记词派生路径(如 BIP44)按用户 ID 派生地址
  • 地址对应的私钥保存在冷钱包或 MPC/HSM 控制系统中,不可导出。

# 2)链上交易广播

  • 用户从外部钱包向该地址发起转账。
  • 交易广播至链上 → 节点监听 → 区块确认

# 3)交易所节点监听链上

  • 内部服务(通常叫 链上监听服务 或 充值监听服务)监控目标链(如以太坊节点)。
  • 检测到该地址收到转账,并确认 >= N 个区块(如 BTC 要 6 确认)。

# 4)资产入账

  • 将交易 hash、金额、币种等信息写入数据库。
  • 用户在交易所账户中看到余额增加。

# 5)安全与风控点:

  • 所有充值地址为只收不花(不主动转出)。
  • 与充值地址关联的私钥长期封存或受 MPC 管控,不对外签名。
  • 可设置 最小充值金额、黑名单地址过滤 等规则。

# 2、如何“花钱”(链上提币流程)

用户从交易所账户申请提现,将资产转出到自己的链上钱包。

# 1)用户申请提币

  • 用户在 UI 上填写收款地址、金额、币种,发起提币申请。
  • 提交时触发 验证码、短信、GA 二次认证。
  • 写入后台数据库(状态为 pending)

# 2)风险控制/合规校验

  • 提币请求进入风控引擎校验:
    • 金额是否超限(单笔/日总额)
    • 地址是否属于黑名单(链上可疑地址库)
    • 用户账户是否异常(登录地变化、KYC 失效)
  • 若触发风控,阻止提币或进入人工审批

# 3)审批流程(大额)

  • 若金额大于设定阈值(如 USDT > $50,000):
  • 自动提交审批流(风控+财务+安全多级审批)
  • 审批通过后写入提币任务队列

# 4)提币任务打包签名

  • 系统将多个提币任务打包为链上交易(rawTx):
    • ETH/ERC20:构造 transfer/to/value 调用数据
    • BTC:输入输出脚本处理
  • 签名方式:
    • 热钱包:使用 MPC/HSM 签名(私钥不可见)
    • 冷钱包:rawTx 导出至冷设备手工签名再导入广播

# 5)广播交易到链上

  • 签名后的交易通过交易所自建或第三方节点(如 Infura、Alchemy)广播至链上。

# 6)交易上链与确认

  • 成功提交后进入区块链,链上确认达到设定数量(ETH 1-2 确认、BTC 6 确认)
  • 监听服务同步状态,更新数据库,用户查看交易状态。

# 3、安全与风控点

安全点 描述
冷热钱包分层 提币资产来自热钱包,冷钱包仅在超大额调拨时使用,离线签名
签名隔离 提币签名服务为隔离微服务,不开放公网访问
私钥保护 私钥存在 HSM/MPC,签名时不出硬件/内存
额度控制 热钱包每日/单笔最大限额,超过额度转人工审批
自动归集 热钱包余额不足时从冷钱包调拨,冷钱包调拨需审批+人工操作
行为审计 所有提币操作记录操作人、审批链、签名人,记录写入审计系统
15.十亿数据批量写入mysql
01.接口幂等

← 15.十亿数据批量写入mysql 01.接口幂等→

最近更新
01
06.Mage平台
05-30
02
01.常识梳理
05-28
03
04.数组双指针排序_子数组
03-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 逍遥子 技术博客 京ICP备2021005373号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式