简介
加密货币的用户规模正在爆炸式增长,越来越多的人开始在日常生活中使用加密货币。尽管如此,很多用户可能根本不了解这些加密货币背后的原理,又或是对其知之甚少。然而,理解这些基本概念对于更顺畅的日常使用以及更完美的用户体验,是很有必要的。
在比特币和其他加密货币交易中,未花费的交易输出 (UTXO) 被用于指代个人所持有的比特币或其他币的价值。在比特币刚诞生的那几年,如果没有正确理解这个概念,交易往往会失败,甚至造成资金损失。好在后来有了分层确定性(HD)钱包,用户可以更放心地进行交易,而不必担忧背后算法的弯弯绕绕。
但作为比特币网络中的一个重要概念,还是有必要了解比特币UTXO的运作方式。本文将全方面介绍UTXO模式,等下次再看到这个词,你就不会是黑人问号脸了。
什么是UTXO?
未花费的交易输出 (UTXO) 指的是交易后的加密货币余量,可用于另一笔交易。它是上一笔区块链交易的输出值,但又可以作为下一笔新交易的输入值。换句话说,UTXO指的是用户钱包中随时可以花费的代币总量。没有UTXO意味着你的钱包里没有可用代币。这个概念适用于比特币、比特币现金(BCH)、莱特币(LTC)和大零币(ZEC)等。
UTXO类似于你用现金买东西后找回的零钱,而找回来的这些钱又可以拿去买另一个东西。但与法币不同的是,UTXO没有特定的面额,只需大于一聪(0.00000001BTC)即可。举例来说就是,假设你想买一杯15美元的咖啡,然后你手上有两张10美元的钞票。那么,你得拿这两张钞票一起结算才可以,而卖家需要给你找零5美元。也就是说,你没法把其中一张10美元钞票撕成两半来买咖啡, 你得一起用,然后等着找零。UTXO差不多也就是这个意思。
链上的加密货币交易相当于从发送方到接收方的价值转移,而被转移的加密货币是由不可分割的小块组成的,称为UTXO。也就是说,如果你是接收方,那你钱包里的代币就是所有收到的UTXO的总和。当发送方发起交易时,与发送方ID相关的UTXO被定位、收集、解锁,再发送给接收方。接收方成为UTXO的新所有人,而接收方的钱包余量变化也产生了新的UTXO。可能会有人想知道这些是怎样操作又是什么时候发生的,因为用户看到的只是自己的金额被扣和余额变化。答案并不复杂,钱包应用让整个过程变得简单无比,所有步骤都由它们自己操作完成了。
UTXO的运作方式
UTXO和法币一样,是不可分割的,也就是说,花多少就得用多少,然后得到余量变化。新的UTXO是通过消耗现有的UTXO产生的。为了帮助理解UTXO模式的工作原理,可参考下图:
假设你分别从A、B和C那里获得0.5 BTC、0.2 BTC和0.3 BTC。值得一提的是,这三个金额本身都可以被称为UTXO,UTXO不是一个固定值。
现在你需要向D支付0.75 BTC,而你现有的单个UTXO都不够,需要合并两个或更多的UTXO。
然后你决定将0.5 BTC和0.3 BTC这两个UTXO一起发给D,那你需要将它们一起发给矿工。
紧接着,矿工会只发送里面的0.75 BTC给D,同时在扣除交易费后将剩余的BTC返回到你的钱包里。
假设这笔交易是免费的(虽然现实是不可能的),那你能收到返还给你的0.05 BTC。
到这里,你将有0.2 BTC和0.05 BTC这两个新的UTXO,用于下一笔交易。
在传统的银行交易中,你所需要做的只是输入需要转账的金额和收款人,银行就会代你操作后面的手续。但在比特币交易中,你还需要选择你想使用哪一个或哪几个UTXO。此外,法币有特定的面额,但UTXO是没有的。如果不了解UTXO模式的运作方式,你可能会不小心用了你不想花的那笔钱。
UTXO的重要性
防止双花:UTXO使每个代币只能被花费一次。区块链网络会对流通中的每一个UTXO进行跟踪。当一笔交易被发起时,UTXO被转换为输入值,在这个过程中产生的输出值会覆盖之前的记录。所以,原先的UTXO就被花费掉了,也就不可能被二次花费。此外,系统可以通过计算网络上所有的UTXO,即所谓的UTXO集,得出有多少BTC。
可扩展性:有了UTXO,可以选择同时处理多笔交易,有助于减少网络的处理负荷。
隐私性和安全性:UTXO与个人的公共地址绑定,所以允许用户跟踪自己的加密货币。与此同时,用户可以始终保持匿名,确保自己得私人信息不会被追踪到。
灵活性:UTXO比法币更灵活。法币的面额是被规定好的,可能会出现数额不适用的问题。但UTXO永远不可能出现这个问题,因为它可以是任意大小。
UTXO的弊端
UTXO模式远没有看起来那么简单,它是一个复杂且耗时的过程。首先要知道用户所持有的代币的总价值,然后不仅仅是检查余量,而是要收集和计算所有可用的UTXO。此外,一些相对小额的UTXO也会使交易的性价比不太高,如果不对UTXO进行优化整合,很可能产生比交易金额本身还高的手续费。
UTXO与智能合约不兼容。UTXO交易中的输入和输出逻辑需要耗费额外的资源。因此,将其整合进智能合约不是很现实,因为系统需要进行全方位考量,比如输入数额和多笔交易的最佳UTXO组合。
账户模式与UTXO模式
账户模式的工作原理与银行类似,你不需要把整个币花掉才可以发送部分币,以太坊(ETH)和以太坊经典(ETC)等采用的都是账户模式。虽然各有优劣,但这两种模式的目的都是一样的。总的来说,两者之前的主要区别有:
UTXO交易需要比单一账户更多的存储空间,而账户模式需要的空间较少;
使用UTXO模式进行的比特币交易需要收集所有的UXTO,包括数额很小的,导致小额交易变得低效。账户模式则不存在这个问题,因此其大额交易的效率更高。
如前文所述,UTXO与智能合约不兼容。账户模式却可以很容易与智能合约兼容,允许开发人员对多方合约和交易进行开发。
结论
在进行比特币交易之前,非常需要正确理解UTXO的概念及其运作方式,以避免造成不必要得资金损失。UTXO有助于随时跟踪代币。要生成一个新的UTXO,必须先花费现有的UTXO,这在很大程度上防止了加密货币中常被提到的双花问题。UTXO在比特币交易中发挥了重要作用,也被其他加密货币采用或进行了相应修改。UTXO相当于链上的现金系统,但提供了更高的安全性、更好的隐私性和更多的灵活性。