首页 > 热点资讯 > 正文

比特币挖矿详解:从原理到实践

2024-05-02 05:03 来源:网络

在完成了前面两篇科普文的铺垫之后,相信读者们已经对比特币交易及区块生成的过程有了基础认知。现在我们要探讨的是,这一切与"挖矿"究竟有何关联。

比特币挖矿详解:从原理到实践

矿工破解挖矿挑战

在比特币网络中,众多挖矿节点和矿工共同参与新区块的创建。当出现多个节点同时创建相同高度的区块时,如何确定哪个区块更具合法性呢?这就涉及到比特币所采用的PoW(Proof of Work)共识机制,通过挖矿竞赛的方式来争夺新区块的记账权。握有新区块记账权的矿工,其创建的区块才被视为有效。挖矿的核心目标正是赢得这一权利,从而确认新区块与交易的有效性。那么挖矿节点与矿工又是如何协作完成这一过程的呢?

挖矿节点在构建好预备区块后,会将其区块头数据发送给矿工执行挖矿任务。矿工接收到任务后,会尝试不断调整区块头内的随机数。每次调整后,矿工会依据比特币协议规定,利用SHA256算法计算区块头的哈希值。若区块头的哈希值大于预设的目标哈希值,则继续调整随机数,直至区块头的哈希值小于或等于目标哈希值(另一种情况是,当挖矿节点发现新区块已被其他节点抢先挖出时,便会放弃当前任务,重新构造预备区块并重启挖矿过程)。

挖矿节点验证区块,拓展本地区块链

当矿工找到使预备区块头哈希值满足目标哈希值条件的随机数时,会迅速向挖矿节点报告挖矿成果。挖矿节点在接收到信息后,会立即根据矿工提供的信息重新组合区块并加以验证。一旦验证成功,节点会立即将新区块存储至本地数据库,并将其添加至自身的区块链上。

新区块的验证内容包括:


区块头的哈希值是否合法,即是否小于等于TargetHash;


区块头的Merkleroot哈希是否与区块内交易数据的MerkleRoot哈希一致,确保交易未遭篡改;


首个交易是否为Coinbase交易;


区块内每一笔交易是否均合法等。



新区块全网广播与验证

挖矿节点在本地保存新区块后,会同步向比特币网络广播挖矿结果。由于完整区块的数据量较大,通常仅广播新区块的区块头信息。其他节点在接收广播消息后,首先验证区块头信息,若验证通过,会在本地的区块索引库中创建新区块索引。待接收到新区块的全部信息后,节点会进一步验证交易信息及区块头的MerkleRoot哈希,验证成功后,将这些交易信息纳入新区块,并扩展自身区块链。至此,新区块的广播与验证环节宣告结束,挖矿节点随即启动对下一个新区块的挖掘工作。

当代挖矿的特点与趋势
矿池:集群挖矿的新模式

从理论上来讲,任何人都可设立自己的比特币挖矿节点,参与到挖矿之中,甚至亲自手动验证区块头哈希以破解挖矿任务,争取记账权。然而,正如前文所述,鉴于当前的挖矿难度水平,即使使用现今主流矿机,也需要约42年的时间才能找到符合比特币网络要求的新区块;而对于普通PC乃至手工计算,则需耗费长达万年至百万年的时间。

因此,单个矿工挖矿的经济效益极为低下,甚至可能出现矿机报废也无法盈利的情况。在此背景下,矿池应运而生。大量矿工将自己的矿机接入矿池,从中获取挖矿任务,形成集体挖矿力量。如此一来,可在较短的时间内找到新区块并获取区块奖励。矿池按照矿工在挖矿过程中的贡献程度,分配相应的挖矿收益,使得矿工可以实时获取收益,用于回本或再次投资

矿机实际接收的挖矿任务TargetHash远大于比特币网络要求的TargetHash

在矿池和矿工联合挖矿的过程中,矿机仍遵循上述流程,通过网络与矿池通信,索取挖矿任务。矿池向矿机发送包含区块头在内的挖矿任务数据,矿机随之调整区块头的随机数并验证区块哈希值。一旦找到满足挖矿任务TargetHash要求的随机数,矿机将按照挖矿协议格式提交给矿池,矿池则基于矿工提交的挖矿结果计算收益。

值得注意的是,如果直接给矿机下发的挖矿任务中TargetHash等于当前比特币网络的实际TargetHash,那么对于矿机而言,几乎不可能找到符合条件的随机数以提交挖矿结果并获得收益。因此,矿池会向矿机下发带有初始挖矿难度的任务,此难度远低于全网挖矿难度,对应的TargetHash更大,使得矿机能够在较短时间内找到满足条件的随机数并向矿池提交更多的挖矿结果。

矿池算力与矿机本地算力的区别

在谈论挖矿时,“算力”是个不可或缺的概念。所谓算力,其实是指矿工验证区块头哈希值的速度。矿机在获取挖矿任务后,会递增区块头的随机数,并对区块头的哈希值进行验证。显然,影响矿机挖矿速度的唯一要素就是其验证区块头哈希值的速度,由此诞生了“算力”这一衡量标准。

目前,常见的比特币矿机算力单位为TH/s,意味着每秒可验证1万亿次哈希,即1T=1×10^3G=1×10^6M=1×10^9K=1×10^12次。

有过挖矿经验的人会发现,矿机本地显示的算力与矿池展示的算力往往有所出入。矿机本地显示的算力反映的是矿机验证哈希的速度,仅与其本身的性能相关,无论是否找到了满足挖矿任务要求的随机数,矿机的本地算力始终存在。而在矿池展示的算力则是根据矿机实际提交的有效挖矿结果来计算得出的,如果矿机运气不佳,在较长时间内未能找到符合挖矿任务要求的随机数,无法提交挖矿结果,则矿机在矿池的算力将会下降。然而长期来看,运气对矿机破解挖矿任务的影响会逐渐减弱,矿机在矿池的平均算力与其本地算力之间的差距并不会太大。

以上内容为比特币挖矿的基本概念介绍,如果您能够理解本文三篇文章的内容,想必您已对比特币挖矿有了初步的理解。如想了解更多关于挖矿方面的讨论,请关注“闲话挖矿”微信公众号,以便及时获取博主更新的挖矿知识分享。

注释术语解释:


区块高度:也称Block Height,相当于区块的序列号,其值等于区块链中位于该区块之前的区块数量。区块链的第一个区块称为创世区块,区块高度为0,紧随其后的第二个区块区块高度为1,第三个区块区块高度为2,依此类推。区块链中所有区块的数量即为最新的区块高度加1。


PoW:全称为Proof of Work,中文译名为工作量证明。是比特币网络为解决新区块所有权问题而采用的一种方法。在比特币网络中,所有人都可以参与新区块的生成,PoW规则规定,能够在最短时间内找到区块头哈希值小于比特币网络设定TargetHash值的预备新区块者,便拥有正式新区块的记账权。


记账权:比特币区块链实质上是一个链条式的总账本,链上的每一个区块都记载着区块链上的比特币交易信息。因此,我们将创建新区块的过程视作记账的过程。记账权,顾名思义,即记录交易账本的权利,亦即在比特币区块链上拥有创建新区块的权力。



参考资料:


挖矿的实现


区块高度(Block Height)


工作量证明(Proof of Work)


文章内容来源于网络,不代表本站立场,若侵犯到您的权益,可联系多特删除。(联系邮箱:[email protected]

相关阅读