OK区块链60讲:什么是UTXO账户模型?

在上节课中,我们已经讲过了什么是双花问题,其中,双花问题的第一种情况,就是由于处理方在记账时因为同步存在延迟的问题,导致同一笔钱,被反复花了两次。所以,为了解决这种情况,一些区块链项目便在共识机制的基础上,引进了UTXO的账户机制。

所谓UTXO模型,简单来说,就是一种特殊的账户记账模型。它的中文意思叫作“未花费交易输出”,它跟银行传统的账户模型有一个很大的区别就是,这种模型只记录交易本身,而不记录交易的结果。

OK区块链60讲:什么是UTXO账户模型?

像传统的银行账户模型,它是直接记录结果的,比如,我账户里有1万块钱,我要转给你3000,就会从我账户里扣除3000,我的账户余额是7000,你的账户里增加3000。
但UTXO模型不是这样记录的,它会把整个交易过程记录下来,原理是这样的:还是假设我账户里有1万块钱,我要转给你3000。UTXO在记录的时候,它会先记做这1万块钱全部转了出来,然后再记录有3000块转到了你的账户里,又有7000块从我的账户转到我自己的账户。

OK区块链60讲:什么是UTXO账户模型?

整个过程种,它会把牵扯到的账户资金、交易地址,转账资金、资金来源等信息全部记下。以此就能够追踪到每一笔交易的最初来源。所以,UTXO的本质其实是一种流水记账,会把交易的过程记录下来。
这种模型的好处在于,它让每次交易过程,都被记录得明明白白,并且可以追溯每笔资金的源头。也正是基于这个特点,UTXO可以和共识机制一起解决双花问题。
区块链解决第一种类型的双花问题,同样借鉴了传统银行的方式,会按照顺序一笔一笔处理交易。当节点在处理一笔交易的时候,会先通过UTXO模型检验交易资金存不存在,然后追溯这笔交易的源头,确定没问题后,就会通过共识机制进行全网广播,记录到链上。

OK区块链60讲:什么是UTXO账户模型?

如果有人想要用同一笔钱支付两次,区块链网络只会确认先接受到的那一笔,之后那笔交易,节点会在查询UTXO时发现,这笔资金已经被支付出去,并不存在于你的账户中,从而拒绝交易。以此解决了第一种情况的双花问题。
不过由规则内引发的双花问题是UTXO也没有办法解决的。所谓规则内引发的双花问题,就是利用共识机制的规则本身,对已经记好账的交易进行篡改,常见的就是51%算力攻击。比如有一个采用POW共识机制的区块链,因为整个网络的人数比较少,有一个节点掌握了整个网络51%的算力,这个时候,他就可以先进行一笔交易,等交易完成后,再通过共识机制篡改之前的那笔交易记录,否定之前的那笔交易,让已经花过的钱又重新回到自己账户,再次使用。
而这种情况的双花问题,只能通过提高全网算力的方式来解决,所以,在区块链中,使用的人越多,全网算力越高,整个网络也就越安全。
总的来说,UTXO不仅可以协助共识机制解决区块链中的第一类双花问题,更赋予了区块链可追源的特点,区块链也能以此为基础,保证每笔交易的真实与可靠。