顺手打扫钱包的费率闸门:-consolidatefeerate 何时值得多花输入 图 1
顺手打扫钱包的费率闸门:-consolidatefeerate 何时值得多花输入 · 图 1

钱包攒着一堆小额 UTXO,平时没感觉,一到费率高峰转账就吃亏:每一笔历史收款都要作为输入被签名一次,体积大、费用高。想主动归集,可以用 sendall 专门做一次合并;但比特币核心还在普通付款的选币逻辑里埋了一个自动开关 -consolidatefeerate,它决定”什么时候值得顺手打扫”。这个参数的官方定义只有一句话:允许建交易时多用输入以缩减钱包 UTXO 库存的费率上限,默认值是每千虚拟字节 0.0001 枚比特币——折算下来 10 聪每虚拟字节。

一、它在选币天平上压的是哪一端

钱包构造一笔交易时,选币器一直在两个目标之间权衡:一是这一笔的交易费尽量低,二是钱包的 UTXO 集合尽量健康。前者让人倾向于只挑刚好够付的几枚币,后者希望把零碎的小额币早点消化掉——因为 UTXO 越多,未来的每一笔交易都会被拖大,而且一旦哪天费率暴涨,所有碎片都等着在同一时间被处理。源码注释把机制说得很直白:当实际费率低于归集费率时,建出来的交易倾向于合并输入;当实际费率高于归集费率时,倾向于只挑费用最低的输入。翻译成场景:网络冷清的时候,钱包发现”多带三个碎片上去,总价几乎没变”,于是顺手做清洁;网络拥堵的时候,每多一个输入都在烧钱,钱包就克制住自己动手的冲动,让归集留给你显式决定的时刻。

这个设计回避了旧机制的尴尬。更早年代钱包靠”币龄优先级”自动归集,逻辑不透明还催生了不合理的交易结构,后来被彻底移除。归集费率是它的理性替代:规则确定、可配置、只在便宜时出手。

顺手打扫钱包的费率闸门:-consolidatefeerate 何时值得多花输入 图 2
顺手打扫钱包的费率闸门:-consolidatefeerate 何时值得多花输入 · 图 2

二、怎么调它,先看什么

调低它(比如设成每千虚拟字节 0.00005,即 5 聪/虚拟字节),意味着只有费率极低时钱包才肯归集——适合讨厌”交易里混进莫名输入”的用户;调高它,钱包会更积极地打扫,代价是某些时候你的付款交易里会多背几个找零输出、多付几聪。对绝大多数人,默认值是一个经过权衡的折中:它在历史上大多数低费率时段都能触发归集,又几乎不会在拥堵时添乱。

检查它是否起作用有个省事的观察法:同一套钱包,在费率低谷和高峰各造一笔金额相同的交易,比较输入个数与交易返回里的 fee 字段。如果低谷时的输入明显多出来几个旧碎片,那就是归集逻辑在工作的痕迹;钱包调试日志开启后也能看到选币过程的输入数量。

三、它管不到的三件事

第一,它不改变手续费估算本身。你给这笔交易出的费率仍由 estimatesmartfee 或你手动指定的目标块数决定,归集费率只影响”在既定费率下选哪些输入”。第二,它不处理隐私顾虑。归集会把同一钱包的多枚币捆在一条交易里暴露关联性,重视地址聚类隐私的用户宁愿保持碎片,也不该指望这个参数替他做主。第三,它救不了极端情况:碎片多到一笔普通付款都超重时,需要的是一次性的集中归集(sendall 或者自建归集交易),而不是期待日常付款慢慢蚕食。

最后是风险提示:无论自动还是手动归集,都是在”现在多付一点费”和”未来少付一点费”之间做概率下注——未来的费率环境没人能给出承诺。参数只放大或缩小钱包替你下注的频率,决定权应该留给你自己。

四、和相邻参数的分工

钱包里和它相邻的还有 rescankeypool 一类参数,但真正需要放在一起权衡的是 fallbackfee 与交易构建本身:归集只在”普通付款顺路发生”时起作用,如果你从不发起付款,它永远不触发,这类钱包想要改善 UTXO 结构,还是得靠 sendall 主动归集或等下一次大额支出顺路合并。另一个实践细节是监控口径:把钱包的 UTXO 数量随时间画一条线,归集是否生效一眼可辨——数量阶梯式下降说明闸门在费率低谷被打开,长期水平则说明当前费率始终高于你设定的阈值,两者都不是故障,只是策略使然。总之这是一个”平时感觉不到、高峰期替你省钱”的参数,理解它的默认值与触发条件,比记住名字更重要。