一、两类让人手心出汗的场景
第一类:某几笔余额来路不干净,或者金额小得会拖累整场选币,你希望钱包在下一次花钱时自动绕开它们。第二类:一笔交易发出去石沉大海,手续费低到没人打包、依赖的父交易又不争气,你不想干等,想把资金拿回来重新安排。钱包层面的答案分别是 lockunspent 与 abandontransaction,先把两句话背下来:锁定管的是别选中它,放弃管的是别当它存在。

二、lockunspent:把输出钉在冰面上
lockunspent 接受一笔或多笔 txid 加 vout,参数 unlock 为假即锁、为真即解锁。被锁定的输出不会进入自动选币的候选池——这是对自动选币说的,文档同时写明手动指定硬币时锁定会被自动解除:人既然亲手选了,命令尊重这个决定。全部输出一起解锁时不带清单即可,一次清空。
三、锁住的冰会化:持久化的分界线
默认情况下锁只存在内存里,进程一停一重启就全部消失,除非传入 persistent 参数把锁写进钱包数据库、随节点启动重新加载。解锁动作会把持久与非持久的锁一并清掉。这条边界决定了锁的适用姿势:它是一把操作闸门,防的是下一次选币选中坏币,而不是把币永久封进保险库。配合 listlockunspent 随时核对当前冻了哪些,是写脚本时的基本卫生。
四、abandontransaction:从钱包账本上摘名字
被放弃的交易会连同钱包内的所有后代一起标记,标记之后这些输入重新可花。文档给的适用条件很窄:只能作用于不在任何区块、也不在当前内存池里的交易,对已放弃的交易重复执行没有效果。所以标准的卡单处置顺序是——先确认交易确实不在内存池,再做放弃;反过来如果它还在内存池里被对端记得,即便钱包侧名义上放弃了,将来某天它仍然可能被打包进块,到时候链会替所有人做决定。
五、组合拳的正确出拳顺序
常见故障单可以这样拆:交易卡死且费率低到不会被打包——确认不在内存池后放弃交易,输入回归可用余额,用更高的费率重新组织一笔;粉尘进账,担心正常花费时被自动选中、把隐私和字节一起拖下水——先 lockunspent 逐笔冻结,等将来与干净余额合并时再手动指定花掉,或干脆归集进新地址。顺序反了会出问题:先放弃再锁,冻结的是已经不存在的输出;先归集粉尘再处理卡单,等于把脏字节焊进新交易。两个命令都不动链,链上事实永远优先于钱包里的标记,这也是自托管世界里操作与账本必须分开理解的一课。
本文只提供钱包防御与处置方法,不构成投资建议;涉及任何签名与广播操作前,请先用小额演练完整流程。
六、把组合放进自托管的日常
这两个命令真正的用处,是把自托管从不敢动手变成有章法地动手。事前纪律比事后止损更值钱:每次大额花费前先看一眼选币结果,确认没有把来历存疑的输出混进去,因为交易一旦广播,锁定和放弃都只能改变钱包的看法,改变不了链上的事实。事中留痕:冻结了什么、为什么冻结,用清单类命令随时导出,写进自己的运维记录,免得半年后的自己完全不记得这台机器上还有几笔被冰起来的钱。事后收口:放弃交易后重发的新单要确认已经广播并得到对端接收,旧单如果某天突然被打包,两条腿总得有一条留在链上,届时以链上结果为准安排后续,不要凭钱包界面的数字赌气。把这些动作变成固定流程之后,你会发现真正需要动用放弃功能的机会越来越少——绝大多数卡单都能靠合理的费率与提前的锁定避免,这正是工具成熟的样子。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。