先占个坑,之后写详细的回答。

简单的说比特币的矿机挖矿,实际上是在节点组装好交易之后,矿机在不断重试不同的随机数,让包含这个随机数和交易的默克尔根、前一个区块哈希和其他一些数据的哈希值前面有若干个零。

考虑到哈希结果基本均匀分布,所以要一次算出前面好几个零是很难的,当前的矿机可能得算几十年。

解决办法就是多一些矿机,一起算,就能达到十分钟的平均出块时间。但是每个矿机都需要一个节点组装交易的成本就太高了。

因此就可以把多台矿机连接到一个节点上,分别算不同的随机数范围。这样就只要一个节点,千万台矿机。这样的节点(只有挖矿的才是节点,参见白皮书定义)就被称作矿池。

但是,这么千万台矿机怎么分挖出来的比特币呢?分配的方式需要公平合理。因此不能相信矿机自己报告的计算数量,而要依据矿机提交的有效结果。因此为了更好的估计出矿机的工作,矿池会把一个很高的难度的工作(比如20个零)转换为一个较低难度的工作(比如8个零)。可以被全网承认的更高难度的结果是包含在低难度结果中的,但是我们却可以依照低难度结果来推断矿机的贡献,用来在矿池中分配工作收益。

因此,矿机的工作难度,是由矿池分配的,调节到矿机恰好每分钟可以提交若干次有效的低难度结果。计算能力越强的矿机获得的难度越高。因为越频繁的提交越占用带宽,越不频繁的提交带来的估计工作量的难度越大。


先码著,空了答,终于看到币圈最踏实、不急躁的问题了


比特币主链上,每10分钟出一个块,随著挖矿人数的增加,挖矿算力难度也与日俱增。

我们可以从https://btc.com/上看出,截至今日全网算力已达88.22 EH/s。个体用户已经很难自己完成挖矿。

为了使产生区块的速度维持在每10分钟一个,每隔2016个区块(大约两周时间),网路会通过调整难度控制生成工作量证明(pow)所需的算力,重新计算打包区块的难度,也就是重新调整目标阈值target。如果算力提高n倍,难度值也应调高n倍。

主要运用的演算法公式为:

difficulty=[pre_target]*[前2015个区块生成所用的时间]/1209600


写死在代码里的一个规则,每个节点按规则计算出挖矿难度


理想中,我们估算每十四天一个周期,每个周期难度增长2%-4%


简单来说,比特币产币的速度的期望值是:10分钟一个块。

所以抢的人(全网总算力)越多,越难抢到(难度越高)。

这是动态调整的。


还能规定?


在于工厂阿这个。我一直在玩这个。包赚,如果感兴趣的话可以私聊我,


假设:比特币一天可以产出100枚,挖矿人数5人,算力每人14t,总算力70T,100比特币/70T算力那么他们每人每天能挖20个比特币,如果挖矿人数增加到10人,总算力140T,100比特币/140T算力,现在每人每天只能得到10BTC。

比特币挖矿难度就是全网总算力,全网总算力增加=挖矿难度增加,挖矿难度增加=挖矿分配的比特币的少了,你每天挖矿成本是一样的,电费,场地费,管理费,但是收益减少不就是难度增加嘛。


推荐阅读:
相关文章