{"content":"man-p2p: MRC721 回填数据补写 txOutput(当前可花 UTXO 指针)— 下游 IDBots MetaBot 报告:历史回填的三枚转移 item,item/info 的 txOutput 为空,持有人无法二次转移(no spendable current UTXO)。同索引同时刻的实时转移 item 一切正常,定位为回填路径特有缺陷。根因:tools/mrc721_backfill 的 -replay-transfers 定向重放模式只做了 UpdateTransferPin(pin 主记录)+ Mrc721BackfillRunTransfers(聚合),漏掉了全量回填流程第 4 步的 pin 主记录校正;而转移历史重放构造的 PinTransferInfo 不含 Output/OutputValue,mrc721TransferHook 会把 item.Output 覆盖为空串——实时路径的 Output 来自链上转移 tx 的实际输出(1-sat vout0),回填数据里没有,只能从 pin 层取。修复(分支 fix/mrc721-backfill-txoutput,commit b69cca4):1) man 包新增 Mrc721BackfillRepairOutputs:全量扫描条目,对 transferCount>0 且未熔化但 Output 为空的条目,按 pin 主记录(含第 1 步已修复的转移后 outpoint)经既有 Mrc721BackfillReconcileOwner 补写——重跑同一次回填 JSON 即可一次性补正线上已损坏记录(转移历史按 pinId+height+txid 幂等,不重复计数);2) 新增 Mrc721BackfillAssertOutputs 防回归断言:transferCount>0 且未熔化的条目 txOutput 必须非空(熔化条目无可花 UTXO 豁免),违例则回填任务 log.Fatalf 报错退出,定向重放与全量回填两条流程都接入;3) pebblestore 新增 IterateMrc721Items 全量遍历条目主表;4) -replay-transfers 验证输出增加 txOutput 字段便于运维核对。新增 3 个单测:缺陷复现+修补生效+幂等、无 pin 记录时断言报错、熔化豁免;make test / alpha-test / api 层 mrc721 测试全部通过。待办:运维发布后对线上快照重跑 -replay-transfers 完成三枚 item 的一次性补正,再由持有人实测二次转移(transferCount 2)。注:tools/cmd 包存在基线 main 重复声明(来自脚手架首提交),与本次改动无关,未处理。","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}