比特币签名负载——部分 UTXO 签名难度更大的原因分析

新手Dec 27, 2023
本文探讨了 UTXO(未花费交易输出)的使用以及签名大小对交易费用的影响。
比特币签名负载——部分 UTXO 签名难度更大的原因分析

什么是 UTXO 签名负载?

我们知道使用过多 UTXO 签署交易可能会导致设备故障,但这个说法给我们抛出了一些问题:是否存在一个确定的 UTXO 数量会导致硬件钱包在签名时失败?某些 UTXO 会比其他 UTXO 更难处理吗?

在研究这些问题的答案时,我发现硬件钱包签署交易所需的时间和精力并不仅仅取决于发送的 UTXO 的数量以及接收地址的数量。它还取决于产生每个 UTXO 的先前交易的类似细节,我将这一现象称为“签名负载”。我不知道是否有其他文章引用过这一概念。

换句话说,具有更大签名负载的 UTXO(下面将更详细地解释)可能比其他 UTXO 更难签名。尽管两个 UTXO 可能在区块链上使用相同数量的数据,但使用硬件钱包进行签名可能需要更多的处理能力。

这一事实不仅限于地址类型 和多重签名多数派人数;与同一地址(或等效地址,即使比特币金额和目标地址完全相同)上的另一个 UTXO 相比,采用2/3规则的多重签名地址上的一个 UTXO 需要花费更多的精力来签名。

为什么某些 UTXO 签名难度更大?

要理解为什么两个看似相似的 UTXO 的签名负载可能截然不同,您必须了解硬件钱包在没有互联网连接的情况下验证输入金额的迂回方法,以及在各种接收比特币到您钱包的方法中,交易复杂性可能不同。

输入金额安全检查

对于任何比特币交易,验证输入金额的重要性不言而喻;否则,您的大量比特币可能会意外支付给矿工。为什么呢?因为矿工收取的费用在交易中没有明确说明,而是通过从输入值中减去输出值来隐性计算的。因此,如果两个数字之间存在较大差异,矿工所取得的费用也将很高。

举个例子,如果你有总计 0.8 BTC 的 UTXO,并在某个地方发送了 0.3 BTC,如果你没有将剩余约 0.5 BTC 发送给自己,那么该区块的矿工可以将这 0.5 BTC 作为他们赚取的费用的一部分收取。

不过,不用担心!目前所有具有一定声望的比特币工具都包含自动安全机制,因此犯这个错误虽然有一定可能性,但会非常困难。这一过程其实很简单,只需搜索区块链以验证输入的数量,然后将其总数与所选输出的总和进行比较,以确定费用是否合理。

当然,硬件钱包的设计目的是独立于互联网运行。如果没有互联网或节点连接,就无法观察到区块链。因此,大多数硬件钱包必须使用替代的迂回方法来验证输入金额。本质上,设备不仅需要导入描述它将要签署的交易的信息,还必须导入每个输入来源的历史记录。

换句话说,对于每个被移动的 UTXO,设备将需要直接检查前面的交易细节,这导致了该 UTXO 的创建。如果该交易很复杂,则将涉及导入更多数据,这将反映在类似 PSBT(部分签名的比特币交易)文件大小的东西中。我们来看看交易的复杂性。

相同来源的交易复杂性

大多数人通过以下三种方式将比特币存入钱包:交易所、矿池或直接通过点对点 (P2P) 交易中的另一个人。点对点交易通常包含非常低的复杂性,并且生成的 UTXO 的签名量相对较小。

然而,交易所和矿池倾向于批量分发资金,在同一笔交易中一次性将比特币发送给许多人。这些交易更加复杂,并且产生的 UTXO 将具有更大的签名负载。

我调查了美国几个流行的矿池和交易所的分发倾向,并将调查结果汇总成下表。输出数量表示在每次分发中通常会发送比特币的人数。数字越大意味着交易越复杂,接收者的签名负载负担也越大。

这些数字是撰写本文时的近似值,可能会根据每个矿池或交易所未来执行分发的方式而发生变化。

请注意,矿池的分发通常比交易所大,并且某些矿池(例如F2Pool)使用的分发非常大。因此,如果您直接从 F2Pool 支付中收到 UTXO,则该 UTXO 更有可能导致某些硬件钱包出现签名困难。

关于隔离见证和 BIP 143 漏洞的说明

2017 年发生了隔离见证软分叉,隔离见证交易的签名过程发生了变化。引入了一项要求,即在用户通过签名提交的数据中包含输入金额。因此,人们相信,任何欺骗用户或设备,让其不经意地以高得离谱的费用签署交易的企图都将被阻止。大多数硬件钱包制造商都采取了相应行动,取消了输入金额安全检查并简化了隔离见证交易的签名流程。

然而,在 2020 年中期,在 BIP 143 中发现了一个漏洞,促使许多硬件钱包制造商重新引入隔离见证交易的输入金额安全检查。截至撰文时,输入金额安全检查仍然是硬件钱包签名期间的正常过程。社区中存在一些关于未来变化的讨论,这些变化可以更有效地消除输入金额安全检查的需要,例如在每笔交易中收取明确费用,而不是隐含费用。

签名负载对我有何影响?

签名负载的变化意味着,当你尝试从自托管冷钱包中提取比特币时,你首次获取比特币的方式存在一定的相关性。在批准转账时,您用于获取比特币的方法可能会产生差异。

预测和应对签名失败

如果你持有的 UTXO 是从你控制的不同钱包转移过来的,或者是从点对点交易中收到的,那么这笔交易很可能是相对简单的。该 UTXO 将具有较小的签名负载,在未来的花费过程中更容易签名。如果你直接从一个矿池中获得了 UTXO,尤其是一个进行非常大额分配的挖矿池(如先前图表所示),这个 UTXO 可能会更难签名。

幸运的是,如果你的硬件钱包因为你试图同时移动太多高负载的 UTXO 而无法签名,这并不意味着你的比特币被永久困住。一个快速而简单的解决方案是将你的交易分成多笔,将你的比特币分成多个部分进行转移。每个部分将只包含一部分数据,你的设备更有可能成功签名。

另一个策略是通过控制你持有的 UTXO 数量以及这些 UTXO 的签名负载来预防签名失败。虽然你无法改变矿池和交易所分配资金的方式,但必须记住,UTXO 的签名负载是由其前一笔交易决定的,而不是之前的任何交易历史。也就是说,你可以从矿池接收 UTXO 并立即将其转移到你控制的另一个钱包或地址,就像点对点交易。新地址生成的 UTXO 将具有较小的签名负载。

签名负载不会影响交易费

需要强调的是,签名负载只会影响硬件钱包签署交易所需的时间和精力,而不影响你将支付的网络费用。这是因为签名负载只在签名过程中相关,并不会导致你的交易在区块链上占用更多数据。

这意味着,如果你从像 F2Pool 这样的挖矿池接收比特币,你不一定会支付更多的交易费。同样地,选择使用更少输出进行分发的服务也不会降低你的交易费用。

声明:

  1. 本文转载自[unchained],著作权归属原作者[Tom Honzik],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!
立即註冊