1.比特币交易构造

比特币交易构造

 

在比特币钱包当中,我们通常能够看到账户余额,然而在中本聪设计的比特币系统中并没有“余额”这个概念。那如何知晓自己还有多少个比特币呢?

 

比特币的交易结构采用的是UTXO,这是比特币特有的一种账户结构。它用来查询用户的账户中还有多少可以用来支配的比特币。

 

UTXO的全称是Unspent Transaction Output 翻译成中文就是未花费的交易输出。它是比特币交易生成及验证的一个核心概念。

 

比特币交易构成了一组链式结构,所有合法的比特币交易都可以追溯到前向一个或多个交易的输出,这些链条的源头都是挖矿奖励,末尾则是当前未花费的交易输出。

 

1、传统的账户结构

 

当我们在现实生活中进行资金交易的过程中,整个交易的流程往往是这样的,小黄得到了现金10元,转给小牛2元,那么小黄的账户在现有基础上减去2元,小牛的加上2元;小牛和小黄又分别转给小王1元,小牛和小黄的账户分别减去1元,在小王的账户上加上2元,整个交易过程如下图所示。

 

(传统账户体系下的转账)

 

2、比特币UTXO结构

 

而在比特币交易中,我们是这样记账的。依然是刚才的流程,小黄通过挖矿获得了10比特币,他向小牛转了2比特币。后来小牛和小黄又各自向小王转了1比特币。整个交易流程如下图。

 

(比特币钱包地址中的交易记录)

 

而三个人的比特钱包地址中只记录了这几笔交易的流水,并没有余额的概念,如下图。

 

 

(小王,小黄,小牛三人的交易记录)

 

每一个比特币交易都有若干个输入和输出组成,输入直白点讲就是你拿什么证明你能拿出这些比特币来给别人,那么这个证明就是前一个人给你的转帐记录。

 

小黄的比特币钱包地址中有两种交易类型,Coinbase是一种比较特殊的交易,是指小黄挖矿后的获得的奖励,这种交易实际上是没有输入只有输出的,输出的就是挖矿者小黄的比特币钱包地址,小黄此时要向小牛转2个比特币,那么输入就是小黄挖矿得来10比特币的这个交易,输出2个比特币给小牛,另外转8个比特币给自己。

 

输出的数量必须小于等于输入的数量,若没有把多余的比特币转回给自己,那么很可能会作为手续费奖励给记账的矿工。

 

后续流程类似,小牛转给小王1比特币的输入是小牛从小黄那得到的2比特币。这样包含若干输入和输出得交易数据结构被称为UTXO即未花费的交易输出。数据库中有专门的表记录UTXO,一旦未花费得作为输入产生了其他输出,则输入交易就从UTXO表中删除。