科普 | 区块链上的区块到底是什么?
比特币是基于区块链技术的,大家都知道这一点。但是,区块链是什么?更确切地说,区块链上的各个组成部分——区块——到底是什么?
区块链是一条数据区块连成的链条。每个区块可以被认为是一个账簿中的每一页。区块由几个不同的部分组成,这几个部分大体上可以被分成区块头和区块体。
区块头
区块头分为6个部分:
-
软件的版本数;
-
前一个区块的哈希值;
-
默克树的根哈希;
-
自1970-01-01 T00:00(协调世界时)以来的时间(精确到秒);
-
当前的难度目标;
-
随机数.
软件的版本数
软件版本数在大多数情况下不重要。然而,有了一个特定的版本数,矿工就可以表明他支持的是哪个协议的决定。
前一个区块的哈希值
前一个区块的哈希值可以说是区块链的链。因为前一个区块包含在新区块的哈希值内,区块链的所有区块都是构建在彼此之上的。没有这个部分,每个区块之间就没有联系,杂乱无章。
默克树的根哈希
一个区块中包含的所有交易都可以在哈希中被聚合,这就是默克树的根哈希。
自1970-01-01 T00:00(协调世界时)以来的时间(精确到秒)
这是区块本身的时间戳。以秒来计算从1970年1月1日以来的时间。
当前难度目标
这个目标表明新的哈希必须有多小才能声明有效性。换句话说,每个哈希都有一个 bits 大小。bits 的目标越低,找到匹配的哈希越难。哈希值开头有很多零的哈希币比没有零的哈希小。
随机数
随机数是由工作证明增加的变量。通过这种方式,矿工可以猜测有效的哈希,及小于目标的哈希。
这六个部分形成区块头。区块头在比特币中担任一个非常重要的角色,因为它将所有的区块连接在了一起。大家可以把它想象成一辆卡车的驾驶位。
区块体
区块体就相当于卡车的装载空间,包含所有该区块确认过的交易。
当矿工构建一个区块时,这个区块会验证交易。也就是说,矿工会检查发送者的资金是否充足。他可以很容易地从区块链中读取这些信息。例如,如果发送者想要发送10个比特币,那么该矿工就会查看他在过去的区块中是否收到过10个比特币。
区块中的这些交易不仅仅是一个列表,而在“默克树”中。
什么是默克树?
默克树的名字来自数学家拉尔夫·默克。他发现,单个哈希中可以展示大量信息。为此需要首先对数据本身进行哈希运算,得出的哈希值再次进行哈希运算并聚合。最后,将默克树聚合为一个哈希。最后一个哈希也称为根哈希,即默克树的根。它以相对较短的字符表示其“叶子”(单个交易)和“树枝”(叶子的哈希)的所有信息。
只要知道所有树枝和叶子,就可以快速轻松地创建根哈希。记住哈希函数的功能:它在一个方向上清晰快速地工作,并且不可能在另一个方向上分解。如果已知根哈希,但交易未知,那就无法猜测交易。
因此,单独一个根哈希是不够的,剩下的区块必须被保存。因此,矿工可以在任何时候将该区块中包含的信息再次进行哈希运算,从而验证根哈希。只要哈希函数是相同的,那么矿工对于一个给定的数据输入都能得到相同的哈希值。这很方便,因为他们可以只检查他们是否和该哈希值处于同一个级别。
挖矿:搜索特殊哈希值
在这种情况下,工作量证明(PoW)机制下的挖矿比较容易理解。挖矿时,区块头进行增量更改以获得特殊的哈希值。
区块头由五个常量和一个变量组成。常量是软件的版本号、上一个区块的哈希值、默克树的根哈希、时间戳和所搜索的哈希的目标大小(以字节为单位)。
变量是随机数。随机数是以1为单位不断往上增长的数字。矿工将数据进行哈希运算并检查数据是否低于搜索目标值的哈希值。如果哈希值大于目标,矿工则重复该过程,随机数增加1,并再次进行哈希运算和检查。重复此操作直到找到一个特殊哈希值,或者从另一个哈希值低于目标的网络计算机中获取另一个区块,并将其用作下一个区块的基础(使用新的哈希作为“前一个区块的哈希”)。
挖矿是一个高度重复工作的过程,其目标就是找到一个特殊的哈希值。一旦那个哈希值被找到了,那么游戏又将重新开始。找到一个特殊哈希值的可能性取决于难度。平均来说,比特币每10分钟出现一个新区块。难度一直在不断调整,所以这个平均值基本上不会变。
这个过程的特点在于特殊哈希值只能通过猜测的方式被找到。这个猜测的比率消耗算力和电力。特殊的哈希值一眼就能看出来,因为它是由多个0开头的。
下面是比特币区块链上一个特殊哈希值的例子:
000000000000000000094bfa4edb1245c347e42452e4418e9fe5a1d24e335b16
哈希值:区块链的俄罗斯套娃
区块可以被看做一个俄罗斯套娃。最小的套娃是没有进行过哈希运算的交易。第二层是这个交易的哈希形式。此后,两个经过哈希运算的交易一起再进行哈希运算。因此,越来越多的哈希值进行聚合。最后只剩下一个哈希,即根哈希,也就是最大的那个套娃。
作者:Marko Vidrih
翻译:黄非红
原文链接:
https://medium.com/datadriveninvestor/what-is-a-block-in-the-blockchain-c7a420270373