区块链中的链到底怎么形成的
对于区块链这个词大多数人应该听的耳朵都快起茧了,但是区块链这条链到底是什么呢?知道的人应该就不多了,这篇文章会深入的介绍区块链中的链到底是由什么构成的。这篇文章会以比特币的结构为例来分析区块链的结构。
区块链在运行的过程中,会不断的对用户提交的交易数据进行打包,只有那些被打包的数据才能真正算是区块链的一部分。而这个打包的过程,就是构建链的过程。就比特币来说,链的结构如图所示:
如果我们把图中的元素都搞清楚了,那么区块链的结构我们自然也就弄清楚了。首先区块链是一条链,这条链与数据结构的单向列表的结构非常类似。其中,这条链中的每一个节点都是一个区块的区块头,而每个区块头中都包含了三个非常重要的元素,一个是父区块的哈希值,第二个数据就是随机数题(难度、时间戳、nonce),最后一个就是 Merkle 树的树根。
区块的连接方式:首先所有区块的连接方式都是通过在当前的区块头中记录父区块的哈希值,在区块链中,每个区块的哈希值是独一无二的,所以每个区块通过链接父区块的哈希来构建成一块链。
区块的形成方式:不同的区块链形成区块的形式是不一样的,在比特币中,是通过计算一个随机数的值来进行的,计算的过程就是挖矿的过程。不同的区块链的有不同的实现,但是目标都是一样的,就是通过竞争来确定区块的归属权。
区块的数据:在比特币中,一个区块的所有交易数据都是通过 Merkle 树来存储的。而在区块头中只存储 Merkle 树的树根,其他的数据都挂载这个树根上。
说到这里区块链的大体的结构差不多也可以弄清楚了。但是在实际的操作中是有很多问题存在的,比如区块链中由一个原则就是最长链原则,也就是说,只有最长的那条链上的区块才是有价值的,其他分叉的链都是无效的。那么这个问题在区块链中是如何解决的呢?
在区块链形成的过程中,一个区块是可以同时成为多个区块的父区块的,但是这只是暂时的。这种情况称之为分叉,然后区块的产生可以继续在这几条分叉的链上继续进行,当其中的一个区块率先得到六次确认后,那么其他所有的分叉就会失效。而其他区块链上的区块被称之为过时块,那些过时块的交易数据会被打散,然后等待被重新被打包进交易。这样就确保链能够不断的产生。
参考文献:
[1] 精通比特币
[2]比特币白皮书