核心内容丨区块链的结构
经过前面一些区块链知识普及,今天来讲讲区块链的结构,以更好帮助你更好地去理解区块链。
比特币区块链的数据存储
了解区块链结构之前,我们需要了解一个知识:比特币区块链的数据存储。
我们知道,比特币区块链其实是存储了一笔一笔的交易,并且会将每一笔交易都进行上链。
那么是怎么将交易进行上链的呢?
就是把多笔交易以组的形式放在一个块中(每隔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摘要)来保证块头与块体的唯一对应性。
最后,欢迎留言讨论!
相关阅读