Kerzzi avatar

区区区块链:UTXO——你的比特币去哪了

seeyoo

Published: 26 Mar 2018 › Updated: 26 Mar 2018区区区块链:UTXO——你的比特币去哪了

区区区块链:UTXO——你的比特币去哪了

UTXO是比特币交易系统里面,中本聪的三大原创技术之一,另外两个分别是区块链和智能合约。今天我们就来讲讲这个天才设计UTXO。

01 什么是UTXO?

《精通比特币》中关于UTXO的定义是这样的:

UTXO(Unspent Transaction Output):未花费的交易输出。
在比特币的世界里的每一笔转账,都能够追溯上一笔交易。每一笔付款,都可以追溯到上一笔的收款。一直往上追溯到它诞生的时矿工挖出来的那个区块。

02 举例说明

首先,为了理解这个概念,我们先来用一个现实中的例子类比:

UTXO系统有点类似于现实中的纸币消费,比如你有10元、5元、1元纸币各1张。你要花费12元向我买水果。你手中的3张纸币是真实存在的未花费的交易输出(UTXO),因为我看的见(类似区块链网络中的地址查询)。为了买12元的水果,你要给我10元和5元2张纸币(UTXO),为了保证输入输出相等,我会收下你的15元,并付你1张1元纸币和1张2元纸币或者直接给你3张1元纸币(新的UTXO)。

上述的类比其实不太准确,比如少了系统的存在,下面我们来详细讲解一下。

传统的中心化账户系统,如银行、微信、支付宝等,在记录交易时,实际上是在你的账户余额上进行加减。比如你的账户余额里面有10元,你向奶茶妹妹买了一杯奶茶刷卡消费8元。这时系统会在你的银行卡余额中减掉8元,你的账户中还剩余2元,在奶茶妹妹的账户中增加了8元,这就是传统账户系统的交易方式。

而在比特币的UTXO交易系统中,是没有账户余额的概念的:我们已经知道,比特币是靠挖矿来获得新币,即最初的挖矿交易,在挖矿交易中,输出是矿工的收款地址。当矿工将这笔新BTC交易给别人时,就有了这笔新币的第一项UTXO。

依然以买奶茶为例:

假设这个矿工的地址中,有3笔未花费过的交易输出,分别为 1BTC、6BTC、5BTC。一杯奶茶价格8BTC。矿工如果想买这杯奶茶,那么该如何交易呢?直接向奶茶妹妹的地址中转账8BTC吗?

当然不是,我们已经说明比特币交易系统中是没有账户余额概念的,有的只是地址。而地址就像硬币一样,是没有办法掰开来花费的。因此实际的交易是这样的:

你向奶茶妹妹的地址中转11个BTC(6+5),系统会付给奶茶妹妹8个BTC,另外3个BTC会生成新的1个或多个UTXO,回到你的地址中,这是在比特币网络中自动完成的。这时你的地址中应该是3BTC+原来的1BTC,共4个BTC(这里只做说明,未考虑支付矿工费的情况),输入和输出相等,至此交易完成。UTXO方案不记录你的“余额”,而是只确认交易本身。

03 结束语

你看,比特币账户就是一个个的地址,每一笔交易,其实都是对UTXO地址的记录

以上就是今天的【区区区块链】,欢迎你与我一起学习,我是Kerzzi,叫我柯子就好。
公众号:叫我柯子就好。知识星球:行思区块链。

04 思考题

思考:如果比特币网络不使用UTXO?而是采用传统账户系统的余额记账方式会有什么问题?

提示:
余额记账:需要一个数据库,记录所有人的余额,所有节点同步该账本。
UTXO:只记录交易本身,所有节点同步该账本。

Leave 区区区块链:UTXO——你的比特币去哪了 to:

Written by

Read more #cn posts


Best Posts From Kerzzi

We have not curated any of seeyoo's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From Kerzzi