Colorful digital artwork depicting Bitcoin

比特币交易如何运作:UTXO、签名、内存池和确认

By AI News Crypto Editorial Team9 min read

比特币交易的工作原理比大多数钱包用户界面看起来要简单:你花费旧的输出,创建新的输出,签名,广播,然后等待矿工确认。一旦你能想象这个流程,费用、延迟和“缺失余额”的时刻就不再神秘。

比特币交易是什么(通俗英语模型)

一个比特币交易不是从一个余额中减去并添加到另一个余额的“账户转账”。它是一个签名的数据消息,将特定比特币的控制权重新分配给新的所有者,由网络规则强制执行,并由任何运行节点的人验证。BTC.network将其描述为重新分配所有权的签名消息,而Bitcoin.com则将比特币本身视为转账历史,而不是坐在账户中的对象。

清晰的心理模型是:比特币跟踪可支配的价值块,而交易消耗其中的一些块并创建新的块。这就是为什么比特币白皮书通常被总结为一系列数字签名,以及为什么你可以使用区块浏览器检查每一笔交易。银行数据库内部没有“移动”。相反,网络更新共享记录,显示哪些输出是未花费的,以及谁可以下一个花费它们。

输入、输出和UTXO:构建块

每个比特币交易都是由输入和输出构建的。输入指向之前创建的仍然可支配的输出。输出定义新的可支配块和稍后花费它们所需的条件。多个来源汇聚在这个结构上:BTC.network、Bitcoin.com、OKX和Mt Pelerin都将交易描述为输入花费先前的输出并创建新的输出。

那些可支配的先前输出被称为UTXO,意为未花费交易输出。Kraken解释说,UTXO模型是比特币用来跟踪余额在钱包之间移动的技术,OKX和Mt Pelerin都强调钱包扫描区块链或UTXO集合以找到可支配的输出。从实际角度来看,你的钱包“余额”只是它可以解锁的UTXO的总和。

让新用户困惑的部分是,UTXO通常是完全花费的。你通常不会花费“半个”UTXO。如果你的输入总和超过你想支付的金额,交易会创建一个找零输出返回到你控制的地址。BTC.network、Kraken、OKX和Mt Pelerin都描述了这种完全花费行为和随之而来的找零输出。

一个具体的例子与链上看到的匹配。如果你控制一个0.05 BTC的UTXO,并且你想支付0.03 BTC,你的钱包可能会将整个0.05 BTC作为输入,创建一个0.03 BTC的输出给收件人,并创建一个第二个输出返回给你作为找零,减去费用。BTC.network详细说明了这个确切的模式,而Bitcoin.com和Mt Pelerin用不同的数字描述了相同的“现金找零”行为。

一个特殊的情况对于理解比特币的来源很重要。Kraken指出,唯一没有输入的交易类型是coinbase交易,它是区块中的第一笔交易,也是新铸造的比特币作为挖矿奖励创建的地方。

签名:网络如何知道你被允许花费

输入不仅仅是指针。它们还携带解锁数据,证明你被授权花费所引用的UTXO。该授权是加密的。

当你“拥有”比特币时,你真正控制的是可以为输出的花费条件生成有效数字签名的私钥。Bitcoin.com、OKX、Mt Pelerin、BTC.network和LearnMeABitcoin都描述了这种公钥加密设置:私钥用于签名,其他人可以使用相应的公钥信息验证签名。

有两个实际后果。

首先,签名在没有私钥的情况下是无法伪造的。BTC.network和OKX都强调,网络可以验证你被允许花费,而不需要你透露私钥本身。

其次,签名绑定到交易数据。OKX解释说,如果在签名后交易细节被更改,签名将不再有效。LearnMeABitcoin将交易描述为“解锁和锁定”一批比特币的数据,其中解锁通常涉及从与输出锁定的公钥对应的私钥生成的签名。

这也是为什么比特币通常被描述为一系列数字签名。Bitcoin.com引用了白皮书对每次转账的描述,签署前一笔交易的引用和下一位所有者的公钥,创建一个可验证的所有权链。

广播、验证、内存池、挖矿、确认

一旦你的钱包构建了交易并签名,它会将签名的数据广播到点对点网络。BTC.network、Bitcoin.com、OKX和Mt Pelerin都描述了这个广播步骤以及接下来发生的事情。

节点不会盲目接受他们收到的内容。他们会验证。至少,他们会检查签名是否有效,引用的UTXO是否存在且未花费,输出是否不超过输入,以及交易是否遵循协议规则。BTC.network和Mt Pelerin明确描述了签名检查和双重花费预防作为节点验证的一部分。

有效的未确认交易位于内存池中,实际上是网络的共享等待室。Bitcoin.com、OKX、Mt Pelerin和BTC.network都使用相同的概念:交易传播,然后在内存池中等待,直到矿工将它们包含在内。

矿工然后从内存池中选择交易并将其包含在一个区块中。Bitcoin.com和OKX描述矿工通过工作量证明竞争以生成下一个区块,而Mt Pelerin指出,区块平均每10分钟被挖掘一次。OKX也表示同样的10分钟平均。

当你的交易被包含在网络接受的已挖掘区块中时,它获得第一次确认。每个额外的区块在其上构建,增加另一个确认,使得反转变得越来越困难。BTC.network、Bitcoin.com、OKX和Mt Pelerin都描述了确认随着每个新块的增加而累积,并提高安全性。

多少确认算作“最终”是约定,而不是物理。BTC.network表示,许多收件人将1-3个确认视为适中金额的足够,而交易所通常要求3-6个确认以进行更大存款。Bitcoin.com和OKX都描述了一种常见做法,即等待六个确认以减少在临时分叉期间的反转风险。对交易者来说,关键点是“最终性”是接收者选择的风险阈值,并且因场所而异。

费用和交易大小:为什么有些发送速度慢或昂贵

比特币费用不是你发送金额的百分比。它们是对稀缺区块空间的拍卖。

费用隐含在交易中:它是总输入值与总输出值之间的差额。BTC.network和Mt Pelerin直接描述了这一点,而OKX则解释费用是由交易大小驱动的,而不是比特币数量。

矿工按费用率优先,而不是绝对费用。BTC.network明确表示,矿工优先处理费用率最高的交易,通常以sat/vB(每虚拟字节的聪)报价。Mt Pelerin也使用sat/vB,并展示基本数学:费用率乘以交易大小决定总费用。

这就是UTXO管理成为现实世界成本驱动因素的地方。更多的输入和输出通常意味着更多的字节或虚拟字节,这意味着在相同的sat/vB下更高的总费用。BTC.network、Bitcoin.com、OKX和Mt Pelerin都将费用成本与交易大小联系在一起,BTC.network指出,在低费用期间合并小UTXO可以减少未来交易的大小。

这也解释了为什么两笔发送相同比特币金额的交易可能有非常不同的费用。一个钱包花费一个大UTXO可能会产生一个紧凑的交易。一个钱包花费许多小UTXO以达到相同金额则会产生一个更大的交易,并在相同费用率下支付更多。Bitcoin.com通过指出更多输入的交易占用更多区块空间并可能花费更多,直观地表达了这个想法,而Mt Pelerin通过将字节大小与消耗的UTXO数量联系起来提出了相同的观点。

当一笔交易“卡住”时,通常意味着它在内存池中停留,费用率对当前需求不具竞争力。协议不保证按时间包含。它保证矿工可以包含有效交易,并且矿工在区块空间稀缺时经济上有动力选择更高的费用率。

如何检查交易(以及其中的内容)

比特币设计上是透明的。在你发送后,你的钱包会显示TXID,这是交易的标识符。你可以将该TXID粘贴到区块浏览器中,以查看交易是未确认还是已确认,确认了多少次,支付了多少费用,以及确切使用了哪些输入和输出。OKX和Mt Pelerin都描述了使用TXID在区块浏览器中跟踪状态和细节。

如果你想更深入一步,原始交易有一个定义的字段结构。LearnMeABitcoin分解了标准布局,并突出交易者在调试时实际遇到的关键部分。输入使用交易ID(TXID)加输出索引(VOUT)引用先前的输出。输出指定金额和锁定脚本。SegWit交易添加了一个见证字段,携带输入的解锁数据,交易还包括版本和锁定时间等字段。你不需要记住字节级格式来使用比特币,但知道交易是结构化数据有助于你解释浏览器向你展示的内容。

实际收益很简单:当某些东西看起来不对时,你可以自己验证。如果你在发送后钱包余额“下降”,浏览器通常会显示一个找零输出返回给你,只有在确认后才能支配,正如Mt Pelerin所解释的。如果存款延迟,浏览器将显示它是否仍在内存池中以及提供了什么费用率,这通常是它等待的真正原因。

总结

我看到交易者浪费几个小时争论“慢比特币”,而链条正好在做它被设计要做的事情。比特币交易的工作原理是UTXO支出加签名加对区块空间的费用率出价。一旦你内化这一点,你就不再将确认视为魔法,而是将其视为随着每个区块收紧的概率结算。

唯一一个始终节省金钱和压力的习惯是考虑输入。如果你的钱包里充满了尘埃大小的UTXO,你就承担了未来费用风险,因为更多的输入通常意味着更多的虚拟字节和在相同的sat/vB下更高的总费用。BTC.network关于在低费用窗口期间合并的观点不是理论。这是基本交易机制在你的损益表中显现出来。

来源

Related reading

比特币交易原理:UTXO、签名、内存池