首页 > 编程知识 正文

挖矿为什么要用显卡而不是cpu,挖矿病毒到底是什么

时间:2023-05-03 23:13:26 阅读:241738 作者:624

挖矿

比特币里有两种节点一种叫全节点一种叫轻节点 前面的步骤都是在为挖矿做准备,真正带来收益的是挖矿,这个分为两部分第一缺省情况下应该是沿着最长合法链挖下去,第二当出现等长的分叉时选择哪一个分叉缺省情况下是选择最先听到这那个节点往下延伸。轻节点: 全节点和轻节点的大小差了有一千倍,比特币网络中大部分都是轻节点如果你只是想转账不需要挖矿的话就没有必要运行一个全节点,在挖矿的过程中你监听到别人已经挖到了而且这是合法的在延长最长合法链这时候你该怎么办?你应该停止在挖的矿如果重新在本地组装一个候选区块为什么要这样做,因为你要沿着这个新发布的区块往下挖的话那么你本地所组装的区块中包含的交易就会发生变化有些交易可能已经包含到这个新发布的交易里面了,因为这个block head也会发生变化像这个block head里交易所组成的Merkel tree的根哈希值还有指向前一个的指针也会发生变化,所以要停止已有的挖矿重新组装一个候选区块然后从头开始挖,这样一来对个人来说是挺可惜的但是对于总体的结果来说并没有什么可惜之说因为有这个样一个性质的存在Memoryless progress free这个是无记忆性的所以你接着原来的区块还是改成一个新的区块成功的概率是一样的,只要是你还没有找到符合要求的nonce值前面挖了多长时间都是没有关系的,对最后的结果没有影响,即使说你挖到合法的区块的发布到区块链上也不是说你就胜利了,有可能你发布的这个区块最终不会成为最长合法链等一系列的问题。比特币保证安全性有两方面,一方面是密码学上的保证另一方面是共识机制。密码学上是别人没有你的私钥就没有办法伪造你的签名所以就转不走你账上的钱,注意一点就是系统中拥有大多数算力的矿工是好的不会接受一些没有合法签名的交易如果没有这一点的话密码学上的保证就没有用武之地了。挖矿设备的演化趋势是越来越专业化,最早的时候大家都是用普通的CPU去挖矿,比如家里的计算机、笔记本电脑都可以用来挖矿,但是你想一想你买一台计算机专门用来挖矿其实是非常不划算的,这个计算机中的大部分内存都是闲置的挖矿只用到了其中很少一部分内存,CPU中的大部分部件也是闲置的因为挖矿里计算哈希只用到了通用CPU中的很少一部分指令,硬盘和其它很多资源也都是闲置的所以随着挖矿难度的提高用CPU挖矿用通用计算机挖矿也变的无力可图了,因为性价比太低所有挖矿设备转为了GPU,GPU挖矿的效率比CPU已经是提高很多了,但是GPU用来挖矿还是有点浪费了GPU是为了通用并行计算来设计的用来挖矿的话里面还是有很多部件是闲置的比如说用于浮点数的那些部件,这些部件对于深度学习来说是很重要的。不过现在用GPU来挖矿已经是划不来了。因为它已经超过了GPU的算力范围,现在一般用ASIC芯片这是专门为了挖矿而设计的芯片它上面没有多余的电路逻辑整个芯片就是为计算哈希值的操作,比特币挖矿而设计的。所以它的性价比是最高的这个芯片也干不了别的除了挖矿其它都不行而且为某一种加密货币设计的ASIC芯片只能挖这种币挖别的就不行除非这两个加密货币用的是同一个mining puzzle有些新的加密货币用为了解决能启动问题它故意用一个已有的mining puzzle比如说和比特币一样的mining puzzle这样可以吸引更多的人来挖矿这种情况叫做merge mining除了这种情况外其它的都是一个芯片只能为一个加密货币去挖矿。有研究表明一款ASIC矿机大部分利润是在开始的两个月获得的因为这个时候它的算力是在同类产品力是最强的,基本上头两个月就能获得它生命周期当中一半以上的利润,然后就可能会被淘汰掉会有更强的矿机出来,所以购买矿机的时机非常重要现在一般来说都是要提前预定的挖矿设备是由通用转化为了专用。有些新的加密货币它设计的叫做Alternative mining puzzle设计这些mining puzzle的出发点叫ASIC resistance 能够抗ASIC芯片化,目的是为了让通用的计算机也能够参与到挖矿中来。挖矿的另一个趋势是大型矿池的出现,单个矿工即使用了ASIC芯片挖矿从平均收益上看是有利可图的,但是收入是非常不稳定的,比如说比特币系统中是每10分钟出一个块这个是说系统里的所有矿工作为一个整体来看平均每10分钟会产生一个区块,但是具体到个人的话可能就要花很长的时间才可以挖到一个区块比如他用一台ASIC矿机可能要一到两年才可以挖到一个区块,这样搞一下就用那种买彩票的味道了。单个矿工还有另外一个问题他除了挖矿外还要承担全节点的责任,那要怎么办呢?这就是要引入矿池的这个概念,所谓的矿池就是把矿工们组织起来作为一个整体,那么矿池的架构一般来说就是一个全节点会驱动很多矿机,一个矿池一般会有一个矿主pool manager他的下面连着很多矿工,矿工只负责计算哈希值其它的一些功能都由矿主来承担,ASIC芯片只能算哈希值不能做全节点的其它功能矿池的出现还有另外一个目的就是为了解决收入不稳定的问题,因为单个矿工的收入是不稳定的所以和在一起干有了收益再来分配一下,这就牵扯到一个收益该如何分配的问题,矿池一般来说有两种组织形式一种是像大型数据中心那样有的互联网公司它有着成千上万的服务器那么大的矿池里也有成千上万的矿机这些矿机如果是属于同一个机构的话收入怎么分配就无所谓了,也有的时候矿机是来自不同机构的,第二种组织方式就是分布式的矿工和矿主不在同一个地方可能分散在世界各地,那么矿工要加入矿池就是要按照矿池规定的通讯协议跟矿主进行联系矿主再把要计算的哈希值任务分配给他矿工计算完之后把结果返回给矿主然后有出块奖励的时候一起参与分红。但是如果挖到区块了之后再平均分配给各个矿工这样会有一个明显的问题就是吃大锅饭干好干坏一个样,如果是这样的话有的矿工可能就不干活了,因此这个时候就需要按劳分配了,也就是需要工作量证明了证明每个矿工所做的工作,为什么矿工的收入会不稳定因为挖矿太难了如果把挖矿的难度降低之后矿工的收入就会变得稳定了,比如说原来的要求是这个矿工要找到一个nonce用这个nonce计算block head 的哈希值前面至少有七十个零才是合法的,这是我们原来的要求,现在降低挖矿难度后比如说前面只要有六十个零就行了这样挖到的叫做share矿工挖到这个share almost valid block把它提交矿主,这个只是为证明矿工的工作量就没有什么用处。当某个矿工真的挖到后再按照每个矿工提交的share来分配。这里面产生了一个问题就是有没有可能一个矿工挖到区块然后偷偷发布出去在这之前他还是会把这个share almost valid block给矿主 ,这个是不可能的因为每一个矿工的工作是由矿主来安排的矿主组装好一个区块然后交给矿工去试nonce一般来说光是调整nonce是不够的还要调整CoinBaseparameter所以矿主可能就是把不同的CoinBaseparameter所对应的nonce范围交给各个矿工,并且里面还填了矿主的收款地址所以他自己发出去是没有用的所以矿工不可能偷出块奖励,如果一开始就不管矿主的任务就自己偷偷组装一个区块会怎么样那样的话他提交一个share去的话矿主是不认的因为这里面的交易列表已经被改过了,算出的Merkel tree的根哈希值也是不一样的,所以这种情况矿主是不会认为是工作量证明的。看一下关于矿池的统计数据: 这个显示的是矿池的分布比例,可以看出中国的矿池占到了81%的算力。如果把所有在中国的算力看做一个整体的话在比特币系统中是有绝对的优势的。 如果看单个的矿池的话在2014年的时候这个叫GHash.IO的矿池这个矿池的算力占到全球算力的一半以上,这个在当时引起了一些恐慌就这一个矿池的算力就可以发动51%的攻击了,这个事情公布出来的时候GHash就主动的把算力大幅度的减少了以免动摇大家对比特币的信心。这个是18年的算力分布 看上去没那么集中了这个时候上面那个GHash矿池已经不存在了早已经停止运营了,当然挖矿集中化的程度还是比较大的,几个大矿池占了相当大的比重但是也没有那个矿池占到一半以上这样看的话好像是比较安全的但是可能只是表面现象,假设某个机构有半数以上的算力他不一定要把所有的算力都放在一个矿池力而是可以把这些算力分散隐藏在很多矿池里。平时是分散隐藏的当需要发动攻击的时候再集合起来发动攻击。矿工转换矿池是很容易的。因为你要加入这个矿池的时候跟矿主联系一下就好,矿主把组装好的区块信息再发给矿工,矿工再尝试各种nonce值就可以了,要换到另外一个矿池就按照这个矿池的通讯协议跟那个矿池的矿主取得联系就行了。所以转换矿池是很容易的所以这就是矿池带来的一个危害,如果没有矿池这个攻击者要发动51%的攻击就要有足够的矿机能够达到系统中半数的算力,有了矿池以后他自己可能就只需要一小部分的算力和大部分不明真相的矿工加入到这个矿池就可以了,一般来说矿池的矿主需要收取一定比例的出块奖励来作为管理费,他要管理这个矿池也是要有一定的收益的,有的是按照出块奖励的比例有的是抽取交易费有的一些有恶意的矿池在发动攻击之前可能会故意把管理费降的特别的低甚至是赔本赚吆喝,吸引到足够多的矿工后就可以发动攻击了。假设有一个矿池占到了半数以上的算力他具体可以发动最常见的就是分叉攻击。为什么会矿池里是不明真相的群众因为他们只是负责计算哈希值,并不知到网上有上面样的交易另外不要把51%的预值当做门槛达到51%就可以发动攻击没到就不能这其实都是概率而且每个矿池所占的算力比重本身也是一个估计而已,而且也是在不断变化的。那么这个攻击者除了分叉攻击以外还可以做Boycott可以封锁账户假如这个攻击者不喜欢A那么他就可以把A有关的交易全不让上链要是有人把A转给B的交易发布到区块链上他马上分叉产生一个不包含这个交易的区块就所有跟A有管的都不包含进去那么这种方法为了回滚的区别是不用等6个确认再攻击目的是为了这个Boycott就不用等了在这个交易一上线的时候就要分叉越早越好。总结一下这个矿池的出现给矿工减轻了负担收入分配也更加稳定,但是也有一定的危害就比如发动51%攻击。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。