云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

腾讯云_手机微信文件存储位置_9元

小七 141 0

内容:

引言块链一个街区创世地块散列交易数据梅克尔树时间戳Nonce

简介

如果我们将区块链和加密货币的概念分为两个部分:区块和交易流,就很容易理解。在这篇文章中,我们将学习如何在比特币中创建块以及块的组成部分。

区块链

区块链是一个分散的数据库,或者简单地说是一个分散的链表,其中记录列表(称为块)通过密码连接。所谓去中心化,是指没有一个数据库保存所有记录,而是将同一组数据保存在多个数据库中。区块链中的块包含记录列表(称为事务数据)、时间戳(UNIX时间)和前一块的加密哈希(哈希将前一块数据转换为固定长度的随机数据)。这个保存块的过程可以在下面看到(您可以在这里制作自己的块):

图1:区块链的一个例子

一个块

在介绍部分,大数据的商业价值,我们已经看到了块是如何相互链接的,大数据入门,一个块包含什么。现在让我们一部分一部分地探索一个区块(区块头)的技术信息。

图2一个区块

创世区块

它是任何区块链的第一个区块,它的值总是硬编码的。由于之前的块不存在,因此在本例中,之前的哈希值仍为"0"。所有数据都保存在后面的块中,下一个块的"前一个散列"部分中的Genesis块的散列值如上图1所示散列是一种使用算法将任意长度的字符串转换为固定长度字符串的过程。在区块链的情况下,快速自助建站,这是非常重要的,因为它有助于跟踪巨大的数据而不保存它们,而是保存数据的散列。比特币使用SHA256,以太坊分别使用Keccak-256算法。唯一需要注意的是,这个生成的哈希键存储当前块的数据和下一个块的地址,从而链接两个块并跟踪上一个块。在下面给出的图表中,我使用SHA256算法生成了一个字符串的哈希值,您也可以从这里生成哈希值。

图3 SHA-256转换

事务数据

所有事务记录都保存为事务数据。区块链的每个区块可以包含数千个交易数据,将每个区块内的所有数据作为一个系列存储将是低效的。这将降低数据的搜索效率。为了解决这个问题,块内的数据以Merkle树的形式存储。

Merkle树

Merkle树是以叶子和子节点的形式表示数据(在本例中是事务数据的哈希键)。这些节点连接到单个根。这个根表示所有事务数据到一个哈希键中。简单来说,假设一棵树有多个分支,每个分支都有自己的分支。现在最后一级分支将有我们的数据。如前所述,这些数据将有自己的哈希键。这些散列密钥将成对放置,并将再次散列。重复这个过程直到我们只得到一个散列。该散列作为数据存储在区块链中,使用它只能检索其他数据。这种高层次的散列使得它可以防篡改。

图4 Merkle树

时间戳

顾名思义,时间戳是存储在块中的日期时间值。没有日期和时间数据,海淘返利,世界上的任何事务都是不完整的。它告诉我们该块是在什么时候创建的。在区块链中,该值以Unix时间戳的形式存在。Unix Timestamp是自1970年1月1日起经过的秒数,这意味着Unix时间中的0000000000等于1970年1月1日12:00:00 AM。时间戳是GMT的转换值。因此,返利手游,如果创建了一个块,它将使用GMT的当前时间并将其转换为Unix时间,如果它大于上一个块保存的时间,则验证它,然后保存它。你可以在这里把任何时间转换成UNIX时间nonce的字面意思是"在特定的场合是独一无二的"。nonce不是一个通用的区块链术语,而是一个密码术语,主要用比特币来讨论。nonce是一个必须猜测的数字,当在当前块的散列值之前添加时,应产生一个散列值小于难度的值(它也是块的一部分,并为每个块重新生成),其长度等于散列块长度,即64个字符,对于比特币,其长度等于SHA-256。查找临时事件的过程:此人(矿工)必须猜测nonce的值(可以从000…0001开始)获取上一个块的块头的哈希值(000dceb75a135c…)将该nonce附加到块头的哈希之前(000…0001000dceb75a135c…)重设上述附加值(xyz)从块标题获取难度值(abc)检查上述重设值是否小于难度值(xyz