前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >原来区块链上的区块长得像大白!好奇里面都有些什么?

原来区块链上的区块长得像大白!好奇里面都有些什么?

原创
作者头像
互链脉搏
修改2018-05-24 16:34:17
7020
修改2018-05-24 16:34:17
举报
文章被收录于专栏:区块链深度

在对“区块链是什么”有基本的了解后,我们就可以开始这章的探讨。

盖一间房子,它的基本单元结构是每一块砖;而组成区块链的基本单元结构,就叫做区块。每个区块由区块头和区块主体组成。如果把区块链比做有头有身子的人,那它更像大白:区块头存储结构化的数据,大小是80字节;而区块主体利用一种神奇的树状结构,记录区块挖出的这段时间里所有交易信息,所需空间比较大。平均来讲,假设一个区块内有400笔交易信息,区块主体可能比区块头大1000倍以上。

区块链观察网 大白.jpg
区块链观察网 大白.jpg

虽然区块头比区块主体小,但区块头总归是脑袋,大部分功能其实都由区块头实现。

为了更好地了解区块链的概念,我们可以把每个区块当成一个小盒子,里面的交易信息是小纸条;也可以把它想象成小黑板,每块小黑板上都分区块头、区块主体登记重要信息。现在我们就来看看每个区块上都写了些什么。

区块结构.jpg
区块结构.jpg

上图中,区块头部分括号里的数字表示各个数据所占大小,加起来刚好是80字节。区块头内含的数据有:

1)版本号(Version)

用来标识交易版本和所参照的规则。例如安卓8.1,或者iOS11.3,区块也有自己的版本号。

2)前一区块哈希值

也称“父区块哈希值”,这个哈希值通过对前一个区块的区块头数据进行哈希计算(SHA256算法)得出,它的意义在于:每个新挖出的区块都按秩序接在前一个区块的后面;这样,挖出新的区块后,你才能安心地喝一口茶,因为你很清楚这个区块是跟在一个被各节点验证过的可靠的区块后头。

3)默克尔根(Merkle Root)

如上图,在区块主体中,所有交易信息先进行两个一组的哈希计算,这种结构叫做Merkle树(Merkle Tree),而且是一棵倒挂的树。

我们把问题简单化,假设区块主体中有4笔交易信息,分别是交易1,交易2,交易3,交易4。Merkle树先对每个交易信息进行哈希Hash计算(如果不知哈希,请先阅读《区块链是什么?》),分别得出Hash 1 、Hash 2、Hash 3、Hash 4。

到了第二层,像班主任安排座位一样,两个一组,也就是说 Hash 1 和 Hash 2 的字符串排排坐,变成2倍长的字符串,然后算出这个字符串的哈希值,我们记做 Hash(1&2);Hash 3 和 Hash 4 同上办法处理,得到 Hash( 3&4),再往上算,Hash(1&2)、Hash( 3&4)这两个字符串又合并,接着进行哈希运算,这个最后的哈希值就是区块头的Merkle树根。

区块merkle.jpg
区块merkle.jpg

对比特币来讲,真实情况是一个区块主体包含约4000多笔,更多的情况大家就举一反三吧,总之就是不断两组合并、哈希运算,依次往上计算,直到算到最后一个哈希值。

Merkle树能够快速检验交易数据的完整性,即数据是否被篡改过。根据密码学中哈希函数的特点,如果有人对数据做过手脚,计算出的哈希值也会变得完全不一样。哪怕在这4000笔交易中,我只移动了一个小数点,你也能从Merkle树根的哈希值发现问题。

4)时间戳(Time)

记录这个区块生成的时间,精确到秒。每诞生一个新的区块,就会被盖上相应的时间戳,这样就能保证整条链上的区块都按照时间顺序进行排列。

5)难度值(Target_bits)

挖出该区块的难度目标。每产生2016个区块,数据区块运算难度会调整一次。比如,比特币区块链网络能够自动调整挖矿的难度,让矿工每10分钟才挖出一个区块。原本需要14天才能挖完2016块区块,但不知哪个天杀的突然弄来几台算力爆表的矿机,7天就搞定了,这就意味着到预定调整期的时候,挖矿难度会增加一倍。

6)随机数(Nonce)

《比特币挖矿是什么?矿工是怎样挖到比特币的?》这篇文章里,我们知道挖矿相当于矿工做数学题,他们利用计算机或矿机的算力(hashrate),经过大量的计算(专业一点称“哈希碰撞”),试出一个正确的区块哈希值;很多时候我们也把挖矿称作争夺记账权。

那么,矿工怎样才知道试对了哈希值呢?随机数就是这道数学题的解,挖矿过程就是在寻找这个随机数。假设某个新区块的随机数为23333,矿工们开始苦哈哈地尝试各种随机数,直到有个幸运星成功试到一组数字,这组数字的哈希值是

e401a2f533e853713eea21b878c1921c19fa9c8b887c1547c771ece46e13f766

而这个字符串正是随机数23333的哈希值!Bingo!

QQ20180227-2@2x.png
QQ20180227-2@2x.png

挖到一个新区块的节点/矿工向全网广播:“别挖啦!这个区块被我承包啦!”不管还差多少就快成功,其他矿工都只能放弃这个区块的记账权,转而开始验证这个区块。新区块验证通过后,成功加入区块链。

最后,总结一下:

1)区块是区块链的基本组成单元。

2)每个区块由区块头和区块主体组成,头小身大。

3)区块头包括:

4)区块主体包括挖出该区块的这10分钟内的所有交易信息,呈Merkle树结构排列。

如果读完本文有收获,欢迎分享到朋友圈;科普区块链,有你的功劳哦!


蜂巢财经公号ID:HiveEcon,跟蜂不跟风。

更多精彩报道请访问:www.blockob.com。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1)版本号(Version)
  • 2)前一区块哈希值
  • 3)默克尔根(Merkle Root)
  • 4)时间戳(Time)
  • 5)难度值(Target_bits)
  • 6)随机数(Nonce)
  • 最后,总结一下:
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档