加密货币是当今Internet上讨论的最热门话题之一。但是在了解采矿的工作方式之前, 我们可以问自己以下两个问题:
为什么需要采矿?
加密货币挖矿不仅仅是赚钱。矿工在区块链网络中具有重要作用。他们解决数学问题并批准其他用户在互联网上的交易。矿工可以保护区块链免受区块欺诈和黑客攻击, 并保证网络的去中心化。
但是挖掘的主要功能是不同的。主要功能是达成协议, 在此基础上可以认为某笔交易是有效的, 因此, 任何用户都无法花费已经在另一笔交易中花费的硬币。这就是为什么接收比特币只是做有用的工作的副作用。
加密矿工的目的是什么?
每当进行加密货币交易时, 加密货币矿工就负责确保信息的真实性并使用有效交易更新区块链。挖掘过程涉及与其他加密矿工竞争, 以解决与包含交易数据的区块相关的加密哈希函数的复杂数学问题。
第一个解决难题的加密货币矿工可以通过授权交易而获得回报, 并且作为所提供服务的回报, 加密矿工自己赚取了少量的加密货币。
现在我们知道了加密货币采矿和矿工的目的, 我们可以继续前进并了解其工作原理。为此, 我们可以看一下区块链中一个块的结构:
表–
块状结构
块 | 8896 |
交易数量 | 1800 |
交易价值 | $ 1349873 |
时间戳记 | 2017-11-11 01:35:55 |
由中继 | ViaBTC |
困难 | 1765987453897.67 |
尺寸 | 1063.67 kB |
随机数 | 880 |
区块哈希 | 0000abcdcee78ab745b9f… |
区块哈希-
好吧, 可以通过存储数据的哈希值来” 存储” 区块链中的数据, 这样, 如果你有要自己哈希的数据并对照区块链中的那个进行校验, 则至少可以验证存储哈希值的数据是该数据。默克尔树是执行此操作的一种方法。请参考下图以了解为什么使用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处。现在, 矿工可以验证该区块并将其添加到区块链中。
推荐阅读
- 如何成为软件架构师(学习路线图)
- 著名公司如何使用机器学习(机器学习应用例子)
- 链接器如何解析在多个位置定义的全局符号()
- 我如何在Facebook中发现错误并获得500美元()
- Jetty热部署问题
- Linux主机入侵检测
- Zabbix安装部署六————监控nginx
- RAID硬盘阵列
- GPT分区,ens33没有网卡,Llnux挂载Windows文件夹