Comunion 区块链深度学习系列|哈希算法的应用

币圈资讯 阅读:21 2024-06-02 06:20:57 评论:0
美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

本系列包括:基本概念和原理、密码学、共识算法、钱包和节点原理、挖掘原理和实现。

挖矿

以比特币网络为例。SHA-256是比特币挖矿中使用的主要算法,其具体过程如下图所示。

我们从上到下进行分析:

第一层是:n版本(版本号);

第二层是:hash preblock(前一个块的hash);

第三层是:hash Merkle Root(交易Merkle Root),

第四层是:n Time(时间戳);

第五层是:n位(难度值);

第六层是:n Nonce(随机数);

第七层是:Hash(哈希函数)。

n代表连续零的数量,小于当前区块难度目标值m,挖掘区块的条件是前n位全部为零,n越大难度越大。假设最低难度对应的最大目标值为m,则区块难度为m/m。

看过前面课程的朋友应该有印象,这些都是块头中的数据字段。

再看左边,我们来分析一下为什么有些是固定的,有些是可变的。

1的版本号。和前一块的散列是固定的。以比特币为例,假设当前比特币区块高度为N,如果有人想要挖掘下一个N+ 1区块,那么此时版本号必须固定,并且前一个区块的hash也必须固定。因为在没有分叉的情况下,当前块包含前一个块的哈希值;

即N- 1 block的哈希值与n block的数据相加计算出n block的哈希值,然后将n block的哈希值视为N+ 1 block的上一个哈希值。这里有一点绕路,希望大家能多理解;

2.交易Merkle根是可变的。为什么是可变的?因为挖矿的时候肯定会准备一个包块。当打包块形成时,矿工将根据自己的需求或根据利息算法对交易进行打包,并最终将其组织成Merkle根;

3.时间戳是可变的,并且存在挖掘的时间范围。在这个时间范围内挖的矿都是有效的,所以有效时间内的时间可以随意调整;

4.难度值在一定时期内是固定的,会随着时期的变化而变化;

5.Nonce是可变的,所以我不会在这里谈论它。忘了的朋友可以看看之前的解释。

在挖掘时,当涉及到Nonce时,由于时间戳和Merkle根已通过计算固定,因此只需更改Nonce。此时,这七项数据可以视为一个整体。前六个数据是X .如果你把X放入哈希函数中,就会得出一个值,比如Y。

由于比特币网络中使用的哈希算法是SHA-256,当Y的值出来时,将获得一个由256个0和1组成的字符串。这个字符串出来后,将与x中的难度值进行比较。

每次计算,即传递一个Nonce,都会产生一个y值,该值将大于难度值。如果y值小于难度值,此时将找到一个有效的Nonce,并且将挖矿。

生成地址

哈希算法也用于地址生成。从下图中,您可以看到从公钥生成比特币地址的过程。【比特币为什么会出现】

第一层:生成公钥(如何生成将在后面的课程中回答);

第二层:两层哈希算法,SHA-265和RIPMD- 160(通常称为双重哈希或哈希160);

第三层:然后双层哈希计算会生成公钥哈希;

第四层:Base58Check编码(在Base58编码的基础上改进);

第五层:编码后得到一个编码字符串,这个字符串就是公钥hash,也就是比特币地址。

形成Merkle树和事务散列

哈希算法也用于默克树结构和事务哈希。

在上面的Merck树中,底部有四个叶节点,最左边的H A下面有一个Hash(TxA),这意味着:Tx代表transaction,A代表transaction number。

假设现在使用的哈希算法是SHA-256,则在生成交易时,将分别对HA和HB进行哈希运算,分别得到由256个零和1组成的两个字符串。同样,HC和HD也将获得相应的字符串,这样这四个交易将形成总的默克尔根。

区块链(哈希链)

每个人都知道在区块链,每个街区都是一个接一个连接起来的,就像一条链子。让我们通过下面的图片来详细分析一下。

从图中可以看出,链的顺序是从下到上递增的。最低块的高度是2773 14,这个块包含前一个块的哈希值:0000…0bdf(红框1),其中0000…0bdf是前一个块(2773 12)。

同样,块2773 15: 0000…2249(红框3)中包含的前一个块头哈希值也是块2773 14的块头哈希值,即:0000…2249(红框2)。同样,在block 2773 16中也是这种情况,这也是我们希望您在第一节中能够更多了解的问题。

这种情况可以确保任何人都可以找到该块中包含的前一个块【比特币报价】的哈希值,即其父块。

我们现在讨论的问题都是针对区块链没有分叉的情况。稍后,我们将详细分析区块链分叉后会发生什么。

通过这三个区块,我们可以发现区块链在某种程度上是一个哈希链。新生成的块通过哈希值指向前一个块,前一个块指向前一个块...一直到创作区。通过这种关系,这些区块形成了一条链,也就是我们常说的区块链。

这是区块链常用的哈希算法的一个具体应用。你可以事先想一想,为什么在区块链使用哈希算法而不是其他算法?我们将在后面的课程中为您解答。

下一节预览:什么是哈希?

文字格式和图片示例

注册有任何问题请添加 微信:MVIP619 拉你进入群

弹窗与图片大小一致 文章转载注明 网址:https://netpsp.com/?id=66175

美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址
可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
平台列表
美化布局示例

欧易(OKX)

  全球官网 大陆官网

币安(Binance)

  官网

火币(HTX)

  官网

Gate.io

  官网

Bitget

  官网

deepcoin

  官网
关注我们

若遇到问题,加微信客服---清歌

搜索
排行榜
扫一扫,加我为微信好友加我为微信好友