主页 > 下载imtoken钱包 > 黑客每天手动计算比特币挖矿0.67M算力

黑客每天手动计算比特币挖矿0.67M算力

下载imtoken钱包 2023-11-11 05:07:18

在这篇文章中,我们来看看用纸和笔“挖”比特币有多难。其实挖矿用的SHA-256算法其实比较简单,可以手工计算。毫无疑问,这个过程肯定比 GPU 或 CPU 慢 N 倍,会觉得有点不切实际。但是用纸和笔手动完成一次挖掘算法计算,确实可以让你更深入的了解整个算法的工作机制。

下图显示了我们用纸和笔手工计算的一轮 SHA-256:

挖矿过程

p>

比特币的挖矿算法

挖矿是比特币系统整体安全性的关键部分。挖矿的思路如下:比特币矿工将一系列比特币交易组织成一个区块,然后反复进行N次加密哈希计算(哈希计算),直到找到特定的哈希值。至此,该区块已成功“挖出”,成为比特币区块链的一部分。事实上,计算任务本身是没有意义的,但由于很难找到一个成功的区块,这就保证了其他人无法接管比特币系统。更多关于挖矿的信息比特币的挖矿算法,请参考这篇文章【比特币挖矿】。

加密哈希函数可以获取大量输入数据并输出不可预测的输出值。对于比特币,它使用的哈希函数称为 SHA-256。为了提供额外的安全保护,比特币使用了两次 SHA-256 函数,即所谓的双 SHA-256。

在比特币系统中,成功的哈希以足够的零开始。就像你在日常生活中很少看到手机号码或身份证号码以多个 0 结尾一样,我们也很难找到哪个哈希值以多个 0 开头。但在比特币系统中,一切都呈指数级增长。目前,一个成功的哈希必须以大约 17 个零开头,因此哈希计算的成功率约为 1/1.4×1020。换句话说,找到正确的哈希值比大海捞针更难。

下图显示了比特币区块链中的一个区块和相应的哈希值。在下图中,以黄色标记的哈希字节用于生成块哈希。可以看到,计算出来的哈希以足够多的零开始,现在已经被成功挖掘了。

比特币的挖矿算法

比特币使用的 SHA-256 哈希算法

SHA-256 哈希算法的输入数据块为 512 位(64 字节),结合加密数据,产生长度为 256 位(32 字节)的输出值。 SHA-256 算法由 64 个相对简单的重复计算组成。下图是其中的一轮计算,其中8个4字节的数据作为输入,从A到H,经过一系列的计算比特币的挖矿算法,得到一个新的A-H值。

比特币的挖矿算法

具体计算过程请参考中本聪的比特币白皮书【传送门】。

人工采矿

在下面的视频中,我们将向您展示如何使用纸和笔来计算刚刚描述的 SHA-256 哈希计算。我自己在挖矿过程中实现了一轮hash计算,整个过程耗时16分钟左右。

视频地址:youtu.be/y3dqhixzGVo

比特币的挖矿算法

下图是比特币区块上一轮哈希计算,计算结果用黄色标注。末尾的多个零表示这是一次成功的哈希计算。

硬件挖矿

SHA-256 哈希计算中的每一步都可以用数字逻辑计算(简单的布林运算和 32 位求和),因此定制的 ASIC 芯片可以在硬件上高效地实现 SHA-256 算法,并且能够执行数百次在单个芯片上并行进行几轮散列。下图显示了一个计算速度为 2-3 Ghash/sec 的挖矿芯片:

比特币的挖矿算法

相比之下,Litebi、Dogecoin 和类似的山寨币使用 scrypt hash 哈希算法,这在硬件上很难实现。它需要在内存中存储 1024 个不同的哈希值,然后以一种不可预知的方式将它们组合起来,生成最终的值。因此,scrypt 哈希算法将需要比 SHA-256 更多的电路板和内存。你也可以从挖矿速度和硬件上学习,毕竟挖这些山寨币(scrypt)比挖比特币(SHA-256))慢几千倍。

总结

SHA-256算法其实很简单,简单到可以手动计算。然而,用于签署比特币交易的椭圆曲线算法很难手动计算,因为它会涉及到 32 字节整数的乘法。我花了 16 分 45 秒来完成一轮 SHA-256 散列,以这个速度相当于一个完整的比特币块(128 轮)散列需要连续 1.49 天,或 0.@ > 每天 67 个哈希值。相比之下,目前的比特币挖矿硬件每秒可以执行几兆字节,比人工计算要快得多。毫无疑问,比特币人肉挖矿绝对是不切实际的。

后记

一位 Redit 读者问我关于体能消耗的问题。其实整个过程并不需要消耗太多的体力。假设人体的静息代谢率为每天1500大卡,手动hash计算所消耗的能量约为1000焦耳/hash。而硬件挖矿平均消耗1000兆哈希/焦耳。这意味着人肉挖矿的能源成本大约是硬件挖矿成本的10^16倍。考虑到食物的问题,一个普通甜甜圈的价格是0.$23,能量是200卡路里。电费约为0.$15/kWh,因此计算哈希的成本是6.7倍,是硬件挖矿成本的10^8倍。显然,我不打算靠人肉挖矿来赚钱,也没有考虑到计算所需的纸笔成本。