挖矿原理与过程:小白入门指南
2024-09-18 09:12 • By 欧意
区块链由众多节点构成,为了确保各节点间的时间同步,新区块的产生速率不可过快。设想一下,你刚完成一个区块的同步并准备构建下一个区块,然而其他节点却又产生了新区块,迫使你不得不中断一半的计算工作,重新进行同步。每个区块仅能紧跟一个新区块,参与者始终只能在其基础上生成下一个区块。因此,一旦接收到新信号,就必须立即执行同步操作。
于是,区块链的创始人中本聪有意使新区块的添加变得十分困难。其设计原则是,全网平均每10分钟仅能生成一个新区块,这意味着一小时内最多仅有六个新区块诞生。
这样的产出速度并非通过指令强制实现,而是借助于大量计算工作的设置。换言之,唯有经过海量的计算,才能获得当前区块的有效哈希值,并将其附加至区块链。由于计算任务艰巨,所以新区块的生成速度较慢。
这一过程被称为“挖矿”,寻找有效哈希的过程宛如在全球沙海中寻觅一粒特定的沙粒。执行计算任务的机器称作矿机,操控矿机的人则被称为矿工。
面对此情此景,你或许会产生疑惑,为何常说挖矿艰难,毕竟计算机擅长的就是计算,为何却迟迟无法算出一个哈希值呢?
问题在于,不是任何一个哈希值都能被区块链接纳,只有符合特定条件的哈希值才会被接受。这一条件极为严格,导致大部分哈希值都无法达标,必须重新计算。
每个区块均含有一个难度系数(difficulty),该系数定义了计算哈希值的难度水平。例如,第100000个区块的难度系数为14484.16236122,简而言之,我们可以将difficulty视作挖掘数据区块所需时间的度量。
难度值(difficulty)的计算公式为:难度值 = 最大目标值 / 当前目标值。其中,目标值是矿工需达成的工作量证明标准,矿工挖掘的区块头部哈希值必须小于目标值,这样才能成功挖掘数据区块。
由于只有小于目标值的哈希值才被视为有效,否则就需要重新计算。鉴于目标值极小,使得哈希值小于目标值的概率微乎其微,可能需要尝试十亿次才能找到一个符合条件的哈希值,这正是挖矿速度缓慢的根本原因。
前面提到,当前区块的哈希值由唯一的区块头决定。若要对同一区块反复计算哈希值,则意味着区块头必须不断变化,否则无法得出不同的哈希值。区块头内的所有特征值均固定不变,为了令区块头发生变化,中本聪引入了一个随机变量——Nonce。
Nonce 是一个随机数字,矿工的任务便是猜测出适合的Nonce值,使得区块头的哈希值小于目标值,从而能够加入区块链。Nonce 非常难以预测,当前只能通过穷举法逐一尝试。根据协议,Nonce 是一个32位的二进制数值,上限可达约21.47亿。例如,第 100000 个区块的 Nonce 值为274148111,这意味着矿工自零开始,经过大约2.74亿次的计算,才最终找到了一个满足条件的有效Nonce值。
矿工的运气好坏将直接影响Nonce值的发现速度。有时幸运的话,很快就能找到Nonce;而不幸的时候,即使计算完所有可能的Nonce值,也可能无法找到满足条件的值。此时,协议允许矿工修改区块内容,重启计算流程。
挖矿带有随机性,无法确保恰好每十分钟就能产出一个新区块,有时仅需一分钟即可完成,有时甚至耗时几小时也可能颗粒无收。总的来看,随着硬件设备性能的提升以及矿机数量的增长,计算速度肯定会越来越快。
为了维持每十分钟产生一个新区块的恒定产出速率,中本聪设计了难度系数的动态调节机制。规则规定,每隔两周(即2016个区块)难度系数将会调整一次。假如在这两周内,新区块的平均生成时间为9分钟,表明实际生成速度超出了法定速度的10%,那么接下来的难度系数应上调10%;反之,如果平均生成时间为11分钟,意味着实际速度低于法定速度的10%,那么接下来的难度系数则需下调10%。
随着难度系数不断提高(目标值逐渐缩小),挖矿的难度也随之增大。然而,在去中心化的区块链系统中,是谁负责调节难度系数呢?实际上,难度系数的调整是在各个完整节点中独立且自动进行的。每当连续产生的2,016个区块中的所有节点都将自动进行难度调整。调整公式是基于过去2,016个区块的实际生成时长与期望生成时长(即两周内按照10分钟/区块的速度预期所需时长)相比较而得出的。简单地说,当网络发现区块产生速度超过10分钟时,会提高难度系数;反之,则降低难度系数。
尽管挖矿充满挑战,但仍有许多人投身其中。拿比特币为例,矿工参与挖矿的原因主要有两点:
2. 比特币协议规定,成功挖掘新区块的矿工将获得奖励。最初(2008年)为50枚比特币,此后每四年减半,截至2018年,挖矿奖励为12.5枚比特币。这也是比特币供应量递增的方式,新发行的比特币由此产生。
显而易见,随着时间推移,每四年奖励减半,直至2140年,矿工将不再获得新的区块奖励,比特币总量也将不再增加。那时,矿工的主要收入来源将转为交易手续费。
交易手续费指矿工可以从每笔交易中提取一定比例作为收入,具体金额由支付方自愿决定。当然,用户也可以选择不支付任何手续费,但这样一来,他们的交易可能无法及时处理,长时间无法被写入区块链并获得确认。矿工通常会选择优先处理手续费较高的交易。
目前,随着交易数量激增,手续费水涨船高,单个区块内包含2000多笔交易的总手续费已能达到3-10枚比特币。如若手续费给得不够高,交易可能一周都无法获得确认。
目前,新区块的奖励加上手续费,矿工的收益相当丰厚。按照当前市场价格计算,每挖掘出一个区块可获得约75万元人民币的收入。可见,挖矿的巨大收益诱惑使得人们对这项活动趋之若鹜。
文章内容来源于网络,不代表本站立场,若侵犯到您的权益,可联系多特删除。(联系邮箱:)
Tags: 欧意客户端