主页 > 最新imtoken官网 > 比特币挖矿难度和收益计算

比特币挖矿难度和收益计算

最新imtoken官网 2023-03-05 07:39:00

前言

最近大家非常关心的一件事情是,BCC分叉后,由于难度调整和价格上涨,矿工为了获得更高的收益开始迁移到BCC挖矿,但由于算力的涌入,下一个难度周期将是难度增加,矿工将迁移到 BTC 矿池。如下图所示,两种币的挖矿收益分别计算。以目前的价格,挖矿BCC的收益会更高。这是一个非常有趣的“地雷”现象,那么这个现象的背后是什么?

图 1 - BTC 挖矿收益计算器

图2-BCC挖矿收益计算器

这种现象的直接原因是收入。比特币的挖矿收益与难度有关。比特币每 2016 个区块调整一次难度。那么这个困难是从哪里来的,收入又是如何受到影响的呢?

比特币难度

首先,让我们看看困难是怎么来的。在比特币挖矿中,有一个计算哈希的目标值。目标值越小,难度越大。简单来说,难度是计算当前目标值难度的一个指标。

难度计算公式如下:

diff = diff_1_target/target

目标值是一个很大的数字。这里有一个 diff_1_target。顾名思义,这是难度为1时的目标值。这是一个常数,非常大的数字。这个值就是用0x1d00ffff标记的数字,这个标记就是压缩标记,它的实际值是:

0x00ffff * 2**(8*(0x1d - 3)) = 0x00000000FFFF0000000000000000000000000000000000000000000000000000

计算时以最后三个字节为基数比特币的难度是什么,第一个字节1d代表幂,最后得到上面的数。矿池在挖矿过程中也可以保留的尾数,即

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

比特币的挖矿难度,根据上面的公式,与 diff_1_target 和当前网络目标值(target)有关。代入 diff_1_target 的值得到:

差异 = 0x1d00ffff/目标

调整难度时,只需要调整目标的大小即可。目标越小,难度越大;否则,难度越小。矿池一般用一个值后跟FF来表示diff_1_target,计算出来的难度称为矿池难度pdiff。如果用 00 后面的值来表示 diff_1_target,那么计算出来的难度值就是比特币客户端难度 bdiff。这只是为了说明它们有两个值,代表不同的计算方法。其实他们的计算难度差别不大。

调整网络难度的目的是将出块速度调整为平均每10分钟1个块,每2016个块调整为一个周期,以正好2周为一个周期。如果这 2016 个区块的平均出块速度为 10 分钟 1 个区块,那么在保持这个难度的同时,难度将增加到 10 分钟 1 个区块的水平。什么时候调整难度?由于 2016 年的周期从未改变,因此可以计算出该周期剩余的块数:

本周期剩余区块数 = 2016 - (当前区块高度 % 2016)

以当前最新区块#482017为例

当前高度 % 2016 = 482017 % 2016 = 193

本周期剩余块数 = 2016 - 193 = 1823

也就是说这个周期产生了193个区块,直到1823个区块之后才会调整难度。BCC 也是如此。

挖矿收益计算

挖矿时,计算出的区块哈希值应小于当前目标值。这个哈希值是一个范围很广的值(从0到(2^256)-1)),这个值只能通过矿机的暴力破解来计算。

diff_1_target,即0x00000000FFFF00000000000000000000000000000000000,FFFF后面有26个字节,即8 * 26 = 208位,所以diff_1_target可以写为0xffff * (2 ** 208).

如果当前难度是D,那么根据我们上面讲的公式

diff = diff_1_target/target

所以

目标 = (0xffff * (2 ** 208)) / D

要搜索这个目标值,需要计算的哈希数是

2**256 / 目标

将 D 向左移动,我们得到

D * (2 ** 256) / (0xffff * (2 ** 208))

将 2**208 向左移动,我们得到

D * (2**256) / (2**208) / 0xffff

简化得到

D * (2**48) / 0xffff

也就是10分钟(600秒)这么多的计算才能得到一个块,那么平均每秒就是:

D*(2**48)/0xffff/600

将 0xffff 写为十进制是 2**16

D * (2 ** 48) / (2 ** 16) / 600

简化得到

D*(2**32) / 600

假设当前全网难度为 888171856257,那么平均需要 6357781793085713285 次哈希运算才能得到一个区块。我们不妨用当前算力来验证一下,全网当前算力为5.68 EH/s,大概接近这个值。

我们已经看到了难度和计算能力之间的关系。难度越大比特币的难度是什么,所需的计算能力就越大。那么,以1Th/s为单位的云合约标准算力,一天能实现多少收益呢?

一天可以计算的哈希数 = 1T * 86400

假设当前难度为D,则

产量 = 1T * 86400 / D / ( 2 * 32) * 块产量

采矿收益计算器

根据以上公式,获取网络参数后,可以计算出挖矿中出现的理论收益,还可以制作一个BTC和BCC收益计算器。当然,如果你只是想了解原理,你可以使用现成的收益计算器,输入你的算力,它就会计算出多少币。将币价乘以计算当前性价比的BTC挖矿或BCC的性价比。当然,也可以通过查看曲线来收集历史数据。可以更直接地看到难度和奖励的变化。