主页 > imtoken手机版下载 > 区块链到底是什么区块?基于“挖矿”的算法(干货分享)
区块链到底是什么区块?基于“挖矿”的算法(干货分享)
区块链的区块到底是什么?
简单来说,块可以理解为一个结构。我们知道结构可以存储不同类型的信息,可以是字符串、数字或日期。该块中包含什么信息?这里给个图,我们先来了解一下区块信息的大类。(微信公众号:币多多区块链)
weixin.qq.com/r/Bi6GnrDEke3urfT993sU(二维码自动识别)
如图,一个block中的信息是按类别划分的,主要分为这四类。你只能对这一点做一个概念性的理解。真正影响区块生成的信息主要是区块头中的以下几项:
index(记录当前区块号)
当前哈希
前一个hash(接收一个块时的hash值,该块可以在时间序列上得到保证)
timestamp(时间戳,记录区块的生成时间)
数据(交易详情、每笔交易的发送方和接收方详情、金额和数字签名)
noounce(随机数,即全网矿工共同计算出的满足哈希难度要求的答案)
我们希望对nounce值有一个第一印象。这个噪声值不仅与挖矿有关,在后续的代码实现中也有着非常重要的标识。
什么是哈希和哈希值?
为了理解挖掘的代码机制,让我们首先解决几个概念。第一个是“哈希”。
我们在上一篇关于挖矿的文章中提到了计算能力。也有人说计算能力是矿工每秒可以进行多少次哈希冲突。那么,什么是哈希,什么是哈希冲突?
那么,简单理解就是哈希函数。哈希冲突的本质是在随机枚举值的过程中,CPU不断寻求生成与比特币当前“难度”条件相匹配的值。一旦找到该值,就会发生成功的哈希冲突。
现在的你一定很气哈西是个什么样的人呢?我们 == SHA256 == 哈希算法一探究竟。
经过测试,我们可以发现哈希函数有一些非常独特的特点:
任何内容都可以生成哈希值。
哈希值是一个固定长度的十六进制数。
不同的内容会产生不同的哈希值。即使是非常相似的内容也会产生完全不同的值而没有模式。
每次相同的内容输出相同的哈希值。
通过比较“hello”、“helloworld”、“hello world”和“hello, world”的输出结果,我们可以验证我们对哈希算法的总结。有兴趣的同学可以去验证一下其他值,你会发现,无论多小,都会导致哈希值发生完全无法追踪的变化。
正是哈希值的这些特性,赋予了它更高的安全性加密信息。
挖矿的“难点”
最后一个概念是挖矿的难度。这里的难点是由浅入深。我们举个例子来了解它的原理。
例如,我们将一个 5 位数字排列组合成一千万位。如果是第一次排列组合区块链矿工是什么意思,我指定万位和千位为5,其他位不限;对于第二个排列组合,我只指定万位数为5,那么取大者的概率和取小者的概率。毛呢布?
——答案是第一个概率小,第二个概率高。因为数量越多,可用的其他选项就越少。
同理,挖矿就是匹配已经分配了位数的哈希值。挖矿的“难度”由指定位数决定。这与以十六进制指定的数字无关。
如上框所示,当哈希值难度的前四位设置为“0”时区块链矿工是什么意思,只有匹配的前四位为“0”时才会发生成功的哈希冲突。如果“0”集合的个数越多,哈希越难成功,越难挖掘。
比特币一开始,难度很小,只有第一位是“0”,碰撞成功。那时的挖矿非常简单。现在,随着全网算力的提升,挖矿难度也很大,目前的哈希难度已经是十几个“0”了。