主页 > imtoken钱包官网大陆苹果怎么下载 > 无法回答?别说你懂区块链

无法回答?别说你懂区块链

关于比特币区块的生成和工作流程,我们都知道:

一群人参与区块的计算,最先计算区块哈希值的人会将自己计算的哈希值广播给其他人。其他人在自己的矿机上验证,如果值正确,则该区块链接到前一个区块,并奖励最先计算哈希值的人一定数量的比特币。

我想问三个问题:

1.算力不如别人,何不提前开始计算下一个区块呢?

2.如果前一个区块的随机数是0X1234567,为什么不继续0X1234567呢?

3.既然矿工在找一个随机数,那么有矿工在1分钟左右找到那个随机数吗?

如果你能回答,你可以关闭这个页面。真的,时间太宝贵了!

比特币的白皮书很神秘比特币骰子算法,读起来像嚼蜡。我尝试用一​​些通俗易懂的语言和例子来剖析一个比特币区块的来源,这就是工作量证明背后的原理。当然,你仍然需要大约 10 分钟的耐心阅读,才能更清楚地理解这个关于区块链的重要知识点。至少,如果你出去强迫你,你不会被骂。

开始,我们先来了解一下block的结构:

回答不出来?别说你懂区块链

我们常说一个区块就像一个盒子,里面包含了一条交易信息。因此,在大多数人的想象中,区块链就像一排按顺序处理过的盒子!然而,我们所见过的货物纸箱都会有一个标签,而在区块链世界这个标签被称为“区块头”。

回答不出来?别说你懂区块链

我们在BTC.com的搜索框输入10000,弹出的页面是10000号区块的详细信息,注意!摘要是我们想象中的“区块头”中包含的信息。一笔交易就是一笔转账交易的记录。

好的,恭喜!之前知道“块是盒子”,现在知道“块是带标签的盒子”,label = block header。

回答不出来?别说你懂区块链

上面红框中的Nonce=0x7fe05d3a,没错,就是传说中的随机数,看起来没那么复杂,但是为什么这么难找呢?

其实随机数并不是我们要找的,我们要“传递”这个随机数来计算右边区块的hash(准确的说应该叫区块头hash,因为hash其实和交易信息无关)

0000000099c744455f58e6c6e98b671e1bf7f37346bfd4cf5d0274ad8ee660cb

这是我们最终会得到的真实结果,随机数只是计算哈希时的一个因素,仅此而已!

矿工计算时需要用到的数据如下:

A.上一个区块的哈希

B.Merkel 树哈希

C.时间戳

D.难度目标值

E.Nonce 随机数

这些概念需要分别解释:

A.上一个区块的哈希

现在块号是10000,所以上一个块的号是9999。从上图可以看出,上一个块的hash是

00000000fbc97cc6c599ce9c24dd4a2243e2bfd518eda56e1d5e47d29e29c3a7(BTC.COM 可查询)

B.Merkel 树哈希

当前区块包含的所有交易信息的索引,

回答不出来?别说你懂区块链

这里有一个不太相关的知识点说一下:虽然单个交易消息的hash也是32字节,但是默克尔树的hash值始终是32字节,我们可以把它作为交易信息的索引。

作为一个不恰当的类比,我们可以将上述结构想象成一棵祖传树。我们的头根是“孙子”,第二行是“父亲”和“母亲”,第三行是“祖父”、“祖母”、“祖父”和“祖母”。看!我们只需要用“grandson”这两个词来查找其他两个词,我们不需要记录默克尔树根中的所有名字。这样做的好处是不会造成数据太大,也便于检索。每笔交易!

如果你认真好学,你一定会发现为什么第三排第三排和第四排一样?我在重复吗?不,默克尔数遵循偶数原则。当区块中包含奇数时,默克尔数会自动复制一条交易记录的代码。所以有两个“事务C”

C.时间戳

时间戳是当前时间hash后的字符,很好理解,不多说。

D.难度目标值

还是掷骰子的例子,两个骰子。

一开始我们只需要滚动少于 12 点,这很容易。如果比特币网络将难度值调整为2。那么我们要扔的概率变小了,扔的次数增加了,相对难度肯定会增加!

至于这个数值背后的计算方法,这里不再赘述。我们可以想象难度值是一个水龙头,它是一个控制比特币出块速度的值。通常,它的规则只是不断变化!矿工需要计算的哈希值必须小于这个难度值才能批准区块。

此时需要提醒一下,矿工在创建区块时必须有【最后一个区块哈希值】(创世块除外)【默克尔交易参考】【时间戳】。 【难度目标值】!没有前一个区块的hash,就像一辆没油的车,无法启动!

E.Nonce 随机数

我们来看看0x7fe05d3a,这个数字似乎不太难。我们用彩票来比喻

抽奖号码包括:

1.2.3.4.5. 6.7.8.9.1< @0.11.12.13.14. 15.16.17.18.19.2<@0.21.22.23.24.25.26. 27.28.29.3<@0.31.32.33.34.3< @5.36

哈希值包括:

1.@ >2.3.4.5.6.7.8.9.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u. v.w.x.y.z

是双色球的中间概率,找到一个块所需的随机数哈希值低于赢得一组500万个双色球的概率。我们只需简单地将其想象为数字和字母的随机组合即可。

敲黑板,

敲黑板,

敲黑板,

有了以上共识,我们开始回答前三个问题比较容易

A代表.前一个区块的哈希

B代表.Merkel树哈希

C代表.timestamp

p>

D代表.难度目标值

E代表.Nonce随机数

1.如果算力不如别人,为什么不提前开始计算一个块呢?

回答:了解了区块头之后,我们就知道找到随机数的前提是什么比特币骰子算法,包括

A+B+C+D 4条数据

但是,如果不知道前一个区块的哈希值,下面的数据是无法计算出来的。

一个未知数?

B 是已知的(假设=2)

C 是已知的(假设=3)

D 未知?

E 未知?

A+2+3+D+E=Y,

什么是E,它是什么?很明显,如果你在演艺界问这个问题,你会被打败的!

2.如果最后一个随机数是 0X1234567,为什么不继续 0X1234567?

每个区块的初始值为0,矿工的第一个随机数为0。一个计算公式是对**(A+B+C+D+0)的结果进行hash,然后hash ,如果当前哈希结果未能满足目标难度要求(这是矿工第一次计算),那么矿工将逐渐将(A+B+C+D)的值加1,继续进行哈希计算!

回答不出来?别说你懂区块链

回答不出来?别说你懂区块链

同时,我们知道每个区块的哈希、交易数据、难度都不一样!即使是同样的难度值,交易数据和时间戳也是不一样的,出来的hash值肯定是不一样的。看上图,只是在A+B+C+D后面加了一个1,hash结果就完全不一样了,完全没有规律可言。那么,如果对当前的随机数进行倒计时,大多数情况下计算方向可能是错误的。

3.既然矿工都在找随机数,那么有矿工吗? 1分钟左右找到随机数怎么样?

答案是肯定的!结果是后面的区块难度会相应增加,比特币网络会自动调整难度值,尽可能将每个区块的生成时间平衡到10分钟左右!难度值是比特币区块的智能点击!

再补充一个问题,为什么叫工作量证明?它不叫随机数证明吗?因为其他矿工可以根据你得到的值,通过统计估计这个数字的难度值,所以他们可以知道找到这个 Nonce 随机数需要做多少工作,命名为“工作量证明”。

—结束—

生活就像区块链,

每天都是一个街区,

在昨天的区块中,事情无法改变,

今天的区块哈希正在计算中,

明天的区块无法提前计算。