一笔 BTC/USDT 买单成交后,订单簿、用户余额和链上钱包分别发生了什么?如果买的是永续合约,为什么价格还没跌到本金亏完,仓位就可能被强平?
这两个问题串起了交易所业务的主线:撮合确定交易结果,清算把结果变成账务,风控约束承诺的规模,托管负责资产的实际控制。 只理解下单接口和高并发,容易遗漏这些环节之间的约束。
本文聚焦中心化数字资产交易所(CEX),用现货交易贯穿订单、资金与账务,再解释合约带来的保证金、资金费率和强平机制。金额、费率与阈值除明确引用外均为说明性假设,不代表某家平台的实时配置;下篇继续讨论如何用系统设计维护这些业务约束。
一、先分清交易、账户与托管
CEX 通常集中提供订单撮合、账户记账、资产托管及客户服务。它可能同时承担传统市场中由交易场所、经纪商、清算机构和托管机构分别承担的部分职责,但具体法律实体与职责划分仍取决于业务和地区。
因此,用户看到的“余额”与交易所控制的链上资产不是同一层数据:
| 层次 | 记录或处理的对象 | 一个例子 |
|---|---|---|
| 交易 | 订单、报价和成交 | 买方与卖方成交 0.5 BTC |
| 账户与清算 | 用户权益、可用余额、冻结金额和费用 | 买方 USDT 减少,BTC 增加 |
| 托管 | 链上地址、签名权限和资产调拨 | 将 BTC 从平台钱包转到提现地址 |
| 合规与运营 | 客户准入、产品权限、审核与报告 | 某地区的客户只能使用获准产品 |
CEX 内部成交通常不会为每笔交易发送链上转账。 平台先在内部账本中转移权益,充值和提现才连接链上资产。内部记账完成不能证明用户资产已在链上交割,也不能保证任何时候都能即时提现。
CEX 与 DEX 的差别不只是速度
CEX 常见链下订单簿与集中托管;DEX 则可能采用 AMM、链上订单簿,或链下订单传播加链上结算。不能把所有 DEX 都简化成“每次挂单都上链”:例如 dYdX Chain 区分短期内存订单和持久化的长期订单。dYdX 订单说明
两类系统都要解决成交、公平排序、状态一致性与资产安全,但信任边界不同。CEX 更依赖平台账务和托管控制;DEX 更依赖合约、验证者、预言机及其治理。流动性、费用与延迟必须按具体交易对和链路比较,不能从分类直接推导优劣。
本文选择 CEX,是为了沿一条完整的订单—账户—钱包链路展开,并不意味着 DEX 的设计更简单。
业务版图如何增加复杂度
现货、合约、借贷、场外交易和质押等产品可以共用身份与资金入口,但未必共用同一个可用余额。资金账户、交易账户、逐仓账户和组合保证金账户之间的划转,决定了哪些资产可以支持哪些承诺。
新增一条业务线时,关键问题不是再加一张订单表,而是:资产归谁控制、哪些余额可以复用、损失如何承担、费用如何入账,以及谁能在哪个地区使用它。
二、从订单参数走到成交
交易对与精度
BTC/USDT 表示以 USDT 为计价资产买卖 BTC。报价 65,000 意味着每 1 BTC 的价格为 65,000 USDT。
订单校验至少要区分三类约束:
| 参数 | 含义 | 假设示例 |
|---|---|---|
| Tick Size | 价格步长 | 0.01 USDT |
| Quantity Step | 数量步长 | 0.00001 BTC |
| Min Notional | 最低名义金额 | 5 USDT |
数量步长不是最低数量,最低金额也不等同于最低数量。还可能存在最高价格、最大数量和价格偏离等约束。接入时应读取交易对配置并按规则更新,而非把示例数值写死。Binance Filters
业务计算使用十进制定点数或带明确精度的十进制类型。价格乘数量后还涉及金额精度和舍入方向,这些规则会同时影响冻结、手续费与对账。
限价、市价与时效是不同维度
| 概念 | 行为 |
|---|---|
| 限价单 | 只接受限价以内的价格;可立即成交,也可留下未成交部分 |
| 市价单 | 按可用对手盘成交;可能跨越多个价位,受深度和保护规则约束 |
| GTC | 未成交部分可继续挂单,直到成交、撤销或其他终止条件成立 |
| IOC | 立即执行可成交部分,剩余取消 |
| FOK | 必须立即完整成交,否则不成交 |
| Post-Only | 要求作为挂单提供流动性,可能立即成交时按平台规则拒绝或取消 |
例如卖方有 65,000 × 0.5 BTC、65,010 × 0.3 BTC。提交买入 1 BTC、限价 65,010 的 IOC,只能成交 0.8 BTC;相同条件的 FOK 不成交。若限价改为 65,000,可成交量就只剩 0.5 BTC,不能只看总深度。
止损单还增加了“触发”阶段。达到触发价只是产生后续订单,止损限价单不保证成交,止损市价单也不保证成交在触发价。
订单簿与价格—时间优先
订单簿按价格聚合未成交委托,同一价位内部仍需保留排序关系。下面的示意盘口买一为 64,990、卖一为 65,010,价差为 20 USDT:
| 卖盘(由高到低) | 数量 | 买盘(由高到低) | 数量 |
|---|---|---|---|
| 65,030 | 1.2 BTC | 64,990(买一) | 3.1 BTC |
| 65,020 | 0.8 BTC | 64,980 | 1.7 BTC |
| 65,010(卖一) | 2.5 BTC | 64,970 | 0.9 BTC |
价格—时间优先表示:更好的报价先成交,同价位按引擎接受的顺序处理。客户端时间戳不能自行决定排队位置。以 Coinbase Exchange 为例,成交采用订单簿上已有订单的价格。撮合规则
假设卖方订单依次为:
| 价格 | 数量 | 接受顺序 |
|---|---|---|
| 65,010 | 0.5 BTC | 同价位第 1 笔 |
| 65,010 | 0.3 BTC | 同价位第 2 笔 |
| 65,020 | 1.0 BTC | 下一价位 |
一笔能覆盖这些价格的 1 BTC 买单会依次成交 0.5、0.3、0.2 BTC。成交均价为:
(0.5 × 65,010 + 0.3 × 65,010 + 0.2 × 65,020) / 1 = 65,012 USDT
相对提交时卖一 65,010,均价高了 2 USDT。这是本例选定基准下的滑点;若改用中间价或到达价格,指标数值也会改变。
Maker 与 Taker 按实际成交判断
Maker 的挂单提供流动性,Taker 主动吃掉已有挂单。一笔限价单可能先作为 Taker 部分成交,再把余量挂入订单簿,后续成交成为 Maker,因此不能用“限价单 = Maker”计费。
Maker 与 Taker 可以同费率,也可能不同;特定做市计划还可能采用负 Maker 费率。计费必须绑定交易对、用户费率等级、折扣规则与生效版本,不依赖一张长期不更新的 VIP 表。
三、现货交易如何连接资金与资产
充值:先识别,再确认,最后入账
充值链路包括地址或 Memo/Tag 分配、链上事件识别、确认策略和账户入账。同一链上事件必须有稳定标识,重复扫描不能重复增加余额。
“看见交易”不等于“满足入账条件”。不同链的确认与最终性语义不同,例如 Solana 区分 processed、confirmed 和 finalized;不能把“一次确认、不到一秒”当成所有链的通用安全标准。Solana 确认说明
平台需要按链、资产和金额设定确认策略,并处理重组、节点分歧与延迟。确认数降低的是特定风险,不是无条件不可逆的证明。
下单:校验与冻结必须形成同一个承诺
以限价买入 0.5 BTC、限价 65,000 为例,假设手续费从 USDT 支付、预留费率 0.1%,需要预留 32,532.5 USDT。
- 校验交易权限、价格、数量、订单类型及保护规则。
- 在权威账户状态中原子检查可用余额,并为该订单冻结资金。
- 将已获得资金承诺的订单送入撮合。
- 按成交结果扣减冻结、增加买入资产并记录费用。
- 对终止订单释放剩余冻结;仍在挂单的余量继续保留所需资金。
这里不能先查一次余额,再无条件异步冻结,否则两笔并发订单可能同时花掉同一份资金。反过来,也不能每次部分成交后就把余量冻结全部释放。
市价买单没有固定成交单价,需使用报价金额上限、价格保护或其他明确的资金限制。单纯按当前卖一计算冻结,无法覆盖跨档成交。
提现:账务完成与链上完成分别记录
提现先预留余额并完成必要审核,再构造、签名和广播链上交易,最后按确认策略更新状态。广播超时可能意味着“已经发出但没有收到响应”,此时应查询既有交易,不能直接重新转出一次。
钱包可以按在线程度和权限划分热、温、冷等层级;多签或 MPC 用于分散签名权限。它们不能替代交易内容校验、额度控制和审批隔离:多个签名方共同批准了错误交易,资产仍可能损失。
这一点也解释了 CEX 与证券市场不能只按“实时 vs T+1”比较:交易确认、内部账务结算、外部资产交付和法律最终性是不同问题,必须先明确比较的是哪一步。
四、永续合约增加了哪些业务状态
现货买入后,用户持有对应资产权益;合约则记录仓位、保证金和按合约规则计算的盈亏。线性、反向以及其他结构的合约不能共用未经区分的计算公式。
资金费率是一种价格激励
永续合约通常没有固定到期日,借助多空之间的资金费用交换影响持仓成本。正费率时多头支付空头,负费率时反向支付;这有助于价格靠近参考市场,但不保证始终相等。
以 BitMEX 文档中的一种计算形式说明缓冲区,定义 clamp(x, lo, hi) 为上下限截断:
F = P + clamp(I - P, -0.05%, +0.05%)
P 为对应周期的溢价指标,I 为同周期利率项。当 I − P 位于缓冲区内,F = I,不是 P + I。周期、平均方式和额外上限需按具体合约处理。BitMEX 永续合约说明
假设某线性合约以 100,000 USDT 的计费仓位价值、每周期 +0.03% 结算,多头本次支付 30 USDT。只有仓位价值、费率和持仓均不变,并且一天确实结算三次时,日费用才是 90 USDT。
现货多头与永续空头可以对冲部分方向敞口,却仍有基差、费率反转、保证金、执行及托管风险。不能把收取资金费率写成“价格风险为零、净赚”。
初始保证金、维持保证金与权益
初始保证金决定开仓所需资金,维持保证金决定持仓最低要求。下面只讨论无其他仓位、无追加保证金的线性多头,并忽略手续费和资金费:
开仓数量 q = 1 BTC
开仓价格 P0 = 65,000 USDT
初始保证金 M = 65,000 / 20 = 3,250 USDT
假设维持保证金率 m = 0.5%
标记价格为 P 时:
未实现盈亏 = q × (P - P0)
保证金权益 = M + q × (P - P0)
维持保证金要求 = q × P × m
在本例的简化触发边界,两者相等,得到 P = (65,000 − 3,250) / 0.995 ≈ 62,060.30 USDT。价格下降约 4.52%,本金尚未全部亏完就达到维持保证金边界。
账户权益已经包含未实现盈亏时,不能再扣一次“仓位未实现亏损”。实际合约还需处理费用、阶梯扣减项、抵押品折扣和其他仓位,不能直接把这个例子当作平台强平计算器。
| 模式 | 保证金如何分配 | 风险传播范围 |
|---|---|---|
| 逐仓 | 为特定仓位或仓位组分配 | 通常限制在该隔离单元;自动追加会改变可动用资金 |
| 全仓 | 在同一保证金账户内共享合格抵押品 | 一个仓位的损失可能消耗其他仓位可用保证金 |
| 组合保证金 | 按组合风险模型评估 | 依赖抵押品、相关性和压力情景规则 |
仓位增大时,平台可能提高维持保证金要求并降低最大杠杆。阶梯往往带有累积扣减项,以避免跨档时出现不合理跳变;不能只复制一列比例就重建算法。
标记价格与强平执行
最新成交价容易受薄盘口影响,标记价格则依据指数和基差等规则计算,用于特定风控和盈亏口径。指数成分、异常源处理和过期报价策略同样重要,平滑并不能保证价格永不失真。
强平要分清三个价格:触发判断使用的标记价格、权益耗尽对应的破产价格,以及真正平仓的市场执行价格。它们不必相等。
一种可用的业务组织方式是:风险接近阈值时预警,触发后按规则撤销相关挂单、减少风险仓位,并在仍不满足要求时继续平仓。是否部分强平、如何接管仓位、费用如何收取,都应由产品规则确定,而非认定所有平台采用同一流程。
穿仓损失可能先由保险基金承担,再按产品条款使用自动减仓(ADL)或其他损失处理机制。ADL 强制减少选定对手方仓位,社会化分摊则调整指定范围的收益或余额,两者不是同一种机制。 也不能写成每次执行价劣于破产价都会直接 ADL。
线性与反向合约的盈亏单位
对于线性多头,忽略费用时,盈亏为数量乘价差。对于以 BTC 结算、每张面值 100 USD 的反向多头:
PnL(BTC)= 张数 × USD 面值 × (1 / 开仓价 - 1 / 平仓价)
假设做多 1,000 张,开仓价 65,000 USD:
| 平仓价 | BTC 盈亏 | 按平仓价折算的 USD 盈亏 |
|---|---|---|
| 70,000 | 约 +0.109890 BTC | 约 +7,692.31 USD |
| 60,000 | 约 −0.128205 BTC | 约 −7,692.31 USD |
美元折算盈亏在这个例子中对称,BTC 数量不对称。保证金币种相同也不代表合约公式一定相同,系统应直接记录合约类型、乘数与结算资产。
五、流动性与风控共同约束成交
做市商在两侧报价,尝试从成交价差和激励中获得收益,同时承担库存与逆向选择风险。买卖两边挂出了价格,不代表两笔都会按计划成交。
流动性分析至少需要说明观测对象:
| 指标 | 需要固定的口径 |
|---|---|
| 价差 | 绝对金额或相对中间价的比例 |
| 深度 | 价格区间、买卖方向、数量或名义金额 |
| 冲击成本 | 订单规模、方向、基准价格及费用是否包含 |
| 恢复速度 | 扰动发生后恢复到什么深度或价差 |
不能给所有市场套用“500 BTC 深度就是好”之类阈值。做市计划可以按报价覆盖率、价差和深度设定要求,但更高接口额度不等于免除资金与市场行为风控。
账户风控关注身份、权限、登录与提现;交易风控关注订单合法性、自成交及频率;合约风控关注保证金和敞口;反洗钱关注资金来源与流转模式。它们共享证据,但不应把一个可疑信号直接等同于违法结论。
STP 也不是统一采用“取消 Maker”。Coinbase Exchange 的默认模式是减少大单数量并取消小单;接入方应读取实际支持的模式,并记录被阻止成交的原因。STP 规则
六、清算把业务结果变成可核对的分录
现货:按资产守恒
假设成交 0.5 BTC,价格 65,000 USDT,买方费率 0.1%、卖方 0.05%,费用均从 USDT 支付:
| 账户 | BTC 变动 | USDT 变动 |
|---|---|---|
| 买方 | +0.5 | −32,532.50 |
| 卖方 | −0.5 | +32,483.75 |
| 平台手续费账户 | 0 | +48.75 |
| 合计 | 0 | 0 |
守恒必须按资产分别检查,不能把 BTC 和 USDT 数量直接相加。账本还应记录可用与冻结子账户之间的变化,否则总额虽然平衡,资金却可能被错误释放或重复占用。
合约:按业务事件入账
已实现盈亏、手续费、资金费用、强平及保险基金划转对应不同事件。每项事件应有稳定业务标识,重复投递不能重复收费。
资金费率结算需确定周期、费率版本和持仓快照边界,再逐笔或分批入账;“同一个逻辑结算时刻”不要求所有用户在同一物理瞬间写库。跨批次完成时,查询与风控必须知道哪些状态尚未结算。
资金费用扣除会降低保证金权益,可能触发强平,不能承诺扣费后一定不会立即强平。结算与风控对同一账户状态的处理顺序也应明确。
储备证明不能替代完整偿付能力核验
Merkle 路径可以让用户验证自己的记录是否包含在某次承诺的数据集中,不能单独证明所有负债都被完整列出。零知识证明可以验证所定义的约束,却仍取决于输入完整性和证明范围。
链上地址的资产、资产控制权、抵押或借入情况、账外负债及快照之后的变化,需要其他证据。PoR 因而不等同于财务审计,也不能仅凭一个根哈希断言“资产够”。PCAOB 对储备证明的说明
七、把监管要求落实为产品边界
监管不是给交易所品牌贴一个“有牌照”的标签。工程接入需要确认具体法律实体、客户地区、资产类别和服务类型:获准托管不自动意味着可以向同一客户提供杠杆衍生品。
KYC 与增强尽调可以影响业务权限、额度和复核流程,但没有一张全球通用的 Level 0—3 表,更不存在“完成最高级认证即可无限提现”的通则。系统需把这些规则配置为有适用范围、依据和生效时间的策略。
以欧盟为例,MiCA 区分服务提供商和不同代币类别;属于金融工具的资产不直接套用同一套 MiCA 产品规则。MiCA 适用范围
| 对象 | 需要区分的规则 |
|---|---|
| 加密资产服务 | 授权覆盖的服务范围、客户资产保护与跨境程序 |
| 电子货币代币 EMT | 发行人原则上须为获授权的信贷机构或电子货币机构 |
| 资产参考代币 ART | 有另一套发行授权及储备要求,不能统一写成“必须有 EMI 牌照” |
| 转账信息 | 欧盟旅行规则主要来自 Regulation (EU) 2023/1113,与 MiCA 分别核对 |
EMT 与 ART 的授权区别见 MiCA 第 48 条和第 16 条。既有服务的过渡安排有适用条件、成员国差异和截止日期,不能把过渡期内经营等同于已获 MiCA 授权。ESMA 过渡期说明
旅行规则要求处理随转账传递的必要信息,以及信息缺失时的补充、审核或其他处置。技术上要落实安全传输、字段验证、访问权限和留存,而不是只增加一个“超过金额就发送身份资料”的开关。EBA 旅行规则指南
这些规则最终影响开户、下单、划转和提现的每个入口。业务权限的变更也应能回溯到当时的规则,而非依赖运营人员对当前配置的记忆。
从业务约束走向系统设计
理解交易所,可以先抓住四个问题:订单承诺是否有资金支持,成交是否按规则排序,账务是否按资产守恒,内部权益是否能与托管资产核对。
永续合约在此基础上增加随价格变化的权益与保证金要求;风控和监管进一步限定哪些承诺可以接受。下一篇围绕这些约束展开撮合、账务、行情和钱包架构,讨论如何在并发与故障下仍然维持正确结果。