【区块链】比特币区块结构

2018-05-15  本文已影响0人  一个测试员的日常

在币圈里混的人,或多或少听过区块链概念,区块链的最简洁、最核心的定义:区块链是不可篡改的账簿。

这句话点明区块链具有不可篡改的特性,但没说明区块链是怎样组成,或者区块链的结构是怎样的?

在《精通比特币》第7章对区块链定义:

区块链是由包含交易信息的区块从后向前有序链接起来的数据结构。

这是从软件设计的角度来解释。如果没了解过数据结构的小伙伴,看到定义后半部分可能会产生疑惑。下面我给出比较简洁定义:区块链是有序地把一个个区块链接起来。

根据上面定义,关键词包括:有序区块链接。画出简洁区块链的图(如下图1)。

区块链接.png

有序是指按照产生区块时间来排序,越早产生的区块,越排在前面。比特币是平均十分钟产生一个区块。

区块

区块是本文章重点讲述的内容,每个区块主要用于存储交易信息。区块结构如下:

大小 字段名称 描述
4字节 区块大小 用字节表示区块大小
80字节 区块头 组成区块头所包含的字段
1-9字节(不固定) 交易数量 交易数量
不固定 交易信息 记录当前区块里的交易信息

区块头结构如下:

大小 字段 描述
4字节 版本 版本号,跟踪使用软件/协议
32字节 父区块哈希值 上一个区块哈希值
32字节 Merkle根 该区块中交易的Merkle树根的哈希值
4字节 时间戳 该区块产生时间
4字节 难度目标 该区块工作量证明的难度目标
4字节 Nonce 工作量证明的计数器

用表格描述区块结构是清晰的,但不够直观。下面使用一张图来表示区块结构:

区块结构.png

这张图清晰明了介绍区块包含信息和组成。

区块是通过什么链接起来的?区块头的父区块哈希,就是使用它把一个个链接起来。一直连到创世区块,创世区块也就是第一个区块

每个区块都有父区块哈希值,有没有想过当前区块哈希是产生的?

当前区块哈希值不包含在区块的结构,当从比特币网络被接收到该区块时,再由每个节点计算出区块哈希值。区块的哈希值可能存储到某个设备或者数据库,以便于索引和更快地从磁盘检索区块。

结语

从区块结构的角度,讲解区块链的定义:区块链是有序地把一个个区块链接起来。区块结构包括:区块大小、区块头、交易数量、交易笔数。区块头包含字段有:版本号、父区块哈希值、Merkle根、时间戳、Nonce、难度目标。还有当前区块哈希值不包含在区块的结构。

上一篇下一篇

猜你喜欢

热点阅读