# 修复报告:期权币本位高危缺陷(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,非本次高危范围) - 粉尘仍会留在交易所账户内,仅程序忽略展示与重试