作者:Gloria Zhao
来源:https://bitcoinops.org/zh/newsletters/2023/06/07/
本文为 Gloria Zhao 在 Optech Newsletter 上编写的 “交易池” 系列周刊的第四篇。
上周,我们探讨了在给定费率的情况下,最小化交易手续费的技巧。但是,费率应该是多少呢?理想情况下,它应该尽可能低(为了省钱),同时又高到足以保证交易在适合用户时间偏好的区块中获得一个位置。
费(率)估算 的目标是将目标的确认时间转化为交易应支付的最低费率。
费率估算的一个复杂之处在于区块空间产生的不规则性。假设一个用户需要在一小时内支付给商家,以收到商品。用户可能期望每 10 分钟挖出一个区块,因此目标是在接下来的 6 个区块中找到一个位置。然而,完全有可能一个区块需要 45 分钟才能被挖出。费率估算器必须在用户期望的紧急程度或者时间窗口(类似于“我希望在工作日结束之前确认这笔交易”)和区块空间供应(一定数量的区块)之间进行换算。许多费用估算器通过将确认目标以区块数量和时间的形式表示来解决这个挑战。
如果没有正在等待确认的交易的信息,人们可以依据历史数据中的交易费率通常范围,来构建一个简单的费用估算器。由于这样的估算器没有考虑交易池中待确认的交易,在区块空间需求出现意外波动和偶尔的长区块间隔时,它会变得非常不准确。它的另一个弱点是它完全依赖矿工所控制的信息,矿工可以通过在他们的区块中包含虚假的高费率交易来推高(估算)费率。
幸运的是,区块空间的市场并不是盲目的拍卖。我们在第一篇文章中提到,保留交易池并参与点对点交易中继网络允许节点查看用户的出价。Bitcoin Core 费用估算器还使用历史数据来计算交易在 n
个区块内以费率 f
确认的可能性,但具体跟踪节点首次看到交易的高度以及交易确认的时间。这种方法通过忽略公共费用市场之外发生的活动来解决它。如果矿工在自己的区块中人为地包含高费率交易,则该费用估算器不会出现偏差,因为它仅使用在确认之前被公开转发的交易的数据。
我们还深入了解了为区块选择交易的方式。在上一篇文章中,我们提到节点模拟矿工策略,以便在其交易池中保留激励兼容的交易。扩展这个想法,我们可以构建一个费用估算器来模拟矿工会做什么,而不是只查看过去的数据。为了找出交易在接下来的 n
个区块中得到确认所需要的费率,费用估算器可以使用区块组装算法从其交易池中预测接下来的 n
个区块模板,并计算出击败费率最低的一笔交易、从而可以进入到区块 n
中的费率。
显然,该费用估算器方法的有效性取决于其交易池内容与矿工内容之间的相似性,而这一点永远无法得到保证。它还忽视了矿工由于外部动机而可能包含的交易,例如,矿工自己的交易、在系统外给矿工支付费用的交易。预测还必须考虑从现在到预测区块被挖出之间的额外交易广播。可以通过减少其预计区块的大小,来容纳其它交易所带来的影响 —— 但减少多少呢?
这个问题再次凸显了历史数据的效用。智能模型可能能够整合活动模式并考虑影响费率的外部事件,例如典型的营业时间、公司定期的 UTXO 合并以及针对比特币交易价格变化的活动。预测区块空间需求的问题仍然有待探索,并且可能永远有创新的空间。
费用估计是一个多方面且困难的问题。糟糕的费用估计可能会超付费用(也即浪费资金)、增加比特币在支付方面的摩擦,并导致 L2 用户因错过一个时间锁定的 UTXO 的备用花费路径而损失资金。良好的费用估计可以让用户清楚而准确地向矿工传达交易的紧急程度,而 CPFP 和 RBF 允许用户在初始估计不足时更新出价。与良好设计的费用估计工具和钱包相结合的激励兼容的交易池策略,使用户能够参与高效的公共拍卖以获取区块空间。
费用估算器通常不会返回低于 1sat/vB 的任何值,无论时间范围有多长,待确认的交易有多少。许多人认为 1sat/vB 是事实上的最低费率。这是因为在比特币网络中,网络上的大多数节点(包括矿工)从不接受低于该费率的任何交易,无论他们的交易池有多空。下周的文章将探讨这种节点策略以及利用费率在交易中继中的另一个动机:防止资源耗尽。