深入比特币原理(三)什么是UTXO

比特币(Bitcoin)的交易模型为UTXO(unspend transaction output),即只记录未花费的输出,每次交易花费的是前序某一个(多个)输出。

那么什么是UTXO?

在现实使用中的支付系统是基于”账户模型”的,每人都有自己的账户,支付则是在不同账户中做加减法,如:

UTXO实现如下:

交易(Transaction)永远只允许未花费过的交易进行输出,这即为UTXO。

该设计是由中本聪(Satoshi Nakamoto)首创,相较于传统账户体系,具有的优点如下:

1.账户数据库将不断膨胀扩容,因账户不会被删除(Delete),UTXO的数据库体积则会非常小。

2.因为只有未花费(Unspend)的输出被保留,比特币用户理论上能拥有近乎无限多的地址,这种方式允许了匿名性。

3.UTXO为高并发交易(Transaction)带来可行性,在传统账户体系中,所有账户交易是线性的(无法并发)。而每人可持有多个UTXO,可同时做到发生数笔交易,这实现了并发模式。

同时有一种特殊的交易将在区块产生,Coinbase,即矿工们挖矿爆块所得的比特币(Bitcoin),该笔交易的输入为空值,只有输出。

比特币(Bitcoin)交易解码

从解码内容中可知,交易是通过输入与输出组合而成。

{

"version":1,

"locktime":0,

#交易输入(input)部分

"vin":[
{

#输入引用的交易Hash

"txid":"7959a35fe52f80d234d11d83a7a8f1b0d8149a41d81de548f0a65d8a999f6f18",

#引用交易UTXO索引(第一个为0,此处代表上述txid交易中的第一个UTXO)

"vout":0,

#解锁脚本,用于解锁UTXO的脚本(这是可以花费这笔UTXO的关键信息)

"scriptSig":"3045011100884d142d86652a3f47ba4746ec719bbfbd040a570b1deccbb6498c75c4ae24cb02204b9f039ff08df09cbe9f6addac960298cad530a863ea8f53982c09db8f6e3813

[ALL]0484ecc0d46f1917b30928fa0e4ed99f16a0fb4fde0735e7ade8416ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc17b4a10fa336a8d752adf",
"sequence":4294967295
}
],

#交易输出(output)部分

"vout":[
{

#第一个输出的比特币数量

"value":0.01500000,

#锁定脚本,后续的交易如要使用该输出,必须解锁锁定脚本

"scriptPubKey":"OP_DUPOP_HASH160ab68025513c3dbd2f7b92a94e0581f5d50f654e7OP_EQUALVERIFYOP_CHECKSIG"
},
{

#第二个输出的比特币数量

"value":0.08450000,
"scriptPubKey":"OP_DUPOP_HASH1607f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a8OP_EQUALVERIFYOP_CHECKSIG",
}
]
}

从中可知,比特币实际交易过程中没有包含账户余额等信息,只包括输入(input)和输出(output)两部分的信息。

事实上,该交易类似现实世界中以支票进行直接交易。如甲给乙一张50元支票,则甲是输入,乙是输出。当乙给丙支付30元时,乙无需去银行兑现然后支付给丙,而是直接输入两张新的支票,一张30元给丙,一张20元留给自己,再将50元的支票进行作废,即可完成一次UTXO(非基于账户模型)的支付。


温馨提示:
1、本站所有内容皆转载自网络。2、本站所有转载内容只代表原作者观点,不代表本站立场。
3、本站所有转载内容仅供学习参考,不构成任何投资建议。
4、本站与项目方没有任何利益关系,不接受捐赠,不接受打赏。

Subscribe to nobody
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.