货币的本质是一种记账方式。在比特币的交易机制中有一种独特的记账方式称为UTXO,UTXO 是一种全新的记账方式,是比特币交易生成和验证的核心。
传统记账方式
在传统的记账方法下,比如银行系统,如果甲要给乙转账1元钱,银行并不是真的把1元钱从甲的账户挪到了乙的账户。实际的步骤是,先检查甲的余额是否足够,不够就不执行转账,如果余额足够,就直接从甲的账户余额中减去1元,然后在乙的账户中加上1元。这种系统是基于账户的设计,由关系数据库支撑。
UTXO记账方式
比特币交易中,每一笔交易都被分为输入和输出两项,并且每笔交易的输入和输出必须相等。这里面的输出就是指的UTXO,就是未花费过的交易输出。
每一笔比特币交易,其输入必须来自于之前的某一笔或者几笔交易的未花费的输出,通过这样的方式一环套一环,从而形成一个链条,链条的源头就追溯到了比特币产生的那一刻,也就是挖矿的奖励。
举个例子,一个矿工新挖出了比特币,获得了 1 个币的奖励,这笔交易的输入就是写挖矿所得,输出是矿工的收币地址和金额 1 个。这个时候这笔新币就是 UTXO,还没有花费的交易输出。
如果矿工要给另一个朋友发送一个比特币,这笔交易的输入就是上一笔交易的 那个输出 UTXO,就是挖矿奖励的那 1个比特币。这时系统把这 1个比特币全部发送出去,支付给朋友 0.1个并签名,然后找回给矿工剩余的 0.9个也要进行签名。
所以,在输出一栏记录里就是,朋友的收币地址和交易金额以及矿工自己的地址和剩余的金额。这两个输出也又成为了 UTXO,就是未花费的交易输出。
无论向谁支付,资金来源必须是之前没有花费的输出。其实这也很好很理解。这样,不需要第三方机构,比特币通过不断地分割与组合,所有的交易构成了一个链条,整个网络上的节点通过 UTXO 和签名算法来验证新交易的合法性。也就说,比特币里并没有余额的概念,余额是通过所有交易的输入和输出推导出来的。
UTXO记账的优点
第一、保证了去中心化,不再需要一个中心化的数据库来保存和验证所有的交易信息,分布式的节点就可以验证。
第二、增强了匿名性,一个人可以生成很多很多个账户,每交易一次就有一个新的找零地址。
第三、实时对账,降低错误率,银行或者现在的其他金融支付系统,账目出错的时候一般无法立刻发现,需要在审核的时候才会发现问题。一旦发现问题,就需要不断往回溯源,直到找出错误。比特币通过 UTXO 这种方式能够实时进行对账,避免了这种问题