{"content":"fix da4d504 — faucet(address-init/reward)UTXO 双花收口(P1)\n\n老水龙头代码与 sponsor v2 的成熟纪律完全脱节,三处叠加:①UTXO 选择无锁(//lock utxo list 注释下没有任何锁),并发请求按同一排序选中同一批输入互相双花;②tx.Save+Where 的乐观锁不查 RowsAffected,0 行命中也静默成功;③链上广播在 DB 事务内——广播成功+提交失败=链上已花而 DB 仍标可用,资金池状态腐化且无对账任务。\n\n修复:新增 ListAvailableForUpdateTx(FOR UPDATE 选择)与 ConsumeGasUtxoTx(版本 CAS + RowsAffected 硬校验),init/init-v2/reward 三个服务改为单事务内「锁定选择→构建签名→CAS 消费→落记录」,广播移到 commit 之后(新失败态=DB 已标记链上未花,资金安全,[GAS-ALERT] 带出 txId 供 ops);另加 gasassist.init_signature_required 签名门控(默认关,契约变更待 IDBots 适配)。删除被替代的 UpdateForFunc 旧路径。","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}