Fee Rate 是交易手续费除以其虚拟大小 vsize,通常以 sat/vB 表示,即每虚拟字节多少聪。聪(satoshi,简称 sat)是比特币基础网络记录金额的最小单位。总手续费等于输入金额与输出金额之差。较高费率可能有助于更早确认,但不提供固定排队位置或保证完成时间。
交易输入引用你以前收到、现在准备花费的金额。尚未花费的输出称为 UTXO。新输出则规定金额及其今后可被花费的条件,例如支付给收款人的输出,以及把找零退回你钱包的输出。两笔结构相同的交易可以转移很不一样的金额,却具有相同大小和手续费。主要影响因素是输入、输出的数量与类型。因此,花费许多小 UTXO,可能比从一个合适的输出发送更大金额还贵。关键是交易结构,而不是折合本币的价值。 [2] [3]
如果完成的交易为 150 vB,费率是 20 sat/vB,手续费就是 3000 sat。同一费率下,更大的交易成本更高。签名前要同时检查费率与总费用。签名尚未完成时,钱包可能只是在估算大小,因此最终结果未必与最初方案完全相同。 [3]
SegWit 是比特币的一项升级,它把签名等部分交易验证数据移到了称为 witness 的独立部分。 SegWit 对数据赋予不同权重:一个基础字节计为 4 个 weight 单位,一个 witness 数据字节计为 1。BIP141 将 vsize 定义为 weight 除以 4 后向上取整。因此,虚拟大小可能不同于文件的字节数。钱包和节点接收交易的本地规则还可能考虑其他限制;不要只凭下载文件的长度来计算费率。 [2] [6]
节点是验证和转发比特币数据的程序,其 Mempool 保存已接收、等待确认的交易。如果一笔交易花费另一笔交易的输出,花费它的那笔称为子交易,前一笔称为父交易。矿工自行选择要纳入哪些有效交易。有限空间带来的手续费收入是重要动机,但费率本身不是排队号。对于有依赖关系的交易,可能会一起评估祖先与后代的收益:高费率子交易可以帮助低费率父交易。不同节点看到的 Mempool 也未必完全一样。 [8]
节点可以拒绝转发低费率交易,也可以在拥挤时将其移除。这是本地策略,而不是整个比特币统一的收费表。手续费低本身不会使交易在区块中无效。getmempoolinfo 的 mempoolminfee 描述当前本地门槛,不保证其他节点接收,也不保证矿工打包。 [5] [2] [9]
估算将观察到的交易及确认情况,与用户希望等待的区块数联系起来。Bitcoin Core 的 estimatesmartfee 提供 economical 和 conservative 模式,采用不同时间范围。新交易的到来与区块的发现仍然不确定。观察不足时,节点可能返回错误而不是估值。缺少数据不代表零费用,几个区块的目标也不是固定分钟数的期限。 [4]
Bitcoin Core 29.0 的 estimatesmartfee 返回 BTC/kvB,许多钱包却显示 sat/vB。0.00020 BTC/kvB 等于 20 sat/vB,不能保留同一个数字而只换单位。decoderawtransaction 显示 size、vsize 和 weight;计算手续费还需要正在花费的先前输出金额。连接服务时,要核对具体字段的单位与接口版本。 [4] [6]
如果钱包和接收节点的策略支持,RBF (Replace-by-Fee) 可以用手续费更高、与原交易冲突的版本替换符合条件的未确认交易。CPFP (Child Pays for Parent) 则花费待确认交易中的可用输出,提高父子交易的合计费率。两者都不是万能按钮:需要考虑可控制的输出、依赖关系和节点规则。签名时,更高的总手续费也不应成为意外。 [7] [8]
先明确什么时候需要确认,再比较当前估值、总费用和之后加费的可能性。也要留意由大量 UTXO 组成、异常庞大的交易。如果时间允许,可以等待更合适的条件,但费率不保证下降。查看交易的真实状态,不要仅因为原交易还在等待,就另发一笔独立转账。 [1] [4] [7]
要获得更完整的理解,请将本词条与以下词条结合阅读: Transaction Fees, Mempool, Replace-by-Fee (RBF), CPFP (Child Pays for Parent). 反向关联还来自: Change Address, 确认, Replace-by-Fee (RBF), CPFP (Child Pays for Parent).