settxfee 把钱包费率调成手动:什么时候值得放弃自动估算 图 1
settxfee 把钱包费率调成手动:什么时候值得放弃自动估算 · 图 1

默认状态:钱包替你猜费率

正常情况下,比特币核心钱包发送交易时会自动估算费率:它参考自己观察到的交易被确认的历史分布,给出一个面向未来若干个区块的目标,再套用到这笔交易的体积上算出费用。对绝大多数用户,这套默认逻辑是对的,也是更省心的。settxfee 的作用是把选择权抢回来:设置之后,钱包按你指定的”每千虚拟字节多少比特币”来给这笔或此后的交易计价,不再参考估算结果。帮助文本里写得很明确——它的单位就是 BTC/kvB,传 0 则关掉手动模式、回到自动估算。命令行参数 -paytxfee 是同一件事的全局版本,而按钱包设置的 settxfee 会覆盖命令行参数。也就是说,同一时间只有一个声音在说话。

settxfee 把钱包费率调成手动:什么时候值得放弃自动估算 图 2
settxfee 把钱包费率调成手动:什么时候值得放弃自动估算 · 图 2

什么时候值得切手动

值得切手动的场景其实不多,典型有三类。第一类是确定性要求:某些离线签名工作流里,签名方看不到实时网络状况,希望费率由发起方预先定死,避免签名后再被改参数。第二类是压成本的低优先级场景:对时间不敏感的归集或自转,有人愿意接受低费率排队,但必须接受”可能几十分钟甚至更久不进块”的结果,并且提前准备好加急手段。第三类是策略实验或教学演示:固定费率能让不同笔交易的确认表现变成可对比的样本。除此之外,日常使用没有切手动的理由——自动估算比人工盯盘更早、也更冷静的可能性更高。

手动费率的两个坑

第一个坑是过低卡单:费率偏低时交易可以在内存池里待很久,节点中继它对下游没有吸引力,钱包界面会显示”未确认”。此时可走的补救路是 RBF 加急(前提是该交易按可替换方式构造)或 CPFP 让子交易带费;两者都不是万能钥匙,交易没开可替换标志就没法原地加价。第二个坑是长期忘关:设了一个”当时刚好”的手动费率之后网络环境会变,几周后同样的数字可能意味着长时间不确认。习惯上,用过 settxfee 就该记得用完设回 0,或者干脆只用单次交易的费率参数,而把钱包常驻设置留给自动模式。

与估算法的配合关系

settxfee 只影响发送端定价,不影响节点政策:节点对”值得中继”的费率下限有自己的一套判断,低于下限的钱包交易可能被自己的节点都拒之门外。手动设置过低的另一个隐蔽后果是:交易可能连从自家节点广播出去这一步都不顺。遇到这种情况不是节点坏了,是策略在正常工作。

简单总结:自动估算默认是对的,手动是给特定工作流用的旁路,用之前想清楚”我要确定性还是要省钱”,用之后记得把旁路关掉。本文不构成投资建议。

单交易级别的费率旋钮

需要注意的是,settxfee 之外的发送类 RPC 大多自带单次费率参数:fee_rate 直接指定每虚拟字节多少聪,conf_target 指定希望几个区块内确认,二者都只对这一次调用生效,不污染钱包的常驻状态。换句话说,“这一笔用某个费率”的需求根本不需要动 settxfee。把钱包级开关和交易级参数分清楚,能避免一类隐蔽事故:有人为了某笔特殊交易设了手动费率,第二天同事用同一钱包发普通款,用的还是那个忘了改回去的数字。钱包设置是持久承诺,交易参数是一次性指令。再补一句与估算法的分工:estimatesmartfee 这类接口给出的是”参考市场价格”,settxfeefee_rate 决定的是”我实际按什么价格下单”,两者之间永远隔着人的判断——工具能告诉你市场在哪,不能替你决定要排多快的队。