加载中…
正文 字体大小:

比特币相关数据结构

(2017-06-24 09:15:08)
标签:

比特币

区块链

utxo

1、UTXO

UTXO,Unspended Transaction Outputs,未花费交易输出。比特币中的交易Transaction简称Tx,所以上述短语就缩写为UTXO。

比特币的交易记录里,有输入和输出,输入不是明确定义某人有多少数量的比特币,而是指向比特币来源,即前一个已确认的交易中的UTXO;输出定义某人有多少比特币,正是这种UTXO设计,使得建立起分布式账簿,所有区块和交易形成互相连接链条。

比特币相关数据结构


2、交易数据

每笔交易数据包含以下信息:

比特币相关数据结构

(1)版本:描述比特币交易所遵循的协议。

(2)输入数量:指这笔交易中含多少个输入。

(3)包含多条输入信息,每一条包含如下信息:

  • 交易:指向前一次交易中的UTXO,具体值为Hash指针。
  • 输出索引:在UTXO中索引号。因为一笔交易中可以存在多个UTXO,所以需要确定使用的是哪一个。
  • 解锁脚本尺寸:后面的解锁脚本字节长度。
  • 解锁脚本:包含对输入交易信息所要进行的操作指令,脚本由脚本引擎进行解释和执行。一般包括对交易信息进行验证和将签名、公钥等信息压入堆栈的一些操作指令。
  • 序列号:目前尚未使用。

(4)输出数量:指这笔交易中包含多少个输出。

(5)输出信息,每一条输出信息包含如下信息:

  • 总量:未花费的比特币数量,以聪为单位。
  • 锁定脚本尺寸:锁定脚本的字节数。
  • 锁定脚本:包含一系列操作指令的脚本。内容同上。

(6)时间:时间戳,定义交易的时间序列。

 

3、区块

 比特币每10分钟产生一个区块,每个区块大约包含4000条交易。比特币区块包含区块头和区块体。

1)区块头记录了:版本号、前一个区块的记录、Merkle树的根值、时间戳、目标特征值、随机数。

比特币相关数据结构

(1)版本号:区块的版本号。

(2)前一个区块的记录: 记录前一个区块的HASH值,使的所有区块形成串接起来,形成链条。

(3)Merkle树的根:记录当前区块中所有交易Merkle树的根节点的HASH值,任何一个交易信息变化,都会导致该值也发生变化。

(4)时间戳:记录区块生成的时间。精确到秒。

(5)目标值:用于矿工的工作量证明,定义矿工计算的HASH值应满足的特征。一旦有矿工计算出满足这种特征的HASH值,则该区块被确定加入账簿,该矿工得到比特币奖励,而其他矿工开始计算下一个区块。

(6)随机数:用于计算目标值时使用,当计算结果不满足目标值时,随机数逐次增加1,并再次进行计算,直到计算出符合目标值的HASH值。

 

2)区块体包含所有交易的详细信息。每一笔交易为一条记录,所有交易构成一个列表。

比特币相关数据结构

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有