比特币区块:区块高度、新区块

上一节中我们简单介绍了比特币中钱包、私钥、地址、交易与签名的概念,知道了私钥的所有者才是比特币的拥有者,也了解了私钥在比特币中的重要性。
这节课我们来了解一下比特币中区块的概念,区块是什么样子的,新区块又是怎么生成的。

区块链的组成

首先我们来说说区块链的组成。区块链,顾名思义,是一个个区块以链式结构组成的。具体来说,每个区块都有一个唯一的区块哈希,区块头中有一个字段来存放父区块的哈希。第二个区块的父哈希为第一个区块的哈希,第三个区块的父哈希为第二个区块的哈希,这样类推,就把一个个区块链接起来了,形成了一个前向的链表,一句话,区块组成的区块链表就是区块链。

每个区块的头信息中都要存父区块的哈希,那么,区块哈希是怎么来的呢,区块哈希其实是对区块头信息做一个算法名为SHA256的算法得到的值。我们可以把SHA256想象为一个装置,姑且称之为翻译黑箱吧,你丢给他一句话,他会立马吐出另外一句翻译好的话,也就是哈希。要得到哈希就得知道翻译前包括哪里内容,具体到比特币里,就涉及到了区块具体的数据结构。

区块的结构

区块是一种聚合了交易信息的容器数据结构。区块由以下几部分来组成:

1) 区块大小(占4字节)
2) 区块头 (占80字节)
3) 交易计数器(记录本区块中的交易数量)
4) 交易实体

在这个数据结构中,区块大小代表了本区块除了自己这4个字节以外的其他数据量的大小,区块的具体数据写完以后才能得到这个数值;交易计数器就更简单了,他表达了一个区块中交易的个数,仅仅是一个计数而已。交易实体就是真正的交易数据,代表着比特币个体与个体之间的价值转移。

在区块里,区块头起着至关重要的作用,之前的章节中我们讲过,并不是每一个账户都要记录所有的交易信息,只有那些全节点或者矿工才需要记录所有的数据,而普通的比特币参与者只需要将每个区块的区块头下载到本地就可以进行简单支付验证(Simplified Payment Verification 简写为SPV),每个区块的区块头只有80字节,一年也才4.2M而已,把这些数据完全放进内存都是可以的。

那么区块头是什么样的结构呢?区块头主要由三组数据组成:

1) 父区块哈希值
2) 难度、时间戳和nonce值
3) Merkle树的根hash

其中父区块哈希前面已经说过了,是用来链接区块用的,可以保证区块的顺序;难度、时间戳和nonce值与挖矿竞争相关;而Merkle树的根hash,借助Merkle树算法,可以确保收录于验证区块中所有交易的真实性。

相关文章