主页 > imtoken国际版下载 > BTC 挖矿算法究竟是如何工作的?

BTC 挖矿算法究竟是如何工作的?

imtoken国际版下载 2023-03-26 05:27:17

比特币挖矿是比特币系统安全的关键部分。其原理是比特币矿工将一堆比特币交易组合成一个区块比特币挖矿为什么静止,然后反复执行一个称为哈希数十亿次的密码操作,直到有人找到一个特殊的目标哈希值。此时,该区块被开采并成为比特币区块链的一部分。Hash 任务本身并没有完成任何有价值的任务,但由于很难通过它找到一个成功的目标值,它确保了没有人有能力和资源接管比特币系统。

哈希函数获取大量数据并创建一个小的、不可预测的输出。散列函数的设计使得没有“捷径”来获得所需的输出——你只需保持散列块,直到你蛮力找到一个有效的块。对于比特币,哈希函数是一个称为 SHA-256 的函数。为了提供更高的安全性,比特币将连续两次重复 SHA-256 函数,这一过程称为双 SHA-256。

在比特币中,一个成功的哈希是以足够多的零开始的。就像很难找到以多个 0 结尾的电话号码或车牌一样,很难找到以多个 0 开头的 Hash。但比特币的难度呈指数级增长。目前,一个成功的 Hash 必须从大约 17 个 0 开始。换句话说,找到一个成功的哈希比在地球上的所有沙粒中找到一粒沙子更难。

比特币挖矿为什么静止_比特币挖矿教程_比特币莱特币挖矿教程

下图显示了比特币区块链中的一个块及其哈希值。黄色字节被散列以生成块散列值。在这种情况下,生成的哈希以足够多的 0 开始,以便挖掘成功。但是,Hash 很难一次得到,这种情况下矿工会改变 nonce 值或其他块内容,然后一次又一次地尝试。

比特币使用的 SHA-256Hash 算法

比特币莱特币挖矿教程_比特币挖矿教程_比特币挖矿为什么静止

SHA-256 的哈希算法采用 512 位(即 64 字节)的输入块,对数据进行加密组合,并产生 256 位(32 字节)的输出。SHA-256 算法由重复 64 次的相对简单的轮次组成。下图显示了一轮,需要 8 个 4 字节的输入——A 到 H,然后执行一些操作,并为 A 到 H 生成新值。

蓝色框以非线性方式将这些值混合在一起,从而难以对这些值进行加密分析。由于该算法使用了几种不同的函数,因此发现攻击更加困难。(如果你能找到一个数学捷径来生成一个成功的哈希,你就可以接管比特币挖矿)。

比特币挖矿教程_比特币莱特币挖矿教程_比特币挖矿为什么静止

Ma 大多数框看A、B、C的位数。对于每个位置,如果大多数位为0,则输出0,否则输出1。即对于A、B、C的每个位置,看在 1 位的数量。如果是 0 或 1,则输出 0,如果是 2 或 3,则输出 1。

Σ0框将A的位数反转,形成三个反转的版本,然后将它们模2相加。也就是说,如果1的位数是奇数则和为1,否则为0,并且三个值在sum 分别是 A 反转后的 2 位、13 位和 22 位。

Ch“选择”框根据输入E的值选择输出位,如果E的一位为1,则输出位为F的对应位,如果E的一位为0,则输出位为对应G的位,所以,F和G的位是根据E的值随机选择的。

比特币莱特币挖矿教程_比特币挖矿教程_比特币挖矿为什么静止

下一个框 Σ1 对 E 的位进行反转和求和,类似于 Σ0,不同之处在于移位是 6、11 和 25 位。

红框进行32位加法,为A和E生成新值,输入Wt是根据输入数据,稍加处理。(这是将输入块输入算法的地方。)输入 Kt 是为每一轮定义的常数。

从上图可以看出,一轮只换了A和E。其他值不变传递,旧的A值变成新的B值,旧的B值变成新的C值,以此类推。虽然每轮 SHA-256 对数据的改变不大,但在 64 轮之后,输入数据将被完全打乱。

比特币挖矿教程_比特币挖矿为什么静止_比特币莱特币挖矿教程

这对挖矿硬件意味着什么?

SHA-256 的每一步都非常容易在数字逻辑中实现——简单的布尔运算和 32 位加法。(如果您研究过电子学,您可能已经能够可视化电路)。出于这个原因,定制的 ASIC 芯片可以在硬件中非常有效地实现 SHA-256 算法,将数百轮并行放在一个芯片上。

相比之下,莱特币、狗狗币和类似的山寨币使用 Crypt Hash 算法比特币挖矿为什么静止,该算法被有意设计为难以在硬件中实现。它将 1024 个不同的哈希值存储到内存中,然后以不可预知的方式将它们组合起来,得到最终的结果。因此,Scrypt 比 SHA-256 Hash 需要更多的电路和内存。您可以通过查看采矿硬件来看到影响,Scrypt(莱特币等)的计算速度比 SHA-256(比特币)慢数千倍。

SHA-256 算法非常简单且易于手动操作。(用于签署比特币交易的椭圆曲线算法手工计算会非常痛苦,因为它有很多 32 字节整数的乘法)。我用了 16 分 45 秒手工完成了一轮 SHA-256。按照这个速度,散列一个完整的比特币区块(128 轮)需要 1.49 天,每天的散列率为 0.67 次(尽管我可能会通过练习变得更快)。相比之下,目前的比特币挖矿硬件每秒可以进行几万亿次哈希,这比我的手动哈希快了大约五千万倍。不用说,手动比特币挖矿根本不实用。

一位 Reddit 读者询问了我的能源消耗。事实上,它不需要太多的能量消耗,所以假设静息代谢率为 1500kcal/天,人工哈希的能量消耗几乎是 10 MJ/Hash。一般矿机的能耗为1000MJ/Hash。所以,我的能源效率降低了 10¹⁶。下一个问题是能源成本。甜甜圈是一种廉价的食物能源,200 大卡的成本为 0.23 美元。这里的电价为 0.$15/kWh,比我预期的要便宜 6.7 倍。所以我每个哈希的能源成本大约是挖矿硬件的 67 倍。显然,我不会从人工采矿中发大财,我什至还没有包括我需要的所有纸和铅笔的成本。