githubEdit

清算流程详解

概述

清算是永续合约风控的最后一道防线。当用户保证金率低于维持保证金要求(110%)时,系统自动触发清算流程,由Liquidation Keeper接管仓位并强制平仓。

完整清算流程

流程图

spinner

时间节点

  1. 监控检测: 每10秒检查一次所有持仓(Keeper轮询)

  2. 触发判断: <100ms (实时计算保证金率)

  3. Keeper接管: <500ms (并发控制+锁定仓位)

  4. 提交订单: <200ms (生成清算订单)

  5. 订单成交: 1-5秒 (取决于市场流动性)

  6. 资金结算: <100ms (链下计算)

  7. 链上结算: 1-2秒 (批量上链)

  8. 用户通知: <1秒 (WebSocket推送)

总耗时目标: <10秒 (从触发到完成)

清算优先级

排序规则

当多个用户同时触发清算时,按以下优先级处理:

  1. 保证金率最低: 最危险的先清算

  2. 持仓规模最大: 系统性风险优先

  3. 触发时间最早: 先到先得

  4. 用户等级: 新手用户优先保护(尽量避免清算)

批量处理

  • 每批最多处理10个清算

  • 批次间隔100ms

  • 避免同时大量清算冲击市场

用户可见的清算状态

状态流转

状态说明

状态
保证金率
用户可见信息
可执行操作

🟢 正常

>200%

无特殊提示

所有操作

🟡 警告

150-200%

橙色警告提示

所有操作

🔴 危险

110-150%

红色强警告

建议充值/平仓

⚫ 清算中

<110%

"清算进行中"

无法操作

✅ 清算完成

-

清算结果通知

查看详情

清算中界面

清算执行机制

Keeper工作原理

并发控制

  • 全局最多10个并发清算

  • 每个用户同时只能清算1个仓位

  • 使用Redis分布式锁防止重复清算

重试机制

清算订单提交后如果未成交:

  • 第1次重试: 等待1秒

  • 第2次重试: 等待2秒

  • 第3次重试: 等待5秒

  • 仍失败: 标记为"清算异常",人工介入

清算费用

费用构成

  • 清算费率: 仓位价值的1%

  • 收取方: 从清算收益中扣除

  • 用途: 激励Keeper运行,部分注入保险基金

示例计算

清算后处理

资金结算

清算通知

清算完成后立即通知用户:

  • WebSocket实时推送

  • 邮件通知(如已绑定)

  • Telegram通知(如已绑定)

  • 站内消息

清算记录

所有清算事件永久记录:

  • 清算时间

  • 触发价格

  • 清算数量

  • 资金结算明细

  • 用户可查询历史

性能指标

目标指标

  • 监控频率: 10秒/次

  • 触发延迟: <100ms

  • 清算延迟: <10秒

  • 成功率: >99%

  • 穿仓率: <0.1%

实际表现(MVP测试)

  • 平均清算时间: 6.8秒

  • 清算成功率: 99.7%

  • 穿仓率: 0.08%

  • 保险基金使用率: 0.3%/月

相关文档

Last updated