第九章. 交易手续费

  • berry
  • 发布于 2025-02-09 20:11
  • 阅读 8

第九章. 交易手续费

综合介绍

我们在第8章中看到的Alice创建的数字签名只证明她知道自己的私钥,并且她承诺了一笔向Bob支付的交易。她可以创建另一个签名,该签名承诺了一笔向Carol支付的交易——即使用相同的输出(比特币)来支付Bob的交易。现在,这两笔交易是冲突的交易,因为只有一笔交易可以花费特定的输出,才能包含在具有最多工作量证明的有效区块链中——全节点用于确定哪些密钥控制哪些比特币的区块链。

为了保护自己免受冲突交易的影响,对Bob来说,他最好在Alice的交易被确认到足够深度的区块链中之前等待一段时间,然后再考虑他收到的钱是否可以花费(请参阅第14页的“确认”)。要将Alice的交易包含在区块链中,它必须被包含在一个交易块中。在一定时间内会产生有限数量的区块,并且每个区块只有有限的空间。只有创建该区块的矿工才能选择包含哪些交易。矿工可以按照任何他们想要的标准选择交易,包括拒绝包含任何交易。

注意:在本章中,当我们提到“交易”时,我们指的是除了第一个交易之外的每个交易。在一个区块中的第一个交易是一个coinbase交易,它在第139页的“Coinbase交易”中有描述,允许该区块的矿工收取他们为产生该区块而获得的奖励。与其他交易不同,coinbase交易不花费前一笔交易的输出,并且还是适用于其他交易的几项规则的例外情况。Coinbase交易不支付交易费用,不需要调整费用,不受交易固定的影响,并且在讨论费用的后续讨论中主要没有意义,因此在本章中我们将忽略它们。

几乎所有矿工选择交易包含在其区块中的标准是最大化他们的收入。比特币专门设计了一个机制来实现这一点,允许一笔交易向将该交易包含在区块中的矿工支付费用。我们称这种机制为交易费用,尽管它并不是通常意义上的费用。它不是由协议或任何特定的矿工设定的金额,而更像是拍卖中的出价。所购买的商品是区块中交易将消耗的有限空间的部分。矿工选择那些出价将使他们获得最大收入的交易集合。

在本章中,我们将探讨这些出价——交易费用的各个方面,以及它们如何影响比特币交易的创建和管理。

谁支付交易费用?

大多数支付系统都涉及一定的交易费用,但通常这种费用对于普通购买者来说是隐藏的。例如,一个商家可能会以相同的价格宣传同一件商品,无论你使用现金还是信用卡支付,尽管他们的支付处理器可能会对信用交易收取更高的费用,而他们的银行对现金存款收取的费用则较低。

在比特币中,每笔比特币的支出都必须经过身份验证(通常是通过签名),因此没有支付者的许可,交易是无法支付费用的。接收交易的人可以在不同的交易中支付费用,我们将在后面看到这种用法,但如果我们希望单个交易支付自己的费用,那么费用需要由支付者协商同意。它不能被隐藏。

比特币交易的设计是,支付者承诺支付的费用不需要在交易中额外占用空间。这意味着,尽管可以在不同的交易中支付费用,但在单个交易中支付费用是最有效(也是最便宜)的。

在比特币中,费用是一个竞价,支付的金额有助于确定交易需要多长时间才能确认。支付者和接收者通常都希望支付迅速确认,因此通常只允许支付者选择费用有时可能会成为问题;我们将在“父级支付子级费用(CPFP)提高费率”中解决这个问题。然而,在许多常见的支付流程中,希望交易迅速确认的最强烈的一方,即最愿意支付更高费用的一方,通常是支付者。

\ 出于技术和实际的原因,比特币中的惯例是由支付者支付交易费用。当然也有例外情况,比如接受未确认交易的商家,以及在签名后不立即广播交易的协议(这样做会阻止支付者选择适当的市场费用)。我们稍后会探讨这些例外情况。

手续费和费率

每个交易只支付一笔费用,不管交易的大小如何。然而,随着交易规模的增大,矿工能够容纳的交易数量就越少。因此,矿工评估交易的方式与你在市场上比较几种相同的物品的方式类似:他们将价格除以数量。

就像你可能会将几种不同袋装大米的成本除以每袋的重量来找到最低价格/重量(最佳交易)一样,矿工将交易的费用除以其大小(也称为其重量)来找到每个单位重量的最高费用(最大收益)。在比特币中,我们使用费率来表示交易的大小除以重量。

由于比特币多年来的变化,费率可以用不同的单位表示:

  • BTC/字节(一个很少再使用的传统单位)
  • BTC/千字节(一个很少再使用的传统单位)
  • BTC/V字节(很少使用)
  • BTC/千V字节(主要在比特币核心中使用)
  • Satoshi/V字节(今天最常用的单位)
  • Satoshi/权重(今天也经常使用)

特别注意:在接受费率输入时要小心。如果用户将一个以一种分母打印的费率复制并粘贴到使用另一种分母的字段中,他们可能会支付过高的费用1000倍。如果他们改变分子,理论上可能会支付过高100,000,000倍。钱包应该让用户很难支付过高的费率,并可能希望提示用户确认任何不是由钱包本身使用可信数据源生成的费率。

过高的费用,也称为荒谬的费用,是任何远高于费率估算器目前认为必要的费用来确保交易在下一个区块中得到确认的费率。请注意,钱包不应完全阻止用户选择过高的费率 - 它们只应该让意外选择这种费率变得困难。用户在偶尔情况下过度支付费用存在合理的原因。

确定合适的费率估算

我们已经确定,如果你愿意等待更长的时间来确认你的交易,你可以支付较低的费率,但要注意支付过低的费率可能导致你的交易永远无法确认。由于费率是对区块空间的一个开放拍卖的出价,所以无法完全预测你需要支付多少费率才能在特定时间内确认你的交易。然而,我们可以根据最近其他交易所支付的费率来生成一个粗略的估算。

一个完整的节点可以记录每个交易的三个信息:它首次收到该交易的时间(区块高度)、该交易被确认的区块高度以及该交易支付的费率。通过将到达时间相似、确认时间相似且支付费率相似的交易分组在一起,我们可以计算确认支付某一费率的交易需要多少个区块。然后,我们可以假设现在支付类似费率的交易将需要相似数量的区块来确认。Bitcoin Core包含一个使用这些原理的费率估算器,可以使用estimatesmartfee RPC调用,参数指定在交易高度高度可能确认之前你愿意等待多少个区块(例如,144个区块约为1天):

$ bitcoin-cli -named estimatesmartfee conf_target=144
{
 "feerate": 0.00006570,
 "blocks": 144
}

许多基于网络的服务也提供作为API的费率估算。当前列表请参见https://oreil.ly/TB6IN。

如前所述,费率估算永远不可能完美无缺。一个常见的问题是基本需求可能会发生变化,调整均衡点,将价格(费用)提高到新的高度,或者将其降低到最低水平。如果费率下降,那么以前支付正常费率的交易现在可能支付较高的费率,并且将比预期更早地得到确认。对于你已经发送的交易,无法降低费率,因此你将被困在支付更高费率的情况下。但是,当费率上升时,有必要采取方法来增加这些交易的费率,这称为费率提升。比特币中常用的两种费率提升方法是替换交易(RBF)和子付费(CPFP)。

替换交易(RBF)费率提升

使用RBF(Replace by fee)费率提升增加交易费率的方法是创建一个支付更高费用的冲突版本的交易。如果两个或更多交易之间存在冲突,那么它们被认为是冲突的交易,因为只有其中一个可以包含在有效的区块链中,迫使矿工只能选择其中一个。冲突发生在两个或更多交易尝试花费相同UTXO的情况下,即它们各自包含具有相同输出点的输入(引用先前交易的输出)。

为了防止某人通过创建无限数量的冲突交易并将它们通过中继全节点网络发送来消耗大量带宽,比特币核心和其他支持交易替换的全节点要求每个替换交易支付的费率都比被替换的交易更高。比特币核心目前还要求替换交易支付的总费用高于原始交易,但这个要求产生了不良的副作用,开发人员正在寻找在撰写本文时删除它的方法。

比特币核心目前支持两种RBF的变体:

选择性RBF

一个未经确认的交易可以向矿工和全节点发出信号,表明交易的创建者希望允许它被更高费率的版本替换。这个信号和使用它的规则在BIP125中指定。截至目前,这已经在比特币核心中默认启用了数年。

完全RBF

任何未经确认的交易都可以被更高费率的版本替换。截至目前,此功能可以选择在比特币核心中启用(但默认情况下是禁用的)。

为什么有两种不同的RBF

有两种不同版本的RBF的原因是,完全RBF一直存在争议。比特币的早期版本允许交易替换,但这种行为在几个版本中被禁用。在那段时间里,使用现在称为比特币核心的软件的矿工或全节点不会用任何不同版本替换他们收到的未确认交易的第一个版本。一些商家开始期望这种行为:他们假设任何支付适当费率的有效未确认交易最终都会成为已确认的交易,因此他们在收到这样的未确认交易后不久提供他们的商品或服务。

然而,比特币协议无法保证任何未确认的交易最终都会被确认。正如本章前面提到的,每个矿工都可以自行选择要尝试确认的交易,包括这些交易的哪个版本。比特币核心是开源软件,因此任何拥有其源代码副本的人都可以添加(或删除)交易替换功能。即使比特币核心不是开源的,比特币也是一个开放的协议,可以由足够有能力的程序员从零开始重新实现,从而允许重新实现者包含或不包含交易替换功能。

交易替换打破了一些商家的假设,即每个合理的未确认交易最终都会被确认。交易的另一个版本可以支付与原始版本相同的输出,但不需要支付任何输出。如果未确认交易的第一个版本支付给了商家,而第二个版本可能没有支付给他们。如果商家基于第一个版本提供了商品或服务,但第二个版本得到了确认,那么商家将无法收回成本。

一些商家和支持他们的人请求不要重新启用比特币核心中的交易替换功能。其他人指出,交易替换提供了一些好处,包括能够对最初支付过低费率的交易进行费用增加。

最终,致力于比特币核心开发的开发人员实施了一项妥协:不是允许每个未确认的交易都被替换(全面RBF),而是只编程比特币核心允许那些表示希望允许替换的交易被替换(Opt-in RBF)。商家可以检查他们收到的交易是否有Opt-in信号,并将这些交易与没有信号的交易区别对待。

这并不改变基本的担忧:任何人仍然可以更改他们的比特币核心副本,或创建一个重新实现,以允许全面RBF,并且一些开发人员甚至做到了这一点,但似乎很少有人使用他们的软件。

几年后,致力于比特币核心的开发人员稍微改变了妥协。除了默认保留Opt-in RBF外,他们添加了一个选项,允许用户启用全面RBF。如果足够多的挖矿算力和传播全节点启用了此选项,则任何未确认的交易最终都可以被支付更高费率的版本替换。截至目前,尚不清楚是否已经发生了这种情况。

作为用户,如果你计划使用RBF费率提升,你首先需要选择一个支持该功能的钱包,比如列在https://oreil.ly/IhMzx上具有“发送支持”的钱包之一。

作为开发者,如果你计划实现RBF费率提升,你首先需要决定是执行选择加入RBF还是全面RBF。在撰写本文时,选择加入RBF是确保有效的唯一方法。即使全面RBF变得可靠,也可能有几年时间,加入RBF交易的替代版本得到的确认速度会略快于全面RBF替代版本。如果选择加入RBF,你的钱包需要实现BIP125中指定的信号,这是对交易中任意一个序列字段的简单修改。如果选择全面RBF,你无需在交易中包含任何信号。除此之外,与RBF相关的其他事项对这两种方法都是相同的。

当你需要提升费率时,你只需创建一个新交易,该交易至少花费与你要替换的原始交易相同的一个或多个UTXO。你可能希望保留支付接收者(或接收者)的相同输出。你可以通过减少找零输出的价值或向交易中添加额外的输入来支付增加的费用。开发者应该为用户提供一个费率提升界面,让用户只需提供(或建议)需要增加的费率即可完成所有工作。

在创建同一交易的多个替代版本时要非常小心。你必须确保所有版本的交易都相互冲突。如果它们不是全部冲突,那么可能会有多个独立的交易得到确认,导致你向接收方支付过多费用。例如:

  • 交易版本0包括输入A。
  • 交易版本1包括输入A和B(例如,你必须添加输入B以支付额外的费用)。
  • 交易版本2包括输入B和C(例如,你必须添加输入C以支付额外的费用,但C足够大,以至于你不再需要输入A)。

在这种情况下,任何保存了交易版本0的矿工都可以确认它和交易版本2。如果两个版本都支付给了相同的接收方,他们将被支付两次(矿工将从两个独立的交易中获得交易费用)。

避免这个问题的简单方法是确保替代交易始终包括与之前版本的交易相同的所有输入。

RBF费率调整与其他类型的费率调整相比的优势在于它可以非常有效地利用区块空间。通常,替代交易与其替代的交易大小相同。即使它更大,它通常也与用户在第一次创建交易时如果按照增加的费率支付所创建的交易大小相同。

\ RBF费率调整的根本劣势在于,通常只能由交易的创建者执行——即为交易提供签名或其他认证数据的人或团队。一个例外是设计允许通过使用签名哈希标志(参见“签名哈希类型(SIGHASH)”页)添加额外输入的交易,但这也带来了自己的挑战。一般来说,如果你是未确认交易的接收者,想要使其更快确认(或者根本确认),则不能使用RBF费率调整;你需要其他的方法。

RBF还存在其他问题,我们将在“交易固定”中探讨。

子支付父(Child Pays for Parent,CPFP)费率调整

任何收到未确认交易输出的人都可以通过消费该输出来激励矿工确认该交易。你想要确认的交易称为父交易。花费父交易输出的交易称为子交易。

正如我们在“输出点(Outpoint)”中学到的那样,确认的每个输入都必须引用区块链中较早的交易的未使用输出(无论是同一个区块中还是之前的区块)。这意味着希望确认子交易的矿工必须确保其父交易也被确认。如果父交易尚未被确认,但子交易支付的费用足够高,矿工可以考虑在同一个区块中确认它们是否会有利可图。

为了评估挖掘父交易和子交易的盈利性,矿工将它们视为一个包含有总大小和总费用的交易包,从中可以将费用除以大小以计算包费率。然后,矿工可以按照费率对他们知道的所有单个交易和交易包进行排序,并将收益最高的交易包含在他们尝试挖掘的区块中,直到达到允许包含在一个区块中的最大大小(权重)。为了找到更多可能有利可图的包,矿工可以评估跨多个代的包(例如,将未确认的父交易与其子交易和孙子交易相结合)。这称为祖先费率挖掘。

Bitcoin Core多年来一直实现了祖先费率挖掘,据信,目前几乎所有矿工都在使用该功能。这意味着钱包可以使用此功能通过使用子交易支付其父交易(CPFP)来提高收到的交易的费率。

CPFP相对于RBF有几个优势。任何收到交易输出的人都可以使用CPFP,包括支付接收者和支付者(如果支付者包含了找零输出)。此外,它也不需要替换原始交易,这使得它对某些商家的影响较小。

与RBF相比,CPFP的主要劣势是通常使用更多的区块空间。在RBF中,费率提升交易通常与其替代交易大小相同。在CPFP中,费率提升会增加一个完整的单独交易。使用额外的区块空间需要支付超出费率提升成本之外的额外费用。

CPFP存在一些挑战,其中一些我们将在“交易固定”中探讨。我们特别需要提到的另一个问题是最小中继费率问题,这个问题通过包传递来解决。

交易包中继

比特币核心的早期版本没有对它们存储在内存池中的未确认交易数量设置任何限制(请参阅第244页的“内存池和孤块池”)。当然,无论是内存(RAM)还是磁盘空间,计算机都有物理限制——一个完整的节点无法存储无限数量的未确认交易。比特币核心的后续版本将内存池的大小限制在大约一天的交易量,仅存储具有最高费率的交易或交易包。

这对大多数情况都非常有效,但它会产生依赖性问题。为了计算交易包的费率,我们需要父交易和子交易——但如果父交易的费率不够高,它就不会保留在节点的内存池中。如果一个节点收到一个子交易而没有访问其父交易,它就无法对该交易进行任何操作。

解决这个问题的方法是将交易作为一个整体进行中继,称为交易包中继,这样接收节点就可以在对任何单个交易进行操作之前评估整个包的费率。截至目前,致力于比特币核心的开发人员在实施事务包中继方面取得了显著进展,而且在本书出版时可能会提供一个有限的早期版本。

交易包中继对于基于时间敏感的预签名交易协议特别重要,例如闪电网络(LN)。在非合作情况下,一些预签名交易无法使用RBF进行费率提升,因此它们必须依赖CPFP。在这些协议中,一些交易可能也会在需要广播之前很长时间被创建,从而有效地无法估计适当的费率。如果一个预签名交易的费率低于进入节点内存池所需的金额,那么就无法通过子交易对其进行费率提升。如果这阻止了交易及时确认,一个诚实的用户可能会损失金钱。交易包中继是解决这个关键问题的解决方案。

交易固定

虽然我们描述的基本情况下RBF和CPFP费率提升都能正常工作,但与这两种方法相关的规则旨在防止对矿工和中继完整节点的拒绝服务攻击。这些规则的一个不幸副作用是它们有时会阻止某人能够使用费率提升。使得无法或难以对交易进行费率提升被称为交易固定

一个主要的拒绝服务问题围绕着交易关系的影响。每当交易的输出被花费时,该交易的标识符(txid)将被子交易引用。然而,当一个交易被替换时,替换交易具有不同的txid。如果替换交易得到确认,则其后代不能包含在同一区块链中。重新创建和重新签名后代交易是可能的,但这并不保证会发生。这对RBF和CPFP有相关但不同的影响:

  • 在RBF的情况下,当比特币核心接受替换交易时,通过忘记原始交易及所有依赖于该原始交易的后代交易,简化了事务处理。为了确保矿工接受替换交易更加有利可图,比特币核心只有在替换交易支付的费用高于将被遗忘的所有交易的费用时才接受替换交易。这种方法的缺点是,Alice可以创建一个支付给Bob的小交易。然后Bob可以使用他的输出来创建一个大的子交易。如果Alice想要替换她的原始交易,她需要支付的费用要比她和Bob最初支付的费用都要高。例如,如果Alice的原始交易大约为100个vbytes,Bob的交易大约为100,000个vbytes,并且他们都使用相同的费率,那么Alice现在需要支付比她最初支付的费用多1000多倍才能通过RBF提升她的交易费率。
  • 在CPFP的情况下,每当节点考虑将一个事务包含在一个区块中时,它必须从它想要考虑的任何其他事务包中移除该事务包中的交易。例如,如果一个子交易支付给25个祖先,并且每个祖先有25个其他子代,那么在区块中包含该事务包需要更新大约625个事务包(25的平方)。类似地,如果从节点的内存池中移除一个具有25个后代的交易(例如被包含在一个区块中),并且每个后代都有25个其他祖先,则需要更新另外625个事务包。每次我们将参数加倍(例如,从25增加到50),我们的节点需要执行的工作量就增加了四倍。

此外,如果某个交易及其所有后代的替代版本被挖掘出来,将这个交易及其后代长期保留在内存池中是没有用的——除非发生罕见的区块链重新组织,否则这些交易都无法被确认。比特币核心将从其内存池中删除每个无法在当前区块链上确认的交易。在最坏的情况下,这可能会浪费大量节点的带宽,并可能被用来阻止交易正确传播。

为了防止这些问题以及其他相关问题,比特币核心限制了父交易在其内存池中最多具有25个 祖先或后代,并将所有这些交易的总大小限制为100,000 vbytes。这种方法的缺点是,如果一个交易已经有太多的后代(或者它及其后代太大),用户将无法创建CPFP费率提升。

\ 交易固定可能是意外发生的,但它也代表了诸如LN等多方时间敏感协议的严重漏洞。如果你的交易对手可以通过截止日期阻止你的某个交易确认,他们可能会从你那里窃取钱财。

协议开发人员多年来一直致力于减轻交易固定问题。其中一个部分解决方案在第213页的“CPFP Carve Out and Anchor Outputs”中描述。还提出了几种其他解决方案,截至目前,至少有一个解决方案正在积极开发中——短暂锚点。

CPFP削减和锚定输出

在2018年,LN的开发人员遇到了一个问题。他们的协议使用需要两个不同方的签名的交易。双方都不愿意信任对方,因此他们在协议中不需要信任的点上签署交易,允许他们两者之一在以后的某个时间广播其中一个交易,而另一方可能不想要(或无法)履行其义务。这种方法的问题在于,这些交易可能需要在未来的某个不确定的时间广播,超出了任何合理的能力来估算这些交易的适当费率。

理论上,开发人员可以设计他们的交易以允许使用RBF(使用特殊的sighash标志)或CPFP进行费率提升,但这两种协议都容易受到交易固定的影响。鉴于所涉及的交易是时间敏感的,允许交易对手使用交易固定来延迟交易确认很容易导致一种可重复利用的利用方法,恶意方可能会用来从诚实方那里窃取钱财。

LN开发人员Matt Corallo提出了一个解决方案:给予CPFP费率提升规则一个特殊的例外,称为CPFP削减。CPFP的正常规则禁止在以下情况下包含额外的后代:如果这将导致一个父事务有26个或更多的后代,或者如果这将导致一个父事务及其所有后代总共超过100,000个vbytes。根据CPFP削减的规则,即使这将超出其他限制,也可以将大小不超过1,000个vbytes的单个额外交易添加到一个包中,只要它是一个没有未确认祖先的未确认交易的直接后代。

例如,Bob和Mallory共同签署了一个具有两个输出的交易,一个输出分别给他们两个人。Mallory广播了该交易,并使用她的输出附加了25个子交易或等于100,000个vbytes大小的任何较小数量的子交易。如果没有削减,Bob将无法为他的输出附加另一个子交易以进行CPFP费率提升。有了削减,只要他的子交易的大小不超过1,000个vbytes(这应该是足够的空间),他就可以花费交易中的两个输出之一,即属于他的输出。

不允许多次使用CPFP削减,因此它只适用于双方协议。已经有提议将其扩展到涉及更多参与者的协议,但对此并没有太多的需求,开发人员正在专注于构建更通用的解决方案来对抗交易固定攻击。

截至目前,大多数流行的LN实现使用一种称为锚定输出的交易模板,该模板设计用于与CPFP削减一起使用。

将费用添加到交易中

交易的数据结构没有专门用于费用的字段。相反,费用被暗示为输入总和与输出总和之间的差异。在所有输出从所有输入中扣除后剩余的任何额外金额都是由矿工收取的费用:

Fees = Sum(Inputs) - Sum(Outputs)

这是交易中一个有些令人困惑的元素,也是一个重要的要点要理解,因为如果你正在构建自己的交易,你必须确保不会因为未花费的输入而意外地包含一个非常大的费用。这意味着你必须考虑所有的输入,必要时通过创建找零来补足,否则你最终会给矿工一个非常大的小费!

例如,如果你花费一个20比特币的UTXO来进行1比特币的支付,你必须包括一个19比特币的找零输出返回到你的钱包。否则,这19比特币的“剩余”将被计为交易费用,并将由挖掘你交易的矿工在区块中收取。尽管你将获得优先处理并使矿工非常高兴,但这可能不是你的初衷。

特别注意:如果你在手动构建的交易中忘记添加找零输出,你将支付找零作为交易费用。“找零请收下!”可能不是你的初衷。

时间锁对抗费用抢夺

费用抢夺是一种理论上的攻击场景,其中矿工试图重写过去的区块,从未来的区块“抢夺”高费用的交易,以最大化他们的盈利能力。

例如,假设现存最高的区块是第100,000号区块。如果一些矿工不是尝试挖掘第100,001号区块以延长链条,而是试图重新挖掘第100,000号区块。这些矿工可以选择在他们的候选区块#100,000中包括任何尚未被挖掘的有效交易。他们不必重新挖掘包含相同交易的区块。事实上,他们有动机选择在他们的区块中包含最赚钱的(每千字节最高费用)交易。他们可以包括任何在“旧”区块#100,000中的交易,以及当前内存池中的任何交易。实际上,他们在重新创建区块#100,000时可以将交易从“现在”拉到“过去”。

今天,这种攻击并不是非常有利可图,因为区块补贴远高于每个区块的总费用。但在将来的某个时候,交易费用将成为奖励的主要部分(甚至全部)。到那时,这种情况将不可避免地发生。

一些钱包通过创建具有锁定时间的交易来阻止费用抢夺,限制这些交易只能被包含在下一个区块或任何之后的区块中。在我们的情景中,我们的钱包会在它创建的任何交易上将锁定时间设置为100,001。在正常情况下,这个锁定时间没有任何效果——交易无论如何只能被包含在第100,001号区块中;它是下一个区块。

但在重新组织攻击下,矿工将无法从内存池中拉取高费用的交易,因为所有这些交易都将被时间锁定到第100,001号区块。他们只能重新挖掘第100,000号区块,使用当时有效的任何交易,实际上没有获得新的费用。

这并不能完全阻止费用抢夺,但它确实在某些情况下降低了其盈利能力,并有助于在区块补贴减少时保持比特币网络的稳定性。我们建议所有钱包在不影响锁定时间字段的其他用途时,实施反费用抢夺功能。

随着比特币不断成熟,以及补贴持续下降,费用对比特币用户变得越来越重要,无论是在他们的日常使用中快速确认交易,还是为矿工提供继续用新的工作量证明保护比特币交易的激励。

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论