找回密码
 立即注册
搜索
热搜: 活动 交友
查看: 387|回复: 0

区块链挖矿的原理

[复制链接]

137

主题

0

回帖

481

积分

中级会员

积分
481
发表于 2024-5-3 08:32:58 | 显示全部楼层 |阅读模式

挖矿

构成区块头的因素都产生以后,矿工会在Nonce中随机填入一个值,比如下图中Nonce=14202,接着对区块头进行哈希运算,会产生一个哈希值,这个哈希值会和区块头中的难度值进行比较。

当计算哈希比难度值大的时候,系统就会判定不符合要求,此时需要返回继续增加Nonce值,重新计算哈希值,以此不断重复循环计算,直到计算哈希小于难度值,才会进行下一步,这就是挖出了矿。

挖出矿之后,系统会将Nonce值固定到区块头中,并将交易广播到全网。

其实这里有一个问题是,既然第一个Nonce值不行的话,那为什么所有的矿工一般都是通过字征法,也就是一个一个数字相加的方式去运算呢?

有的人会认为,既然Nonce值是随机的,那为什么填入的时候不能随机填入呢,比如说1不行,就填100;100不行,就填500;500不行,就填2000……这样概率是不是应该更大一些?

其实并不会,因为哈希运算的时候,即使Nonce值只改变了一个数字,但是其哈希计算结果的区别却非常大。

也就是说,随机碰撞去试Nonce值的计算哈希概率并不会比顺序尝试的概率大,并且还会增加矿机设计的难度。

所以,现在挖矿一般都是通过给定计算范围的方式去计算Nonce值。

比如上图中,14202不行,那就14203……一直到12405,这时区块哈希小于难度值,这时也就是挖出了矿,找到了可用区块,最后将结果广播给全网。

需要说明的是,矿工挖出符合难度要求的区块之后,会将这个区块广播给网络中的其他节点,其他节点会验证新收到的区块是否符合难度要求。并且会将区块中包含的所有交易重新验证一遍,包括交易是否合法,交易输入和签名是否合法等。

如果验证没有问题,就会将这个区块添加到自己本地节点的账簿中,也就是填到链上,此时一笔交易完成。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|全球区块链交流论坛 |网站地图

GMT+8, 2025-5-11 19:23 , Processed in 0.283603 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表