主页 > imtoken官网下载3.0版本 > BTC挖矿算法是如何工作的?

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

imtoken官网下载3.0版本 2023-07-07 05:24:28

比特币挖矿是比特币系统安全的关键部分。其原理是比特币矿工将一堆比特币交易组合成一个区块,然后反复执行一个称为哈希数十亿次的密码操作,直到有人找到一个特殊的目标哈希值。此时,该区块被开采并成为比特币区块链的一部分。 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,三个值相加 ​​在和中分别是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 倍。显然,我不会从人工采矿中发大财,我什至还没有包括我需要的所有纸和铅笔的成本。