首页 > 世链号 > 区块链进阶原理:构成
梭哈派  

区块链进阶原理:构成

摘要:哈希运算的这种特性,保证了数据的不可变更。因为一旦变更之后,整个结果就变了。所以在很多场合中,我们可以通过验证哈希来保证被加密文本有没有被改变。

一起来探索区块链的奥秘

To Explore Blockchain

Once you’re strong enough , save the world

—— Comunion initiator kering

Comunion 区块链深度学习系列|区块链进阶原理:构成

本系列内容包含:基本概念及原理、密码学、共识算法、钱包及节点原理、挖矿原理及实现。

0 _1_

区块结构构成

每个区块主要包括区块头(下图灰色的部分)和交易主体(下图橙色的部分)两部分。

Comunion 区块链深度学习系列|区块链进阶原理:构成

整个区块头中内容包含:

第一个是前序区块的哈希,这样区块才能跟前面区块链起来,形成一个链;

第二个是时间戳,表明区块是在什么时间被挖出来的;

第三个是难度的目标值,矿工挖矿的过程,其实就是在不断的计算挖出来的区块是否和难度值相匹配;

第四个 Nonce 是一个随机数;

最后 Merkle root ,记录的是整个包含在当前区块中所有交易的交易哈希,Merkle root 是通过交易哈希计算出来的。

我们通过下图比特币的一个区块结构来具体分析一些。

Comunion 区块链深度学习系列|区块链进阶原理:构成

1、Magic Number (魔数)占 4 个字节,一般是固定值;

2、Block Size (区块大小)占 4 个字节,可变值;

3、Version (版本)占 4 个字节,标明当前版本,固定值;

4、Previous Block Hash (前序区块哈希)占 32 个字节,可变值;

5、Merkle Root (默克尔根)占 32 个字节,可变值;

6、Timestamp (时间戳)占 4 个字节,可变值;

7、Difficulty (难度值)占 4 个字节,可变值;

8、Nonce (随机数)占 4 个字节,可变值;

9、Transaction

Counter (交易的数量)占 1-9 个字节,可变值;

10、总共的 Transaction List (交易列表)加在一起总共是 1MB。

0 _2_

区块哈希

每个区块都有其唯一标识,这就是区块的哈希,区块哈希是由区块头中的几部分来构成。

Comunion 区块链深度学习系列|区块链进阶原理:构成

从上图可以看出

区块 0 对区块头中的中间标红部分进行哈希计算,得到当前区块 0 的哈希,然后区块 0 的哈希会填入下一个区块(区块 1)中,作为下一个区块头的一部分。

以此类推,所有的区块都会按照这个顺序不断的加下去,所以通过前序区块的哈希就可以找到唯一的前一个区块,从而达到所有区块可追溯的目的,这样也保证了区块链是完整的,唯一的。

0 _3_

哈希运算

Comunion 区块链深度学习系列|区块链进阶原理:构成

上图中大家可以看到左侧有五句话,中间是哈希算法,经过运算之后得到对左侧话语的哈希运算结果。

图中的第一句话只有三个字,第二、三、四句话的区别只有一个字,第五句话完全不同。

我们可以看出,不管字数多少,哪怕只改一个字,最终结果却是完全不同的,并且完全没有任何规律。

哈希运算的这种特性,保证了数据的不可变更。因为一旦变更之后,整个结果就变了。所以在很多场合中,我们可以通过验证哈希来保证被加密文本有没有被改变。

哈希运算的这个特点保证了,即使区块中有即使两个区块只有一个字节不一样,这两个区块的哈希也是完全不一样的,从而保证区块链中所有的区块哈希都是完全唯一的。

0 _4_

Merkle root

Merkle root 涉及一个区块头中非常重要的一个部分,但是它却和区块头中其它几个部分是没有任何关系的。

与 Merkle root 最大关系的就是整个区块头区块中的所有交易,这些交易决定了 Merkle root 的值,然后通过 Merkle root 的值来影响整个区块的哈希。

Merkle root 是如何计算的呢?

Comunion 区块链深度学习系列|区块链进阶原理:构成

从上图中我们看到是由 16 个交易组成了 Merkle root,也称之为默克尔根。

所有的这 16 个交易,都排布在交易的最底层,AB 是一对,CD 是一对,一直到 OP。其中 HA 呢表示交易 A 的哈希,以此类推。

计算的过程中,是将 HA 和 HB 拼成一个字符串,然后对这个字符串进行哈运算,得到了 HAB。以此类推,分别计算后面的哈希。

第一层算完以后,所有的哈希由 16 个缩短为 8 个,继续按照同样的方式经过第二层计算以后,哈希缩短为 4 个……以此类推,最终得到 Merkle root,这种结构也称之为默克尔树。

这种结构不单单标记了所有交易的顺序,也标记了所有交易的关系,并且通过这种非常巧妙的方式,也降低了 Merkle root 的计算次数。因为整个的计算层次是 2 的幂指数的情况,即使交易呈指数的增加,其计算次数也不会增加很多。

有一种情况是假如默克尔根不正好是 2 的幂指数怎么办?比如说只有 3 个或者 5 个交易,这种情况该如何计算呢?

Comunion 区块链深度学习系列|区块链进阶原理:构成

上图图中我们看到只有 3 个交易,由于 HC 是单独的,它的旁边没有另外一个交易和它拼成一个字符串,这种情况下就会选择将 HC 复制,也就是两个 HC 拼一个完整字符串,从而得到 HCC。最后,将 HAB 和 HCC 拼成一个字符串 HABCC 进行计算。以此完成这个只有 3 个交易的 Merkle root 计算。

总结:计算 Merkle root 的时候,首先将所有的交易有序的平铺在一层,然后两两一组,逐步获得上一层的哈希;

当某个交易哈希,为单数的时候,这时将这个哈希复制一份来进行补足,然后继续进行上层计算,直到最终完成 Merkle root 计算;

通过这种方式,可以将区块中所有的交易绑定在一起,并且交易的内容和顺序都是确定的;

最后将 Merkle root 填到区块头中,既保证了所有的交易摘要在区块头中有一个记录,又保证了区块中所有交易的不可篡改。

0 _5_
其他

时间戳记录当前区块是在什么时间被挖出来的,它会在浏览器中把时间轴转换成当地时间的格式,也就是我们在区块链浏览器中看到的区块时间。

挖矿难度其实是一个目标值,只有矿工挖出来的区块,满足这个难度值的时候,这个区块才会被全网的其它节点来确认。

Nonce 是一个随机数,矿工挖矿的过程中,就是不断的在尝试修改这个随机数。

—— E N D ——

来源链接:mp.weixin.qq.com
来源
:X平行线

免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。