采矿是如何运作的(为什么需要采矿?)

加密货币是当今Internet上讨论的最热门话题之一。但是在了解采矿的工作方式之前, 我们可以问自己以下两个问题:
为什么需要采矿?
加密货币挖矿不仅仅是赚钱。矿工在区块链网络中具有重要作用。他们解决数学问题并批准其他用户在互联网上的交易。矿工可以保护区块链免受区块欺诈和黑客攻击, 并保证网络的去中心化。
但是挖掘的主要功能是不同的。主要功能是达成协议, 在此基础上可以认为某笔交易是有效的, 因此, 任何用户都无法花费已经在另一笔交易中花费的硬币。这就是为什么接收比特币只是做有用的工作的副作用。
加密矿工的目的是什么?
每当进行加密货币交易时, 加密货币矿工就负责确保信息的真实性并使用有效交易更新区块链。挖掘过程涉及与其他加密矿工竞争, 以解决与包含交易数据的区块相关的加密哈希函数的复杂数学问题。
第一个解决难题的加密货币矿工可以通过授权交易而获得回报, 并且作为所提供服务的回报, 加密矿工自己赚取了少量的加密货币。
现在我们知道了加密货币采矿和矿工的目的, 我们可以继续前进并了解其工作原理。为此, 我们可以看一下区块链中一个块的结构:
表–
块状结构

8896
交易数量 1800
交易价值 $ 1349873
时间戳记 2017-11-11 01:35:55
由中继 ViaBTC
困难 1765987453897.67
尺寸 1063.67 kB
随机数 880
区块哈希 0000abcdcee78ab745b9f…
除了上面提到的字段外, 块实际上包含更多的字段。但是, 我们现在将重点放在” 块哈希和Nonce” 字段上。
区块哈希-
好吧, 可以通过存储数据的哈希值来” 存储” 区块链中的数据, 这样, 如果你有要自己哈希的数据并对照区块链中的那个进行校验, 则至少可以验证存储哈希值的数据是该数据。默克尔树是执行此操作的一种方法。请参考下图以了解为什么使用Merkle树。
采矿是如何运作的(为什么需要采矿?)

文章图片
图–
Markle树
因此, 要构建Merkle树, 你需要创建一个树数据结构, 其中每个叶节点都包含要存储的数据部分的哈希值。从那里开始, 获取子节点串联的哈希, 然后将值传播到父节点, 继续此过程直到树, 直到生成最终哈希。叶子上的即使很小的变化也将向上传播并改变最终的哈希值。
哈希是使用哈希函数生成的256位十六进制数, 例如, 比特币使用SHA256算法生成哈希。
我们知道, 矿工的目的是计算将获得奖励的区块的哈希值。似乎很容易。为了平整该字段, 每个矿工都限于特定的目标哈希。目标哈希值表示, 对于矿工开采的每个区块, 如果计算出的哈希值大于目标哈希值, 则将其丢弃。
随机数–
这就是Nonce概念起作用的地方。 Nonce代表” 号码仅使用一次” 。众所周知, 矿工必须计算哈希值, 该值应低于分配给他的目标哈希值。但是由于雪崩效应, 他无法更改块号, 数据, 先前哈希以猜测新哈希。他唯一可以改变的领域是Nonce。
随机数是一个32位数字。因此, 当2 ^(32)= 4、294、967、296时, 最大可能有大约40亿个Nonce值。
为每个迭代随机选择随机数。因此, 对于每次迭代, 选择0到4之间的随机整数294、967、296。
请考虑下表:
8896
交易数量 1800
交易价值 $ 13849673
时间戳记 2017-11-11 01:35:55
由中继 ViaBTC
困难 1456324543655.677
尺寸 1066.34 kB
随机数 880
区块哈希 000abddbcdef673bedb4…
采矿是如何运作的(为什么需要采矿?)

文章图片
图–
所有可能的哈希
在上图中, 圆圈代表针对特定随机数值获得的哈希值。黑色圆圈表示计算出的哈希值无效。绿色圆圈代表有效的哈希值。分配给矿工的TARGET意味着, 仅当计算的哈希值由4个前导零组成(此处仅作为示例。目标哈希值可以随多个前导零而变化), 矿工才能开采该块。大于此值的所有哈希将被丢弃。
【采矿是如何运作的(为什么需要采矿?)】我们从88的随机数开始, 如我们所见, 它产生的散列大于目标散列。随机数值更改为777, 并重新计算哈希。我们重复此过程, 直到找到一个随机数, 该随机数产生的哈希值小于目标哈希值。根据上图, 这发生在Nonce值7778处。现在, 矿工可以验证该区块并将其添加到区块链中。

    推荐阅读