币姐开场
上一篇内容提到了,想要发起交易,首先要检查一下你的UTXO是否足够,不够的话是无法交易的。那么UTXO是什么鬼?中本聪为什么要用UTXO而不用账户余额的设计呢?
本文以比特币的技术为案例,请注意:比特币 ≠ 区块链
作者 | 币姐
1
UTXO是什么鬼?
UTXO(unspenttransaction outputs)是未花费交易输出。
UTXO跟银行里的账户余额系统不同,跟纸币的逻辑有些类似。看看下面2个例子就大概知道了。
假设币姐要给老王转80元。如果是通过银行转账,那么服务器只需要在币姐的余额里-80元,在老王的余额里+80元就可以了。
而比特币的转账跟现金更像,现金没有80元的面额,所以只能给老王100元的现金,然后老王再找回来20元现金。
上面的例子也可以用UTXO来解释:
币姐有100元的UTXO,UTXO是不能细分的,就好像不能把现金撕开用是一个道理。所以只能先全部给到老王,然后老王再找零20元。
交易完成后产生了2个UTXO,一个是老王的80元,一个是找给币姐的20元。
2
2个实际案例再看UTXO
下面,我们看2个实际的BTC交易案例:
如上图案例1所示:发起方想给接收方10.5065BTC。
发出方将10.6BTC转给了接收方。
10.6BTC消耗掉了,生成了2个新的UTXO,接收方收下10.5065 BTC,发出方收下0.0925 BTC算是找零。
接收方的10.5065 BTC目前已经使用过了,就不能叫UTXO了,而找零的0.0925 BTC到目前为止还没有使用过,所以他还能称作UTXO未花费的交易输出。
我们再看另外一笔交易,如上图案例2所示:发出方想给接收方392.101963 BTC。
在交易前
发出方的3个UTXO数额相加刚好392.101963 BTC。
交易后
3个UTXO直接消耗掉,只需要生成了一个新的UTXO给接收方就可以了,不再需要找零了。
案例2的过程就好像为了凑26元,需要将20元,5元,1元凑一起是一个道理。
币姐说明
在上面2个案例中,有人可能发现,案例1中少了0.001 BTC,案例2中却没有少。
案例1中0.001 BTC就是矿工费,案例2中没有支付矿工费。关于矿工费我们会在后面的内容里详细说明。这里不展开。
3
UTXO有什么特点?为什么要用UTXO而不用余额?
看了上面几个案例之后,我们发现UTXO有几个特点:
1、每个UTXO都是独一无二的,就好像带有编码的钞票一样
2、相比钞票来说,UTXO更灵活,并没有固定面额的限制,任意数额都可以
3、UTXO是不能分割的,只能被消耗掉
4、在交易前后,UTXO的数量可能增多,也可能减少
5、每笔交易的输入和输出都是有关系的,可以通过UTXO不停往前追溯,直到挖矿
UTXO具备下面几个优势:
1、UTXO具备天然的匿名性
2、UTXO是独立的数据结构,可以更好的并行处理。
3、长期来看,UTXO的数据占用更小,而余额系统会越来越臃肿。
4、UTXO的结构更不容易被篡改,每个UTXO都追根溯源,很难伪造。
4
总结
UTXO(unspenttransaction outputs)是未花费交易输出。
他的逻辑跟钞票有点像,他是不可分割的,如果UTXO大于交易金额,则接收方需要“找零”。
UTXO具有4个优势:
1、匿名性更好
2、更好的并行性
3、数据占用更小
4、不容易被篡改
下期预告:数字签名是如何验证交易的?
我们提过了,如果想发起交易,除了UTXO足够,还需要验证数字签名,那么数字签名是如何工作的呢?我们下期详解。
领取专属 10元无门槛券
私享最新 技术干货