专栏首页技术专栏1.5 比特币的原理-为什么记账(挖矿)

1.5 比特币的原理-为什么记账(挖矿)

1.5 比特币的原理-为什么记账(挖矿)

之前在将账户如何验证的时候,其实是把账户地址,交易信息进行hash打包的过程。这个过程是需要消耗计算机资源的,既然要消耗资源,那么节点为什么要参与记账呢。在比特币系统里面,完成记账的节点,他是可以获得一定数量的比特币奖励的,这个奖励其实也就是比特币的发行过程。

  • 规则

由于记账是有奖励的,每一次记账,是先发行一定数量的比特币到记账的账户,当前的一次记账的奖励是12.5个比特币,这样的话,就会出现大家都会去争相记账,如果大家同时去记账的话,就会引起一个问题,就是出现记账不一致的情况,这样的话必须有一个规则来限制。

这个规则是这样的:

  • 一段时间只能有一个节点记账成功 (这个时间会和第二点的密码学难道相互影响)
  • 通过解决密码学难题(即工作量证明)竞争获得唯一记账权
  • 其他的节点只是复制计算结果

由于在解决密码学难题的时候有一定的随机性,这个记账又可以获得奖励,因此大家形象的把记账的过程,形象的成为挖矿

  • 工作量证明

之前在将账本记账的时候降到是把上一个hash值和这段时间的交易信息一起作为原始信息进行hash,如果只是这样的话,显然每个人都可以轻松的完成记账,而为了保证一段时间内,只有一个人能记账的话,就需要提高记账的难度。

比特币里是这样规定的,每次hash运算的hash值,必须满足一定的条件,即必须以n个0开头,为了满足这个条件,在计算hash的时候,就必须引入一个随机值变量(之前讲到hash函数任何一个微小的参数变化都会使得结果变化很大),因此在计算hash的时候,不断的去改变这个随机数的值,每次都可以得到一个全新的hash值,只要不停的尝试改变这个hash值,总能找到符合条件的结果

image.png

现在的电脑通常要得到一个四个0开头的hash值,通常需要一两分钟的时间,由于现在参与挖矿的计算机非常多,算力很大,所以现在的挖矿难度,是以18个0开头,率先满足这个条件的节点,就可以获得唯一的记账权

  • 交易的记录集

交易的记录集是这样得到的:

  1. 首先会收集广播中还没有被记录账本的交易
  2. 然后会进行交易的有效性验证(验证签名,余额是否足够)
  3. 添加一笔给自己转账的交易(挖矿奖励)(添加一个给自己的地址转12.5(现在)的比特币,如果一个节点能够比其他的节点更快的人找到这个hash值,那么整个交易就会被打包成区块到区块链中,打包的节点就获得了这个奖励)
  • 工作量分析

image.png

以上是一个真实的区块hash的例子,hash值是一个16进制的数,每一每得到一个0位,他的概率是1/16,得到18个0,他的概率就是1618,这个概率是非常小的,所以难度实现相当大的。

现在已经没有单独的节点(旷工)来挖矿了,因为基本办不到,一般都是多个节点组成矿池一起挖,然后按照算力进行收益的分成。

在将一个和技术无关的话题,从经济角度来讲,只要挖矿还有收益,总会有新的旷工参与来加剧竞争,提高算力的难度,而挖矿就会消耗更多的算力和电力,而最终这个成本是接近收益的,这是一个经济学的角度 我们国家由于电力成本比较低,所以收益相对较高,所以中国的算力会占据整个节点的一半以上。

  • 总结

因为记账是需要消耗资源的,因此比特币系统里面会奖励参与记账的人,同时又引入了工作量证明来引入记账冲突的问题

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring boot+Spring security+JJWT 实现restful风格的权限验证

    https://github.com/MarkGao11520/spring-boot-security-restful

    Meet相识
  • 2.2 实现区块类结构,实现交易方法

    Meet相识
  • 2.6 共识机制

    共识机制的原理是,当一个节点通过工作量证明打包了区块添加到了区块链上,要和全网其他同时完成工作量证明的节点竞争最长链,如果发现比自己长的链,则替换掉自己的,基于...

    Meet相识
  • 关于CPython中set集合的无序研究

      set集合本身是无序的,但是无意间发现set集合中都是数字时set貌似有序了。

    GhostCN_Z
  • 陆奇:除了好代码,工程师怎样才算优秀?

    一位工程师,如何才能称得上优秀?除了写得一手好代码,什么样的工作态度和方法才是一个优秀工程师的必备?

    程序员宝库
  • 陆奇:除了好代码,工程师怎样才算优秀?

    一位工程师,如何才能称得上优秀?除了写得一手好代码,什么样的工作态度和方法才是一个优秀工程师的必备?

    顶级程序员
  • Oracle放大招:MySQL 即将支持 Hash Join

    在刚刚OOW19会上的《python and mysql 8.0 document store》topic中,终于看到了MySQL即将在8.0.18中支持has...

    数据和云
  • 使用SDL2显示一张图片,SDL2上手贴

    俺踏月色而来
  • 【XXE漏洞】XXE漏洞是怎样形成的?

    XXE(XML External Entity),即xml外部实体注入。引用外部实体时,不同的程序可支持不同的协议:

    一名白帽的成长史
  • 安全专家解读:《网络安全审查办法》出台,企业应如何落实加强安全建设?

    关键信息基础设施对国家安全、经济安全、社会稳定、公众健康和安全至关重要。我国建立网络安全审查制度,目的是通过网络安全审查这一举措,及早发现并避免采购产品和服务给...

    腾讯安全

扫码关注云+社区

领取腾讯云代金券