再次遇见她6星评价
2020-09-01 13:44:28
区块链中的块”是什么?
比特币是基于区块链的,这一点大家都知道。但是这个区块链是什么呢?更准确地说,区块链的各个组成部分是什么呢?
区块链是一个数据块。每个块可以看作是分类帐中的一个。单个块由几个组件组成。大致可以将它们区分为块的头部(块头)和块的身体(块体)。
块头
块头为六个部分:
· 软件的版本号
· 前一个块的哈希值
· Merkle树的根哈希值
· 世界时自1970-01-01以来以秒为单位的时间
· 当前困难的目标
· 特定场合
软件的版本号
在大多数情况下,软件版本号并不重要。但是,具有特定版本号的挖掘程序可以指示它支持哪个协议决。
前一个块的哈希值
前一个块的哈希值,也可以说是块的链。因为前一个块的哈希值包含在新块的哈希值中,所以区块链的块都是在彼此的基础上构建的。如果没有这个组件,每个块之间就不会有连接。
Merkle树的根哈希值
块中包含的所有事务都可以聚合到哈希值中。这就是Merkle树的根哈希。
自1970-01-01 T00: 00 UTC以来的秒数
块本身中的时间戳。时间自1970年1月1日起以秒为单位给出。
当前困难的目标
指示新哈希值必须小到什么程度才能声明有效性。换句话说,每个哈希值都有一个位大小。位的目标越低,就越难找到匹配的哈希值。
特定场合
特定场合是由工作量证明增加的变量。通过这种方式,挖掘器猜测一个有效的哈希值,一个比目标值小的哈希值。
这六个组件构成了块头。区头在比特币中扮演着重要角色,因为它将所有区块连接在一起。你可以把它想象成卡车的驾驶舱。这些是卡车通过网络控制时所带的重要文件。
块体
块体可以想象成卡车的装载空间。它包含与块确认的所有事务。
当挖掘程序构造一个块时,它会验证事务。也就是说,他主要检查寄件人是否有足够的钱。他可以很容易地从区块链中读取这些信息。如果发件人想发送10个比特币,他会查看过去的数据块,看看发送者是否已经收到10个比特币。
块中的事务不仅在列表中,而且在所谓的Merkle树中。
什么是Merkle树?
Merkle树的名字来源于数学家Ralph
Merkle。许多信息可以用一个哈希值表示。为此,首先会对数据本身进行分发哈希值。然后哈希直再次被分发并合并。最后,Merkle树被合并到一个哈希值中。最后一个哈希值也称为根哈希值,即树的根。它在一个相对较短的字符串中表示其叶”(单个事务)和分支”(叶的哈希值)的所有信息。
只要知道所有的分支和叶节点,创建根哈希就非常简单快捷。就像哈希值函数一样:它在一个方向上工作得清晰而迅速,在另一个方向上是不可能分解的。如果根哈希值已知,但事务未知,则不可能猜测事务。
因此,仅使用根哈希值是不够的,必须保存块的其余部分。因此,通过再次哈希值块中包含的信息,挖掘器可以在任何时候验证根哈希值。只要哈希值函数相同,对于给定的数据输入,矿工们总是会得到相同的哈希。这非常方便,因为它们只能检查它们是否与哈希值处于同一级别即可。
挖掘:搜索特殊哈希值
在这种背景下,更容易理解工作量证明的挖掘。在挖掘时,块的块头会被增量地更改以获得一个特殊的哈希值。头由五个常量和一个变量组成。常量是软件的版本号、前一个块的哈希值、Merkle树的根哈希值、时间戳和搜索哈希值的目标大小(以字节为单位)
变量是nonce。nonce是由1提出的数字。然后挖掘器对数据进行分发哈希值,并检查数据是否产生了低于搜索目标值的哈希值。如果哈希值大于目标值,挖掘器将重复该过程;因此,它将nonce增加1,哈希值会再次检查。它重复这个过程,直到找到低于目标的哈希值,或者从另一个低于目标值的网络工作者那里获得另一个块。然后获取这个新块并将其用作下一个块的基(使用新哈希值作为上一个块的哈希值”)。
挖掘是一个超重复的过程,其目标是找到一个特殊的哈希值。一旦找到哈希值,游戏就重新开始。找到特殊哈希值的概率取决于难度。比特币平均每十分钟就会发现一个新的区块。这个难度一直在变化,所以这个平均值保持不变。
这个过程的特殊之处在于,只有通过猜测才能找到特殊的哈希值。这个速率会消耗计算能力和能量。查看特殊哈希值就足以看出它是特殊的,因为它以0开头。
下面是一个来自比特币区块链的哈希值例子:
000000000000000000094 bfa4edb1245c347e42452e4418e9fe5a1d24e335b16
哈希值表:区块链的matryoshka
块可以简化为matryoshka想象的那样。最小的玩偶是未标价的交易。下一个信封是这个事务的哈希值形式。此后,两个哈希值事务被哈希在一起。所以哈希值会被合并得越来越多。最后,只剩下一个哈希值,即根哈希值或最大的matryoshka。
在某位面的李2星评价
2020-09-01 14:45:16
说到区块链出块,我们不得不提两个名词:节点、共识机制。节点决定着谁有出块的资格,共识机制则决定着这些有出块资格的节点,最终哪个节点可以出块。
那么,什么是节点呢?
每一个安装有比特币客户端软件并连接到比特币区块链的电脑就是比特币区块链的一个有效节点。
这个世界上有多少这样的电脑,区块链上就有多少个节点。
明白了什么是节点,那我们来聊聊什么是“共识机制”,其实所谓的共识机制就相当于我们所说的投票,不同的共识机制相当于投票规则不同,例如:有的要过半数、有的要达到三分之二的票数。
所有的节点都具备投票的权利,每次要出块的时候,所有的节点都会参与投票,按照不同的投票规则(共识机制)进行投票,从而选出一个节点,所有节点通过共识机制就达成了共识,本轮投票以选中的这个节点出的块为准,其他节点出的块就不作数了。
获得区块权利的人出块之后会得到区块链的奖励,也就是代币(如:比特币),为了得到奖励,大家都会争抢出块的权利。
在区块链中,共识算法的好坏最终决定区块链出块的效率。目前常用的共识算法有:POW、POS、DPOS、PBFT、RAFT等。
但是区块链出块即便是有共识机制,也经常会遇到各种问题,例如:共识机制达不成共识,也就是投票没有结果,这种情况下,区块链会重新发起投票,直到投票得出结果为止。
区块链系统一套自己的规则和逻辑,在自己的世界可以完美的运转