网赚论坛

标题: 【一期四团Day-7李大坤】一道数学题和区块的生成 [打印本页]

作者: a60825981    时间: 2017-10-21 14:27
标题: 【一期四团Day-7李大坤】一道数学题和区块的生成
区块链上每个区块的结构包括区块头以及数据记录。其中区块头的信息大小是80字节,信息有:

4B的版本号;
32B的上一区块的散列值;
32B的当前区块的Merkle树散列值;
4B的当前区块的难度值;
4B的当前区块的时间戳;
4B的当前区块的随机数。

区块头下面是数据记录信息,其中第一笔信息是为了让矿工获得手续费即奖励的特殊交易。

区块头中这些信息分别是什么作用以及分别是如何产生的呢?


当前区块的Merkle树散列值

这个值的计算方式是把区块中所有的数据记录进行多次哈希运算得出的最终哈希值,比如把数据记录A进行哈希运算得出HASH(A),同样对数据记录B运算得出HASH(B),然后把(HASH(A)+HASH(B))作为新的字符得出上层的HASN(AB),以此类推,把所有的数据记录经过计算之后,得出的最终HASH就是Merkle树散列值。这个值是为了让区块前后联系起来,如果区块链中某笔交易被修改,那么该笔交易所在的区块的merkle值就会发生变化,当merkle值发生变化后,这个区块头的哈希值也会发生变化,改变后的值就无法和下一个区块的“上一区块的散列值”无法对应。

当前区块的难度值

每个区块产生的速度是10分钟,全网的算力是不断变化的,为了保证这个速率,所以需要调整运算的难度值。全网算力增加,难度值增加,反之相反。难度值计算的公式如下:

新难度值 = 旧难度值 * ( 过去2016个区块花费时长 / 20160 分钟 )

工作量证明其实是解一道数学题,这个数学题可以这样表述:

M是已知数,请通过HASH256算法,不断变更区块头的随机数,使得HASH(HASH(block header))得出的值小于M.

那么这个M是怎么得出来的呢?是通过下面的公式:

M=MAX(m)/难度值。其中MAX(m)是已知数,通过对新难度值的计算的代入,就可以得到M.

当前区块的随机数

这个值是计算机通过上述方式计算找到的,目的也是为了上述这个数学题计算本身。从上面的公式可以看出来,难度值越大,M就越小,那么数学题所在的解落入M区间之中的概率就越小,计算的次也就越多。

上一区块的散列值

这个值是根据把上一区块头的80字节进行哈希计算得出的散列值,如果把当前区块的80字节的信息进行哈希计算,则得出下一区块的“上一区块的散列值”。这个值是上一区块找出随机数后生成的散列值(哈希值),是计算机解题找出随机数后,以整个区块头为输入得出的散列值。




欢迎光临 网赚论坛 (http://www.caifuba.net/) Powered by Discuz! X3.1