首页 > 热点资讯 > 正文

比特币挖矿详解:从 PoW 共识到矿池运作机制

2024-04-23 20:54 来源:网络

经过前两篇的深入剖析,相信读者们已对比特币交易及区块生成原理有了基础认知。接下来我们将揭示它们与“挖矿”的内在关联。

比特币挖矿详解:从 PoW 共识到矿池运作机制

矿工与挖矿任务的破解过程

在比特币网络中共存在着众多挖矿节点与矿工协同创造新区块。若多个节点同时构建出相同高度的区块,如何评判哪个区块更具合法性呢?答案在于比特币所采用的PoW(Proof of Work)共识机制,通过挖矿竞争新区块的记账权。成功赢得记账权的矿工所创建的区块才被视为有效。挖矿的核心目标即是争夺记账权,确保新区块及其所含交易得到确认。


矿工与挖矿节点的合作表现为如下步骤:


挖矿节点组建预备区块并将其区块头数据发送给矿工。


矿工接收挖矿任务后,不断尝试递增区块头内的随机数。每次变动后,依据比特币协议,利用SHA256算法计算区块头哈希值。只有当区块头哈希值大于目标哈希时,矿工会继续调整随机数直至其小于或等于目标哈希(或矿工探测到新区块已被其他节点挖得,此时便会放弃原任务,重构预备区块并重启挖矿进程)。



挖矿节点验证区块及扩展本地区块链

一旦矿工找到使预备区块头哈希值满足小于目标哈希条件的随机数,便立即将挖矿成果报告给挖矿节点。节点接收到消息后迅速依据矿工提供的信息重组区块并进行验证。具体验证内容包括但不限于:


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


区块头的MerkleRoot哈希值与区块内交易数据的MerkleRoot哈希值是否匹配(用于检查交易是否遭到篡改);


首个交易是否为Coinbase交易;


以及每笔交易合法性验证等。



验证无误后,挖矿节点会在其本地数据库保存新区块,并将其附加至本地区块链上。

全网广播新区块

挖矿节点成功保存新区块后,随即向整个比特币网络同步广播挖矿结果。考虑到区块体积庞大,通常仅先广播新区块的区块头。其它节点收到广播后,先验证区块头信息,验证通过后,在其本地区块索引库创建新区块索引。待收到新区块全部信息后,节点将核验交易数据及区块头的MerkleRoot哈希值,验证通过后将交易信息录入新区块,并将本地区块链延长。至此,新区块的广播与验证环节告一段落,挖矿节点将进入挖掘下一个区块的工作循环。

当前挖矿的特点及现象

矿池——集群挖矿的力量整合


理论上,任何人均可设立比特币挖矿节点参与挖矿,乃至手动验证区块头哈希以求破解挖矿任务,争取记账权。然而,正如前文所述,鉴于当前挖矿难度,即使采用最先进的矿机,理论上也需要约42年才能找到一个符合条件的新区块,而对于普通PC或人工计算,则需耗费万年至百万年之久。

在此背景下,单个矿工独立挖矿的经济回报极低,甚至可能出现设备耗损却颗粒无收的情况。于是矿池模式应运而生,众多矿工将各自的矿机连接入矿池,共同协作挖矿,从而在相对较短的时间内产出新区块,分享区块奖励。矿池根据各矿工在挖矿过程中所做出的贡献大小,合理分配挖矿收益,矿工也可实时获取收益进行回本或再次投资。

矿机实际收到的挖矿任务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


工作量证明


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