博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
比特币如何挖矿-工作量证明
阅读量:6851 次
发布时间:2019-06-26

本文共 1056 字,大约阅读时间需要 3 分钟。

本文发表于链客区块链技术问答社区,未经允许禁止转载

我们知道了信息计算Hash打包的过程:交易记录、时间、账本序号、上一个Hash值。也知道所有的计算和存贮是需要消耗计算机资源。在中本聪的设计里,完成记账可以获得系统给与比特币奖励,这个过程也就是比特币发行过程,因此把记账成为挖矿。

记账工作

因为记账是有奖励,每次记账都可以为自己增加一定个数的比特币,因此大家争相记账,当然能也就引发了问题:出现记账不一致的是后,系统引入工作量证明来解决这个问题,规则如下:

1.在一段时间内,只有一个人能记账成功。
2.通过解决密码学难题竞争获得唯一记账权
3.其他节点复制记账结果
不过在进行工作量证明之前,记账节点会做进行如下准备工作:
1.收集广播中还没有被记录账本的原始交易信息
2.检查每个交易信息中付款地址有没有足够的余额
3.验证交易是否有正确的签名
4.把验证通过的交易信息进行打包记录
5.添加一个奖励交易:给自己的地址增加12.5比特币
如果争夺记账权成功的话,就可以得到12.5比特币的奖励。

工作量证明

每次记账的时候会把上一个块的Hash值和当前的账页信息一起作为原始信息进行Hash。为了确保10分钟前后只有一个人可以记账,就只有提高记账的难度,用Hash的结果必须以若干个0开头。为了满足条件,进行Hash是引入一个随机数变量。

用伪代码表示一下:
1.Hash(上一个Hash值,交易记录集) = 456635BCD
2.Hash(上一个Hash值,交易记录集,随机数) = 0000aFD635BCD
改变Hash的原始信息的一部分,Hash值也会不断变化,因此在运行Hash的时候,不断改变随机数的值,总可以找到一个随机数使得Hash的结果以若干个0开头,率先找到随机数的节点从此获得记账的唯一记账权。

验证

在节点成功找到Hash值之后,会马上对全网进行广播打包区块,网络的节点收到广播后会对其进行验证。如果验证通过,表明已经有节点成功解密,就不会在竞争当前区块,而是选择接受区块,记录到自己的账本中,进行下一轮竞争猜谜。网络中只有最快解密的区块才会添加到账本中,其他的节点进行复制,确保整个账本的唯一性。

如果节点有作弊行为,会导致网络的节点验证不通过,直接放弃其打包的区块,也无法记录到总账本中,那么作弊节点的消耗成本就白费了。因此矿工自觉的遵守比特币系统的共识协议,也确保整个系统的安全。

进阶阅读比特币区块结构Merkle树及简单支付验证分析,可以详细了解区块结构如何验证交易。

你可能感兴趣的文章
mysql行转列
查看>>
使用 firefox 的开发者工具与 DIG 命令行工具,来分析访问站点时的网络连接与 HTTP 请求和响应...
查看>>
jetspeed教程翻译——jetexpress项目门户的自定义
查看>>
华为usg6380 ssh 配置方法
查看>>
抽象工厂模式(Abstract Factory)
查看>>
zval_dtor与zval_ptr_dtor的区别
查看>>
Cisco route-map 源地址路由配置
查看>>
11月6日记
查看>>
[李景山php]每天TP5-20170109|thinkphp5-Model.php-2
查看>>
在windows(64)下安装php开发环境wamp+yaf框架+phpstorm以及TortoiseGit
查看>>
淘宝的IP地址库
查看>>
ORACLE 建库过程总结
查看>>
Comparable与Comparator的区别(转载)
查看>>
我的友情链接
查看>>
window下从硬盘安装ubuntu双系统
查看>>
socket服务器与客户机的互动
查看>>
三种方法实现选项卡效果
查看>>
API网关(API Gateway)
查看>>
Zookeeper集群搭建和简单使用
查看>>
IntelliJ IDEA快捷键
查看>>