详解区块头

作者: 肖雄Max | 来源:发表于2018-07-09 23:55 被阅读105次

    最近一直在看技术向的普及读物,我觉得比看行情有意思。

    在刚开始了解比特币的时候,我就很想要知道一个区块的数据大概是由哪些部分构成,知道了这些构成对我的理解有着莫大的便利性,还好我找到了。

区块数据

    区块大小和交易计数器很好理解,区块头和交易则稍显复杂。

    区块头包括三组数据:

    第一、父区块哈希值的数据。我认为可以理解为基因。

    第二、挖矿难度值、区块时间戳以及Nonce。这一组数据记录与挖矿有关的内容。

    第三、Merkle树根。这是个神奇的东西,可以先理解为描述区块中所有交易的数据。

区块头数据

    区块链之所以叫链,就是因为它的结构是一条从后向前有序连接起来的数据结构,就像是一条尾巴永远在变长的链子。

    那是什么原因导致这条数据这样井然有序的从后向前的连接呢?这就得靠父区块哈希值了。

    从字面意思理解,这是来自于父亲的哈希值。在区块链中,我们称呼当前区块的前一个区块为父区块,相应的后一个区块为子区块。唯独有一个区块是特殊的,它没有父区块,它是孙悟空~不对,它叫创世区块!

    所谓的父区块哈希值,就是父区块的区块头哈希值。从表格2中可以看到,区块头中包含了各种数据,大小是80字节,而这80字节的数据经过哈希运算,会得到一个32字节的字符串,这个32字节的字符串就是区块头哈希值。

    举个例子(例中数据全是随机乱输入的),第198808个区块的区块头哈希值是ade12318fbce...12ade413(32字节),那么第198809个区块的区块头数据就是这样的:

198809区块头

    把198809区块头中的所有数据经过哈希运算得到一个32字节的数据:bcf45896aefcd...33cde409(32字节),那么第198810个区块的区块头数据就是这样的:

198810区块头

    把两张图放到一起,就能得到一个简单的由2个区块构成的链。而区块链就是以这种方式构成的一条可以随着时间流逝无限延长的链。

基本结构

    为什么要这样做呢?

    一开始我有说,我认为父区块哈希值可以理解为基因。如果我们的祖先有8条腿,我们人类可能就不是现在这个长相了,蜘蛛应该会非常可爱!

    而父区块哈希值如果出现变化,那么把父区块哈希值作为输入条件的子区块哈希值一定会出现变化,紧跟着孙区块也一定会发生变化,如此这般,这个被改变的区块之后所有的已有区块都必须改变。

    越是早创造的区块,更改后需要的工作量越大,越不可能实现,而越新的区块被改变的难度也就越低。这也是区块链的交易一般需要有6个新区快建立以后才被确认交易完成的原因,因为这个时候,交易被更改的可能性已经基本没有了。

    凭着这个结构,区块链实现了不可逆、不可篡改的特性!

相关文章

网友评论

本文标题:详解区块头

本文链接:https://www.haomeiwen.com/subject/dpqtpftx.html