Files
crypto_okx/docs/修复报告-高危-2026-10-07.md
T

3.0 KiB
Raw Blame History

修复报告:期权币本位高危缺陷(2026-10-07)

1. 目标

按审计清单修复全部 Critical / High 项,本地测试 + 不少于两轮审计后,再通知更新实例。

2. 修复对照表

原问题 修复要点 主要文件
买币增量≤0 误用整户余额 短重试取增量;仅用订单回执 coin_bought;否则回滚 options_coin_open_lib.py
IOC 部分成交 / 51008 减半残留币 _sell_excess_bridge_coin 按桥买入量封顶卖掉多余币 options_coin_open_lib.py
卖回扫光无关余额 spot_market_sell_coin_to_usdt 尊重 coin_amount;桥卖按 coin_bought 封顶 options_spot_bridge_lib.py, sim/hooks.py
粉尘桥 None 拦开仓 用桥记录量判断粉尘;开仓前清桥 + 扫尾;holding 仅在确认无仓时清 options_spot_bridge_lib.py, options_coin_open_lib.py
握库拉盘口 持仓/历史:先读库再 enrich;中控快照关闭 close_preview options_positions_lib.py, options_history_lib.py, options_hub_lib.py
条件单嵌套开仓锁库 run_cond_orders_tick(get_db),开仓前关连接 options_cond_order_lib.py, options_register.py, options_monitor_lib.py
目标/翻倍握库平仓 传 get_db,收集任务后无连接再 close_fn options_target_lib.py, options_profit_exit_lib.py, options_monitor_lib.py
开仓等成交握库 等成交前 commit+close,结束后再开短连接写库 options_coin_open_lib.py
模拟到期卖币静默失败 打印 [sim_expiry_sell] 日志 sim/broker_lib.py
中控条件单不验上限 创建前调用 option_position_limit_block_msg hub_bridge_register.py
持仓查询失败误卖 None/异常不卖币,只清粉尘 pending options_coin_open_lib.py
查询失败误关 holding positions_ok 为假时不关 holding options_spot_bridge_lib.py
回滚卖币无封顶 回滚按桥 coin_bought 封顶 options_spot_bridge_lib.py

3. 测试

新增:tests/test_spot_dust_and_sell_cap.py

已跑通:

  • tests.test_spot_dust_and_sell_cap
  • tests.test_options_partial_close_accum
  • tests.test_options_profit_exit_recycle
  • tests.test_options_btc_pnl_usdt

4. 审计轮次

轮次 结果
修复前 多条 Critical/High(见审计报告 §3)
第 1 轮 Bugbot 2 High → 已修
第 2 轮 Bugbot + 人工 无确认残留 High/Critical

详见:docs/审计报告-高危修复-2026-10-07.md

5. 部署建议

  1. 推送本仓库后,对所有实例(含模拟盘「波段-复利」)远程更新并重启
  2. 验证:中控平仓后自动卖回;粉尘不再显示/不拦开仓;模拟盘不再频繁「数据库锁定」
  3. 若仍见旧 pending 桥:开仓流程会自动清粉尘;或重启后再试一次开仓

6. 未改(有意保留)

  • 永续监控 check_order_monitors 长连接(Medium,非本次高危范围)
  • 粉尘仍会留在交易所账户内,仅程序忽略展示与重试