经过前面一些区块链知识普及,今天来讲讲区块链的结构,以更好帮助你更好地去理解区块链。
打开网易新闻 查看更多图片
比特币区块链的数据存储

了解区块链结构之前,我们需要了解一个知识:比特币区块链的数据存储。

我们知道,比特币区块链其实是存储了一笔一笔的交易,并且会将每一笔交易都进行上链。

那么是怎么将交易进行上链的呢?

就是把多笔交易以组的形式放在一个块中(每隔10分钟就会产生一个块),然后再将这个块追加到前一个块的后面,如此依次链接起来。最终不断将新产生的交易以组的形式不断存储在块中,并进行延展链接。

打开网易新闻 查看更多图片
区块本身结构

区块包含两个部分:区块头和区块体

区块体,即交易的集合。每隔10分钟,会对我们产生的多笔交易进行集合成块,再以块为单位进行上链。

区块头,里面存储着区块的头信息,包含上一个区块的哈希值(PreHash),本区块体的哈希值(Hash),以及时间戳(TimeStamp)等等。

在区块头中有一个特殊的字段,即父区块(前区块Hash)。当需要将当前区块链接到上一区块时,那么一定会指定前一区块的Hash是多少。

以此类推,每一个区块都包含有前一区块的Hash,进行不断进链接,这样就能很好地保证链上的信息不被修改,因为一旦其中的一个区块信息被修改,将无法通过下一个区块的验证,那么被修改的信息也将不被认可。

区块头——版本号,通常用来区分用的什么网。比特币目前主要有两个网:主网、测试网。

区块头——时间戳,新产生一个块后会在块头中产生一个时间戳,用以表示块的产生时间。

区块头——Merkle根,查阅上一篇文章。

区块头——难度系数,比特币的难度一直在调整,需要算力工去计算出来。后期会详细讲解。

区块头——Nounce值,在挖矿时需要找的随机数。可用算力去查找完全随机的数值,在填入区块中是能使区块头的Hash值满足难度系数的要求。只有算出Nounce值,才能算是把当前区块计算成功,即挖矿成功。
打开网易新闻 查看更多图片
区块链本质特性

1、起始一致

创世块(高度为0):网络中的所有节点都以内置统一的第0块为起始块进行后续延展;

不同的创世块会造成不同的链,如:比特币主网与测试网的创世块就不一样。

在验证后一区块时,必须要依赖前一块,所以就必须有第0块。而第0块则是固定好的,无法进行更改的。

2、链式存储

比特币区块链上的块以链式结构线性单向追加记录,且后一块会记录对应的前置块。

3、Hash引用

后一块通过前一块的Hash进行引用,前置块的改变必然会导致后置块的Hash引用必须修改才能前后对应。

4、块头/块体分离结构

比特币区块链以单位存储,块又分为块头和块体两部分。块头中通过记录块体的Merkle根(Hash摘要)来保证块头与块体的唯一对应性。

关注“区链数科”,让你从入门到精通区块链!