主页 > imtoken最新安卓版本下载 > 区块链的各个组成部分是什么
区块链的各个组成部分是什么
大家都知道比特币是基于区块链的。 但是这个区块链是什么? 更准确地说,区块链的各个组成部分是什么?
区块链是数据块。 每个区块都可以被认为是账本中的一个。 单个块由多个组件组成。 大致可以区分为区块头(block header)和区块体(block body)。
笨重
区块头分为六个部分:
软件版本号
前一个块的哈希值
Merkle 树的根哈希
自 1970-01-01 以来的世界时间(以秒为单位)
当前困难的目标
特殊场合
软件版本号
在大多数情况下,软件版本号并不重要。 但是,具有特定版本号的挖矿程序可以指示其支持的协议。
前一个块的哈希值
前一个区块的哈希值也可以说是一个区块链。 因为前一个区块的哈希包含在新区块的哈希中,所以区块链的区块都是建立在彼此之上的。 没有这个组件,每个块之间就没有连接。
Merkle 树的根哈希
一个区块中包含的所有交易都可以聚合成一个哈希。 这是 Merkle 树的根哈希。
自 1970-01-01 T00:00 UTC 以来的秒数
块本身的时间戳。 自 1970 年 1 月 1 日以来的时间以秒为单位给出。
当前困难的目标
指示新散列必须多小才能声明有效性。 换句话说,每个哈希值都有一个位大小。 位的目标越低比特币区块的主要组成部分包括,就越难找到匹配的哈希。
特殊场合
具体场合是工作量证明添加的变量。 通过这种方式,矿工猜测一个有效的散列值,一个小于目标值的散列值。
这六个组件构成了块头。 区块头在比特币中起着重要作用,因为它将所有区块连接在一起。 你可以把它想象成卡车的驾驶舱。 这些是卡车在通过网络进行控制时随身携带的重要文件。
堵塞
街区可以想象成卡车的装载空间。 它包含所有用区块确认的交易。
当挖矿程序构建区块时,它会验证交易。 即他主要检查发送方是否有足够的钱。 他可以很容易地从区块链中读取这些信息。 如果发送者想发送 10 个比特币,他会查看过去的区块以查看发送者是否已收到 10 个比特币。
区块中的交易不仅在列表中比特币区块的主要组成部分包括,而且在所谓的 Merkle 树中。
什么是默克尔树?
Merkle 树的名字来源于数学家 Ralph Merkle。 很多信息可以用哈希值来表示。 为此,首先对数据本身进行分布式哈希处理。 然后再次分发和合并散列。 最后,默克尔树被合并成一个散列。 最后一个散列也称为根散列,即树的根。 它以相对较短的字符串表示有关其“叶子”(单个交易)和“分支”(叶子的哈希值)的所有信息。
只要已知所有分支和叶节点,创建根散列就会快速而简单。 它就像一个散列函数:它在一个方向上干净而快速地工作,并且不可能在另一个方向上崩溃。 如果根哈希已知,但交易未知,则无法猜测交易。
因此,仅使用根哈希是不够的,必须保存块的其余部分。 因此,通过对区块中包含的信息进行重新哈希,矿工可以随时验证根哈希。 只要哈希函数相同,矿工将始终为给定的数据输入获得相同的哈希值。 这非常方便,因为他们只能检查它们是否与哈希处于同一级别。
挖矿:寻找特殊哈希值
在这种情况下,工作量证明挖掘更容易理解。 挖矿时,区块的区块头会被递增地改变,从而获得一个特殊的哈希值。 标头由五个常量和一个变量组成。 常量是软件的版本号、前一个块的哈希、Merkle 树的根哈希、时间戳和搜索哈希的目标大小(以字节为单位)
变量是随机数。 nonce 是一个加 1 的数字。矿工然后分发数据的哈希值并检查数据产生的哈希值是否低于搜索目标值。 如果哈希值大于目标值,则矿工重复该过程; 因此,它将 nonce 加 1 并再次检查哈希。 它重复这个过程,直到它找到一个低于目标的散列,或者从另一个低于目标的网络工作者那里得到另一个块。 然后获取这个新块并将其用作下一个块的基础(使用新哈希作为“前一个块的哈希”)。
挖矿是一个超重复的过程,其目标是找到特定的哈希值。 一旦找到哈希值,游戏就会重新开始。 找到特定哈希的概率取决于难度。 比特币平均每十分钟发现一个新区块。 这个难度一直在变化,所以这个平均值保持不变。
这个过程的特别之处在于特殊的哈希只能通过猜测找到。 该速率消耗计算能力和能量。 看特殊哈希就足以看出它是特殊的,因为它是从 0 开始的。
这是来自比特币区块链的示例哈希值:
000000000000000000094 bfa4edb1245c347e42452e4418e9fe5a1d24e335b16
哈希表:区块链的套娃
积木可以像俄罗斯套娃想象的那样简化。 最小的娃娃是未上市的交易。 下一个信封是此交易的哈希版本。 此后,两个散列交易被散列在一起。 所以哈希会越来越多地合并。 最后,只剩下一个散列,即根散列或最大的套娃。