imtoken2.9.4|挖矿计算的是什么数据
imtoken2.9.4|挖矿计算的是什么数据
区块链的挖矿原理:什么是挖矿? - 知乎
区块链的挖矿原理:什么是挖矿? - 知乎切换模式写文章登录/注册区块链的挖矿原理:什么是挖矿?海米酋长开心最重要‼️一、“挖矿”究竟是什么所谓“挖矿”就是,将一段时间内比特币系统中发生的交易进行确认,并记录在区块链上,形成新的区块,挖矿的人叫作矿工。简单来说,挖矿就是记账的过程,矿工是记账员,区块链就是版本。比特币系统的记账权利是去中心化的,即每个矿工都有记账的权利,只要成功抢到记账权,矿工就能获得系统新生成的比特币奖励。从这个意义上来说,挖矿就是生产比特币的过程。中本聪最初设计比特币时规定没生产210000个区块,比特币奖励减半一次,直至比特币不能再被细分,因为比特币的总量是有限的,比特币也被称为数字黄金。比特币生产也俗称挖矿。二、挖矿必备工具比特币通过挖矿生产,每10分钟全网矿工一起计算一道算术题,只要先算出答案,就相当于挖到了这个区块,该矿工就能获得系统新生的比特币奖励。在比特币刚诞生的时候,通过计算机的CPU便可以挖矿,随着挖矿的矿工越来越多,目前用CPU已经不能挖出比特币了,大家开始用矿机挖矿。挖矿必备工具:1.挖矿机;2.比特币地址;3.挖矿软件。目前,比特币网络算力太大,个人购置少量矿机,是很难挖出区块的,很多矿工只能加入矿池一起挖;矿场只负责计算,矿池负责信息打包。挖到比特币后,根据矿场的算力占比分配收益,此保证更加稳定的投入产出。三、矿工是怎么挖矿的区块链诞生后,矿工不再只是煤矿工人的简称,而是一种全新的含义。从事虚拟货币挖矿的人和传统的“矿工”不同,区块链领域的矿工具有更多的科技色彩。矿工的主要工作是交易确认和数据打包。矿工需要购买一台专用的计算机设备,下载挖矿软件。挖矿不需要矿工亲自动手,完全由电脑在执行特定的运算。对于矿工来说,只要保证矿机电力供应和网络连接就可以。以比特币为例,比特币矿机就是通过运行大量计算,争夺记账权从而获得新生比特币奖励的专业设备。矿机的构成包括:挖矿芯片。散热片和风扇。只执行单一的计算机程序、耗电量更大,挖矿实际是矿工之间算力的比拼,拥有较多算力的矿工,挖到比特币的概率更大。随着全网算力上涨,用传统的设备挖到比特币的难度越来越大,人们开发出专门用来挖矿的芯片。芯片是矿机最核心的零件,运作过程中会产生大量的热。为了散热降温,比特币矿机一般配有散热片和风扇。用户在电脑下载比特币挖矿软件,用该软件分配好每台矿机的任务就可开始挖矿。每种币的算法不同,所需要的矿机也各不相同。四、中本聪与“挖矿”对于区块链来说,挖矿是必要的吗?为了解答这个问题,我们先来说下究竟什么是“挖矿”?以比特币为例,没产生一比交易,并不算完成,只有将交易数据写入数据库,才算成立,对方才能真正收到钱。首先,所有的交易数据都会传送到矿工,矿工负责把这些交易写入区块链。计算哈希的过程叫挖矿,计算哈希的机器就叫矿机,操作矿机的人就叫矿工。根据比特币协议,一个区块的大小最大是1MB,而一笔交易大概是500字节,因此一个区块最多可以包括2000多笔交易。矿工负责把这2000多笔交易打包在一起,组成一个区块,然后计算这个区块的哈希(Hash)。中本聪故意让添加新区块变得困难,他的设计是:平均每10分钟,全网才能生成一个新区块,一小时只能生成六个。人为设置大量的计算及难度系数,需要大量算力才能得到当前区块的有效哈希,进而将新区块添加到区块链。为了让自己第一个添加新区块进入区块链,矿工之间充满了竞争,谁先算出来了,就能享受这个区块的全部收益;而其他矿工只能将那一页抄写一份,贴在自己账本的最后面,然后又开始新的记账过程。周而复始,生生不息,账本一页一页地增加,账本越来越厚。由此看来,挖矿其实是一种安全机制,利用密码学哈希函数和非对称加密,确保区块链网络的挖矿节点在广播区块前投入大量的计算,提高作假和作恶的成本,保证已有数据不可能被篡改,确保全网达成共识。笔者认为,中本聪设计这种机制的出发点是为了避免系统受到攻击。如果攻击者想用搞乱账本的方式来进行攻击,就需要足够的计算能力。当收益不足以抵消成本时,攻击者就没有了攻击系统的动力。所以对区块链来说,建立挖矿机制还是有必要的,但未来一定会产生更合理高效的解决方案。摘自张浩《一本书读懂区块链》如果您想做区块链开发,需要选择专业的开发团队,多年开发经验的公司,河南叁陆捌网络科技有限公司擅长区块链交易系统开发、区块链生态,区块链应用,区块链公链搭建,专注股票金融系统开发服务 港美股系统/50ETF期权系统/股票配资系统/券商交易系统,直播+商城系统开发、小程序定制研发、个性化APP定制等,针对不同行业为企业提供信息化解决方案,秉承“诚信、专注、尽责、创新”的理念,与客户携手合作,共创辉煌未来。区块链系统开发10年,有着专业的资深开发团队100人,十年磨一剑,技术成熟,团队优良。案例丰富,开发周期短,一站式专业售后, 报价透明合理,有需要,请私信我!发布于 2020-08-31 10:56区块链(Blockchain)btc挖矿赞同 363 条评论分享喜欢收藏申请
比特币挖矿消耗的计算能力用来干什么了?创造了什么价值?还是只是用于维系比特币体系使用? - 知乎
比特币挖矿消耗的计算能力用来干什么了?创造了什么价值?还是只是用于维系比特币体系使用? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册btc挖矿比特币挖矿消耗的计算能力用来干什么了?创造了什么价值?还是只是用于维系比特币体系使用?投入那么多电力,计算硬件设备去挖矿,这些运算能力用来计算什么内容了?这些内容怎么带来价值的?还是说这些运算能力全部都只是用于维系比特币这个系统?能否把…显示全部 关注者21被浏览32,562关注问题写回答邀请回答好问题 3添加评论分享16 个回答默认排序Arthur Wang男公关…… 关注是一个有趣的问题,从答主描述来看,并不了解比特币,但问题却更加切入本质:这些算力到底用来干嘛了?这个问题乍一看也比较好回答,当然是如问题所说,“用于维系比特币体系使用”了。但仔细琢磨,完全不是那么回事儿,这些算力实际上是被“内卷消耗”掉了。对,没有起到任何任何的意义,他们干的事情就是内卷掉了别人的算力。永不增长的效率比特币的共识机制被称为POW,工作量证明。简单解释就是,系统出了一道题,大家一起计算这道题,谁先算出来,钱归谁。这条规则下,不同统属的算力,彼此之间是直接竞争,而非合作关系。这是基础规则,还有附加规则如下:这道题以当前的算力参考,难度定在10分钟左右解出。如果网络算力提升,那么就提升难度,维持在10分钟左右。这个意思就是,增加再多的算力,比特币计算一次(出块)就是10分钟,时间并不会缩短,效率也不会增加。算力内卷那么就奇怪了,既然效率不增加,矿工们为什么疯狂提升算力呢?这是比特币的挖矿难度曲线变化,可以看到,近年来比特币挖矿难度节节攀升。比特币全网算力在2021年3月14日上升至新高185EH/s。自2016年1月21日以来,比特币全网算力一直在持续上升,在五年内上涨了惊人的18400%——比特币算力大爆炸——自2016年以来比特币算力上涨180倍答案Super简单:竞争用掉了。前面说了,谁先算出来钱归谁。那么,矿工有动力提升自己的算力。这没啥,大家都是地球人,科技水平差不多,你提升我也提示。最后就。。。变成这个鬼样子了。效率不变的情况下,算力提升180倍,等于全网收益变成1/180。(以上建立在收益固定的假设下,不考虑减半等因素)这些算力能用来做云计算么?不能!第一,比特币的机制,并没有此类算力额外使用的办法。参与算力竞争,就老老实实专心致志的挖矿,考虑杂七杂八会影响胜率——这就是钱啊。第二,一个隐藏问题:算力是怎么提升这么快的?其中一部分原因自然是矿工投入更多了,但真正重要的因素是矿机的出现。矿机,顾名思义,挖矿的机器。既然有电脑,为啥还要矿机呢?因为这些矿机有个特色:只会挖矿,专门算那道比特币系统提出的问题。如果改行做通用计算,可能一个矿池的矿机效率还不如你手里的千元机。最后,价值问题。请允许我群嘲一下币圈营销号。题主的问题中的价值,是一个真正站在人类整体角度的思考。币圈营销号一口一个值多少钱……格局啊……太低。价钱不等于价值,这不仅是马哲的理论,也是所有人应该明白的道理。而且不管比特币有什么价值,它的价值换算在算力上,2021年和2016年比也是1/180……——比特币到底有没有的价值。我认为是有的,不是钱的价值。而是中本聪开启了一个全新的思维模式,提出了一种可能。伟大的理论~不因币圈的乌烟瘴气而有损分毫。发布于 2021-06-27 17:42赞同 184 条评论分享收藏喜欢收起子楠小程序“职业照相机” 关注按你说电力这问题,你重新创造一个私有链,一个人也能维护,但你不敢信任他啊,一个人全维护了,他也能随便改。那么几十个人的小团体,你依然没法信任他。但是如果是数十万,上百万人,他们大部分互相不认识,然后一起维护一个链,那么各自利益不同,串通好了的概率也不大,所以你不太担心这个系统被里面的人修改了。越多人一起记账,就越安全。这就是所谓的去中心化的好处了。那这冲突点就来了。记账有必要这么多人么?当然没必要。但是人越多越安全。人越多也就越耗能。至于区块奖励,只是为了一开始没人去记账时,作为一个奖励手段,吸引有人去记账罢了。至于这算力拿去云计算啥的,那太麻烦了,没法保证对每个人(计算单元)来说机会均等,搞那么麻烦,出错的概率就大,简单的系统不容易出问题。至于为啥人会越来越多,那就和楼上说的“内卷”道理几乎一样了。那么问题来了,为什么会有这么多人,宁愿选择在矿里卷,也不在工厂里,在互联网公司卷呢?为啥非得搞个内卷的环境,不给大家自由创新的土壤呢?难道在996公司里卷,在产量已经饱和的工厂里卷,在售楼处,中介公司里卷,就创造了什么价值么?大部分人的工作也就只是为了赚钱,他们实际上也没创造任何价值。和这些矿工一样,都只是赚钱而已,当然,他们也和这些矿工一样,可以找个理由,说自己的行为就像机器上的螺丝钉一样,微小而又间接地创造了价值。但是,为啥那么多人都没办法去发挥自己的天赋创造价值,只能在各行各业里卷中卷呢?这就不是比特币的问题了。编辑于 2021-06-30 00:38赞同 262 条评论分享收藏喜欢
详解比特币挖矿— 应该是史上最通俗易懂的版本 - 知乎
详解比特币挖矿— 应该是史上最通俗易懂的版本 - 知乎切换模式写文章登录/注册详解比特币挖矿— 应该是史上最通俗易懂的版本S-Maruko从入门到精通,看我就够了! 比特币挖矿就是矿工将一定数量的交易打包到同一个区块,然后共同去计算同一道数学题来决定以谁的区块链为准,并且决定谁赢得新发行的比特币和交易费。 相信很多人都听说过比特币挖矿的说法,不知道有多少人真正理解这个概念。在矿产领域,挖矿的概念其实很容易理解,就是从富含某种矿物质的矿石中提炼出矿物质的过程,而所谓的矿工就是那些头戴安全头盔,从事提炼矿物质的工人,他们的形象在我们的脑海中恐怕一点也不陌生。 比特币世界的挖矿和矿产领域的挖矿还是有很多相似之处的,都是在挖掘有价值的资产,都需要花费一定的代价,都能给挖矿的人带来一定的收益。矿产领域的挖矿可以得到相对稀缺的矿产资源,同时要付出体力和承担安全风险的代价;而比特币的挖矿可以得到比特币奖励,同时要付出计算机算力的代价。 矿产领域的矿工是靠大型的机械设备,而比特币世界里的矿工是靠专业的计算机设备,伴随着激烈竞争,比特币的挖矿设备从最开始的普通计算机,到现在的越来越专业的挖矿设备。 不过比特币世界的挖矿和矿产领域的挖矿也还是有很多不同的,比特币世界的挖矿还是发行新比特币的唯一方式,同时也是在去中心化的网络中保证民主和竞争的重要手段,但是它也不是一点坏处都没有,比如浪费了大量的计算机算力和电力。至于为什么会这么说,看完接下来的文字我想你就会明白了。 文章导读: 1.什么是挖矿 2.如何证明谁的工作量最多 3.什么是工作量证明(POW) 4.挖矿是一场接力赛 5.小结 1. 什么是挖矿 如果还不了解区块链的话,可以参考不懂技术?老司机带你轻松理解区块链知识,比特币的网络中传播着大量的交易信息,既然没有中心化的统一服务,那么谁来确认这些交易的合法性,以及达成统一的共识呢?我们可以想想中心化服务的支付宝是如何解决这两个问题的,支付宝其实是买卖双方的中间担保,它负责确认每一笔交易是否合法,并且等双方在线下的交易没有问题时,才将资金转给卖方,这就保证了不会出现某一方作弊或者不认账的问题。 但是比特币网络中没有像支付宝这样的担保角色,那么它是如何做到交易的正常进行的呢?其实答案也很简单,就是由网络中的所有全节点共同决定这份交易是否合法,通过共同维护同一份帐薄来确保交易不会违约和篡改。 这就如同有10个人共同见证了两个人的交易,并一起确认这笔交易的合法性,同时每个人都维护了一份账本,这笔交易会记录到每个人各自维护的同一套账本上,如果有人要违约或篡改交易数据,他需要同时改掉至少6个人的账本(少数服从多数)。否则如果只改自己的那一份账本,别人很容易就看出他的作弊行为,想想掩耳盗铃的故事应该就能明白了。 说回到比特币世界的挖矿,挖矿就是比特币世界里的矿工确认每一笔交易是否合法(关于如何确认交易合法,可以参考一文看懂比特币交易的全过程),并将合法的交易写入到统一的公共帐薄上,同时会获得一定的新比特币和交易费的奖励的过程。奖励是为了鼓励更多的矿工加入进来,确保不会出现某一个节点独断专权的情况,至于奖励给哪一个矿工,这就要看谁的工作量更多了,在比特币的世界里,是靠共同解决某一个数学问题来证明工作量的多少。 这就如同在竞争激励的市场经济中,每个公司都会拼尽全力提供更好的服务和产品才能生存下去,这样就不太容易产生垄断和腐败,而竞争的结果促进了资源的有效配置,社会的整体财富就会不断增长,最终所有人都会受益,当然受益最大的还是对社会贡献最大的企业家。 而在计划经济下,所有的生产安排和资源分配,都掌握在少数人手中,权力的过度集中必然会导致腐败,也不利于资源的合理配置,长远来看,只能是绝大大多数人普遍赤贫,而受益最大的往往是掌握更多资源的人。想想改革开放前后的中国,就能明白计划经济和市场经济的不同效果了。 总结一下,挖矿就是矿工为了得到新发行的比特币和交易费的奖励,主动去确认交易是否合法,并将合法的交易写入共同维护的帐薄中的过程。而奖励是为了确保矿工有更多的积极性,避免权力集中在少数人手中,同时奖励也是比特币发行的唯一方式。 2. 如何证明谁的工作量更多 刚才提到了挖矿的奖励会给工作量最多的那个人,那么如何证明谁的工作量最多呢。其实也很简单,就是大家共同去解同一道数学题,这道数学题需要一定的计算量才能做出来,而率先得到答案的矿工就是最终的胜出者,分享最终的奖励。 相信大家以前都玩过数独游戏(没玩过的同学请自行搜索游戏规则),简单来说就是每一行与每一列必须出现1~9的数字,每个小九宫格内也必须有1~9的数字,并且每个数字在每行、每列和每个小九宫格里出现且仅能出现一次。游戏刚开始只会给出有限的几个位置上的数字,其他的位置都需要计算分析才能得出来正确的数字。 由这张游戏图可以看出,想要计算分析出每一个位置上的数字,还是需要花费不少力气的,但是填完之后来验证是否正确就简单很多,看一下横排、竖排以及小九宫格是否没有重复的数字即可。 而比特币挖矿的数学题也有这样的特性,就是计算起来很费事,但是验证起来却很简单。当然了,挖矿的数学题不是求解一道数独题目,而是计算一道概率题。 先举一个简单的掷骰子游戏,假如说有两个骰子,如果我说掷出一个骰子之和小于等于12的组合,你肯定会说这还不简单,随便掷,任一个组合都肯定小于等于12,一点难度都没有。好,那假如我把条件设为小于等于8呢,可能就不是每次都能掷出来了,它的概率是0.72;如果我再把条件设小呢,如果是4呢,那么掷出来的可能性就会进一步减小,概率为0.11。(这里默认大家都会计算概率,如果不懂的话,只需要知道概率在不断减小就可以,想想现实的场景,这点应该不难理解)3. 什么是工作量证明(POW) 理解了掷骰子游戏,再来介绍挖矿的工作量证明(POW Proof-Of-Work)算法就很简单了,在之前一篇介绍区块链的文章不懂技术?老司机带你轻松理解区块链知识中,曾经提到过区块的数据结构,当时提到了两个数据是和挖矿相关的,当时没有详细说明,现在就可以拿出来分析了。 这里的难度目标和Nonce就是和挖矿相关的参数,我们都知道比特币网络平均每10分钟产生新的比特币,也就是说挖矿的平均时间为10分钟,也许你会问怎么确保刚好是10分钟呢。其实答案很简单,就是控制数学题目的难度,假如某个人的解题速度在不断提升,那么我只要提高题目难度,就可以保证他解答的时间大致衡定。 在比特币世界中,解题速度和计算机的算力有直接的关系,想想今天的一台计算机和20年前的一台计算机去解同一道复杂的数学题,谁先计算出来,我想你肯定也认同是今天的计算机率先求出答案。如果我告诉你,谁先解出答案,就给谁丰厚的奖励,大家肯定会拼命提高计算机的性能,这也是全球各个矿工在不断提高算力的原因,因为大家都想快速解出答案,以获得奖励。 说回到难度目标和Nonce两个参数,挖矿的题目是这样的,每一个区块头都有唯一的哈希值,我现在要求你在这个哈希值后面添加一个随机数字(一般是从零开始递增),然后再去计算这个结果的哈希值,直到求出来的哈希值小于某一个数字,而这个数字是由一个常数除以上面的难度目标得出来的。 如果你理解了上面的掷骰子游戏应该能看懂这道题目,其实就是通过不同的数字不断地计算哈希值,直到答案小于某一个目标数字,这个目标数字越小,难度就越大,跟上面的骰子一样,结果越小,掷出来的概率就越小。而这个目标数字是由难度目标决定的,难度目标数字越大,除出来得到的目标数字就越小。 Nonce计数器主要是统计总共计算了多少次,就如同掷骰子一样,虽然可以一把掷出要求的数字,但是多次平均下来,肯定是符合概率统计的,这样别的矿工就可以根据Nonce数字大小再一次印证这个矿工是否有作弊。 至此你应该已经明白工作量证明算法的大致逻辑了吧,本质上就是在求一个概率题,谁先算出来就算谁赢,奖励就归谁。难度随着答题的速度会动态调整,而这个难度就是由上面的难度目标值决定,这样就能保证平均每10分钟完成一次挖矿。 4. 挖矿是一场接力赛 一旦一个矿工成功挖矿,根据数独游戏的逻辑,其他矿工很快就能验证是否成功,一旦验证通过就会将区块放入自己维护的区块链中,并赶紧投入到下一次的挖矿,不带有一丝一毫的犹豫。如此激烈的竞争伴随的结果,就是每个矿工都不断提升自己的计算机性能,结果就是大家的挖矿设备都不断升级,以至于现在的矿场都是紧挨发电厂,用最先进的专用挖矿芯片。 这里其实还有一个问题,就是假如说有两个矿工同时计算出结果怎么办?这个时候就会出现分叉,也就是说区块链的末端区块存在分歧了,其实这只会临时出现,并不会长久存在。原因是一旦其他矿工确认了本次挖矿成功,就会投入到下一次挖矿,如果其他矿工又挖矿成功了,这条区块链路就会比另一条区块链路多出一个区块,区块链中的原则就是只认最长的链路,所以另一个挖矿成功的矿工很快就会舍弃之前的区块,以最长的区块链为准。 而奖励也是要得到大多数的矿工认可后才会有效,毕竟账本是所有的人一起维护的,只有大多数人的账本上认可你的挖矿结果才有效。所以临时的分叉并不会影响最终的奖励,其实10分钟的挖矿时间也是比特币之父“中本聪”对效率和共识的一种平衡。 看到这里也许你就会明白,为什么会说挖矿浪费了很多算力和电力,因为胜出者往往只有一个,其他的矿工就相当于白忙活了,但是他们的计算机已经投入计算了,这笔算力和与之相对应的电力也就此浪费了。 这恐怕就是为了维护民主化的代价,如果让中心化的节点去统一确认交易,并写入公共帐薄,那么很容易滋生出腐败,这也不符合中本聪一开始的去中心化的设计理念,但是靠挖矿决定输赢又会导致资源浪费,只能说任何事情都是有成本和代价的,只要收益大于成本,这件事就有做的价值,比特币现在的价格相比用于计算的电费还是划算得多。5. 小结 关于比特币的挖矿到此就全部介绍完了,不知道你有没有看明白。总结一下就是矿工将一定数量的交易打包到同一个区块,然后共同去计算同一道数学题来决定以谁的区块链为准,并且决定谁赢得新发行的比特币和交易费。这种靠竞争来解决交易共识的问题,避免了单一节点垄断整个网络的风险,让整个网络形成了良性竞争的局面。 当然随着全网算力的提高,篡改的难度就越来越大了,因为你要改至少51%的全节点的账本,这就要求你的算力至少是其他51%全节点的总和,这个难度现在已经大到无法想象的程度,而且即便能做到,为此付出的电费代价也会让篡改者掂量一下这么做是否划算。关于比特币的挖矿到此就全部介绍完了,不知道你有没有看明白。总结一下就是矿工将一定数量的交易打包到同一个区块,然后共同去计算同一道数学题来决定以谁的区块链为准,并且决定谁赢得新发行的比特币和交易费。这种靠竞争来解决交易共识的问题,避免了单一节点垄断整个网络的风险,让整个网络形成了良性竞争的局面。 ——The End——『声明:本文转载于公众号“扬帆沧海”』发布于 2021-05-13 13:48比特币 (Bitcoin)btc挖矿挖矿赞同 394 条评论分享喜欢收藏申请
百度安全验证
百度安全验证
网络不给力,请稍后重试
返回首页
问题反馈
数据挖掘和机器学习到底有什么区别? - 知乎
数据挖掘和机器学习到底有什么区别? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册算法数据挖掘机器学习毕业设计算法设计数据挖掘和机器学习到底有什么区别?kmeans同时是数据挖掘和机器学习的算法吗?那gmm属于哪一个呢? 能不能以kmeans 和gmm的算法对比+一点点改进来做算法类的毕设呢显示全部 关注者82被浏览58,591关注问题写回答邀请回答好问题 1添加评论分享15 个回答默认排序知乎用户本人数据挖掘方向Ph.D.在读 尝试回答一下数据挖掘更注重数据本身 提出和解决它延伸出来的问题 有时提出一个问题比解决它更重要 比如Jon Kleinberg和他的学生们在kdd2003上发表的maximize the spread of influence through a social network主要贡献就是提出了graph上的influence maximization问题 数据挖掘的数据来源更多样化 人类积累了各种各样的数据 还有很多没有被充分利用 而提出一种数据相关的有意义的问题并把他用数学符号定义下来是做数据挖掘研究的第一步数据挖掘的问题可以用机器学习的方法解 也可以用其他的方法解 比如图上的组合优化问题以前常常是用贪心算法/近似算法解的 当然最近也逐渐开始有graph embedding + deep Q learning的解法发布于 2019-04-13 23:39赞同 272 条评论分享收藏喜欢收起朱卫军Python话题下的优秀答主 关注上海交通大学张志华教授的《机器学习导论》第一课,里面讲了机器学习和数据挖掘的区别,以及如何学习机器学习,非常干货!https://www.zhihu.com/video/1134819499365773312编辑于 2019-10-19 01:00赞同 512 条评论分享收藏喜欢
比特币挖矿消耗的计算能力用来干什么了?创造了什么价值?还是只是用于维系比特币体系使用? - 知乎
比特币挖矿消耗的计算能力用来干什么了?创造了什么价值?还是只是用于维系比特币体系使用? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册btc挖矿比特币挖矿消耗的计算能力用来干什么了?创造了什么价值?还是只是用于维系比特币体系使用?投入那么多电力,计算硬件设备去挖矿,这些运算能力用来计算什么内容了?这些内容怎么带来价值的?还是说这些运算能力全部都只是用于维系比特币这个系统?能否把…显示全部 关注者21被浏览32,562关注问题写回答邀请回答好问题 3添加评论分享16 个回答默认排序Arthur Wang男公关…… 关注是一个有趣的问题,从答主描述来看,并不了解比特币,但问题却更加切入本质:这些算力到底用来干嘛了?这个问题乍一看也比较好回答,当然是如问题所说,“用于维系比特币体系使用”了。但仔细琢磨,完全不是那么回事儿,这些算力实际上是被“内卷消耗”掉了。对,没有起到任何任何的意义,他们干的事情就是内卷掉了别人的算力。永不增长的效率比特币的共识机制被称为POW,工作量证明。简单解释就是,系统出了一道题,大家一起计算这道题,谁先算出来,钱归谁。这条规则下,不同统属的算力,彼此之间是直接竞争,而非合作关系。这是基础规则,还有附加规则如下:这道题以当前的算力参考,难度定在10分钟左右解出。如果网络算力提升,那么就提升难度,维持在10分钟左右。这个意思就是,增加再多的算力,比特币计算一次(出块)就是10分钟,时间并不会缩短,效率也不会增加。算力内卷那么就奇怪了,既然效率不增加,矿工们为什么疯狂提升算力呢?这是比特币的挖矿难度曲线变化,可以看到,近年来比特币挖矿难度节节攀升。比特币全网算力在2021年3月14日上升至新高185EH/s。自2016年1月21日以来,比特币全网算力一直在持续上升,在五年内上涨了惊人的18400%——比特币算力大爆炸——自2016年以来比特币算力上涨180倍答案Super简单:竞争用掉了。前面说了,谁先算出来钱归谁。那么,矿工有动力提升自己的算力。这没啥,大家都是地球人,科技水平差不多,你提升我也提示。最后就。。。变成这个鬼样子了。效率不变的情况下,算力提升180倍,等于全网收益变成1/180。(以上建立在收益固定的假设下,不考虑减半等因素)这些算力能用来做云计算么?不能!第一,比特币的机制,并没有此类算力额外使用的办法。参与算力竞争,就老老实实专心致志的挖矿,考虑杂七杂八会影响胜率——这就是钱啊。第二,一个隐藏问题:算力是怎么提升这么快的?其中一部分原因自然是矿工投入更多了,但真正重要的因素是矿机的出现。矿机,顾名思义,挖矿的机器。既然有电脑,为啥还要矿机呢?因为这些矿机有个特色:只会挖矿,专门算那道比特币系统提出的问题。如果改行做通用计算,可能一个矿池的矿机效率还不如你手里的千元机。最后,价值问题。请允许我群嘲一下币圈营销号。题主的问题中的价值,是一个真正站在人类整体角度的思考。币圈营销号一口一个值多少钱……格局啊……太低。价钱不等于价值,这不仅是马哲的理论,也是所有人应该明白的道理。而且不管比特币有什么价值,它的价值换算在算力上,2021年和2016年比也是1/180……——比特币到底有没有的价值。我认为是有的,不是钱的价值。而是中本聪开启了一个全新的思维模式,提出了一种可能。伟大的理论~不因币圈的乌烟瘴气而有损分毫。发布于 2021-06-27 17:42赞同 184 条评论分享收藏喜欢收起子楠小程序“职业照相机” 关注按你说电力这问题,你重新创造一个私有链,一个人也能维护,但你不敢信任他啊,一个人全维护了,他也能随便改。那么几十个人的小团体,你依然没法信任他。但是如果是数十万,上百万人,他们大部分互相不认识,然后一起维护一个链,那么各自利益不同,串通好了的概率也不大,所以你不太担心这个系统被里面的人修改了。越多人一起记账,就越安全。这就是所谓的去中心化的好处了。那这冲突点就来了。记账有必要这么多人么?当然没必要。但是人越多越安全。人越多也就越耗能。至于区块奖励,只是为了一开始没人去记账时,作为一个奖励手段,吸引有人去记账罢了。至于这算力拿去云计算啥的,那太麻烦了,没法保证对每个人(计算单元)来说机会均等,搞那么麻烦,出错的概率就大,简单的系统不容易出问题。至于为啥人会越来越多,那就和楼上说的“内卷”道理几乎一样了。那么问题来了,为什么会有这么多人,宁愿选择在矿里卷,也不在工厂里,在互联网公司卷呢?为啥非得搞个内卷的环境,不给大家自由创新的土壤呢?难道在996公司里卷,在产量已经饱和的工厂里卷,在售楼处,中介公司里卷,就创造了什么价值么?大部分人的工作也就只是为了赚钱,他们实际上也没创造任何价值。和这些矿工一样,都只是赚钱而已,当然,他们也和这些矿工一样,可以找个理由,说自己的行为就像机器上的螺丝钉一样,微小而又间接地创造了价值。但是,为啥那么多人都没办法去发挥自己的天赋创造价值,只能在各行各业里卷中卷呢?这就不是比特币的问题了。编辑于 2021-06-30 00:38赞同 262 条评论分享收藏喜欢
比特币挖矿到底在计算什么? - 知乎
比特币挖矿到底在计算什么? - 知乎切换模式写文章登录/注册比特币挖矿到底在计算什么?太衍真君BTC 的价值就是交易渠道本身。一组新制造出来的比特币提供了把旧的比特币从一个帐户转移到另一个帐户的数学保证。这个安全保证背后的代价是大量的计算力。生产这么一个安全通道是需要消耗大量能源的,所以整个比特币用户群体,奖励那个造币者(目前是 50 BTC)。简单说,我的理解就是,现在世界上所有的比特币背后都是用运行计算机的能量产生出来的,它们的总价值,(到现在一共有大约 12w 组比特币被生产出来,每组 50 个,市场价格大约 7.3 美金一个),应该是少于消耗掉的能源的总市场价值的。不过我想,用于生产比特币的能源大都原本就是不用也被浪费掉的资源。一个没有中心节点的“银行”是怎么让大家信任并工作起来的呢?答案是,这个 p2p 网络上每个节点都记录了比特币诞生以来的每笔交易的详单,并从中可以推测出每个比特币唯一的属于谁。这样你接受一笔交易时,就能知道别人给你的钱是不是合法的。从最基本的说起:每个帐户其实就是一对公私匙,有私匙的人就是帐户的主人。如果 A 要给 B 转一笔钱,A 就把钱的数量加上 B 的公匙,用自己的钥匙签名。而 B 看到这个签名,就可以了解,的确是 A 转给了他如数的比特币。那么这笔交易需要一个见证人,担保交易发生过。这样,以后 B 想用这笔钱的时候才是合法的。担保人就是整个使用比特币的网络。A 在发起这笔交易的时候,必须把签过名的交易单尽量的广播到 p2p 网络上,最终会让每个节点都知道这件事。B 从 p2p 网络上不断的收到别人的确认信息。当它收到足够多的确认信息后,就认为 A 的确发出了这条交易单。这以后,B 就可以自由使用这笔钱了。当 B 使用 A 转给它的钱给 C 时,也会广播给足够多(最终所有人都收到)的人让他们担保。每个担保人只有确信 B 有足够多的钱可以支付的时候才做确认。本质上,BTC 网络并没有记录每一块钱属于谁,它记录的是从诞生起到当前的每一笔交易,并推算出每个帐户里有多少钱。任何人试图确认一个交易单时,它需要确认的是转出帐号上有没有那么多钱。比特币需要解决的核心问题是,如何避免一笔钱被花两次。整个帐单序列是一环套一环的。每个人在完整的全局帐单上签上新的一笔的时候,都需要利用前面信息生成后面的。这个帐单序列被称为 chain of blocks 。每个区块里面包含有若干条经过确认并 hash 签名(难以伪造)的交易记录。每个区块都和全局表上的上一个区块有关联。每条帐单都会通过 p2p 网络最终被转发给制造新区块的节点上。这个制造新区块的过程被叫做挖矿,制造新区块就是把最近收到的帐单打包在刚制造的区块里。这个打包的过程即制作的过程,只有极其稀少的几率被制造成功。(你可以理解成把新收到的帐单合在一起,一次成型不可修改,如果制造失败就要再来一次)一旦制造成功,你就把新的区块(被认为是对老的全局区块链的延续)广播出去。因为是 p2p 网络,可能有许多人都在同时制造新的区块,但有一个排序机制保证只有最优(最难,花费最大计算时间的)的那个新区块被网络群体接受,挂在全局的区块链上。重复一次,整个比特币网络只有一个全局帐单表,每个节点都完整的保存有一份。这个全局帐单表会越来越大,区块链越来越长,在最新的部分,必然有许多分茬。这是因为 p2p 网络的挖矿过程是分开并行进行的,每条新帐单也不能立刻广播给所有的节点。每个挖矿的节点都有责任把他新收到的,在他认可的老的全局帐单上不存在的帐单,合在他准备制造的新区块中。一旦新区块被制造出来,就立刻广播出去,争取得到更多人的认可。主要是得到那些想挖矿的人的认可,这些人会在这个区块的基础上制造新的区块。如果 p2p 网络过大,交易帐单不能尽量的迅速的广播到全网络。就会出来 p2p 的网络的局部保持有小群体共同认可的一份全局帐单。多个全局帐单的分支同时发展是有可能的。因为每个小群体都可能认为他们看见的那部分更长更有效。但是,只有有人发现另一条分支更长,它就会转换阵营。所以,有一定的可能性,你的帐单被一个小群体接受,但在一段时间后,被更大的阵营抛弃。不过,算法参数决定了,新的区块产生速度很慢,如果你的帐单被多达 6 个人确认,基本上就保证了它合并到的那份全局帐单,就是 p2p 网络全体认可的。既然生成新区块费时费力,制造出新区块的几率好象买彩票中大奖,还有那么多人去执行程序计算出新区块呢?答案是,每个制造出新区块的人,都有权利构造一条帐单声明老天给了我 50比特币。这个规则是被所有比特币用户共同承认的。把制造区块等同于成挖金矿 (mining) 只是一个形象上的比喻。实际上,没有人可以把金子挖出来囤积。每个新区块必须包含全局表上的上一个区块的 hash 值,BTC 网络自我调节难度,让每 10 分钟大约产生一个新区块。如果你 10 分钟内没制造出新的区块,差不多就是说你前面 10 分钟干的活白干了。从最新版的区块继续演算。所以更恰当的比喻是买彩票。一个每 10 分钟开一次的彩票。你不停的花钱买,10 分钟内开中了就是你的,开不中先买的都作废,然后下一轮。数学上怎样保证挖矿的过程需要消耗大量的 CPU 时间?并只有很小的几率成功?这里用到一个叫做 Hashcash 的系统。它最早是为了改善 email spam 的问题被发明出来的。就是给一段特定信息(比如这封 email 是从谁发给谁)加一个特定的 hash 头。这个 hash 头需要大量的 CPU 时间计算出来。发 spam 的人没有那么多 CPU 时间为群发的每一封 email 计算一个符合要求的 hash 头,所以认为有这个合法 hash 头的 email 不太可能是 spam (花了 CPU 时间在上面)这个算法就是,为你想保护的信息,找到一串数字,附加上去后,使用某种公认的 hash 算法,比如 SHA-2 ,算出一个 hash 值。如果 hash 值由一长串 0 打头(具体多少个决定了难度),那么就成功了。为一段信息,找到这串数字,在目前来说,除了暴力尝试没有什么好的方法。也就是随机更换数字,换一次就 hash 一次比对。在一个可以预期的尝试次数后,一般都能找到想找的数字。每个想挖矿赚比特币的人,不停的从比特币网络上监听信息。如果有人发布了新的合法的区块,他就合并到本地的全局表里。并重置自己的计算过程,从新得到的区块开始。如果有新发布的交易单,也记录下来。不断的把最新的区块的 hash 值、新收到的交易单,自己获得 50比特币的那条奖励单合并在一起,计算 SHA-256 ,看看结果是否满足条件。一旦满足,就把这个新的区块广播出去。当足够的人认可它,(以它为基础计算后面的区块),他也就获得了那 50比特币。为了匹配比特币的经济规模。所有的 比特币client 都被设置成,每 210000 个区块,生产新区块的人被认可凭空获得的比特币数量比之前的少一半(如果这个时候他还在包内写上自己获得 50比特币,其他人不会确认他的这个区块)。这会让比特币的总量增速变缓。新的区块产生的速度是由难度来调节的。这个难度会由 p2p 网络根据最近生产区块的速度自动调节。所以即使日后计算能力增加,也能保证大约 10 分钟一个的速度。而且,随着生产新区块的收益减少,愿意贡献自己的 CPU 来挖矿的节点也会变少。(如果减少太多,只需要减少难度即可)最终,p2p 网络不再凭空制造出新的比特币,这个时候制造新的区块的动力是什么呢?那就是交易税。因为没有什么人愿意生产新的区块,发起交易就变的困难。(没有区块可以容纳交易单)希望交易被确认的人可以声明,如果有人制造出新的区块接纳他的交易单,他会支付一小笔交易税给他。当许多人都这么做的时候,制造区块又变的有利可图了。只不过,直接上不再有新的比特币诞生,只是在这些比特币用户之间流通。总有一些比特币会消失,主要是那些帐号的私匙丢失了,没有任何人可以转移走帐户上的钱。不能流通的货币就不是货币了。但最终比特币总体会达到一个比较大的规模,准确说是两千一百万个。但比特币本身是可以切割的,比如你可以支付给别人 0.01 个比特币。所以比特币本身会升值,总数也一直够用。当然,获取比特币最好的方式就是用专业的矿机挖矿,每天挖每天屯,随着币价升值而升值!发布于 2021-03-31 10:01虚拟货币比特币 (Bitcoin)赞同 1添加评论分享喜欢收藏申请
详解比特币挖矿— 应该是史上最通俗易懂的版本 - 知乎
详解比特币挖矿— 应该是史上最通俗易懂的版本 - 知乎切换模式写文章登录/注册详解比特币挖矿— 应该是史上最通俗易懂的版本S-Maruko从入门到精通,看我就够了! 比特币挖矿就是矿工将一定数量的交易打包到同一个区块,然后共同去计算同一道数学题来决定以谁的区块链为准,并且决定谁赢得新发行的比特币和交易费。 相信很多人都听说过比特币挖矿的说法,不知道有多少人真正理解这个概念。在矿产领域,挖矿的概念其实很容易理解,就是从富含某种矿物质的矿石中提炼出矿物质的过程,而所谓的矿工就是那些头戴安全头盔,从事提炼矿物质的工人,他们的形象在我们的脑海中恐怕一点也不陌生。 比特币世界的挖矿和矿产领域的挖矿还是有很多相似之处的,都是在挖掘有价值的资产,都需要花费一定的代价,都能给挖矿的人带来一定的收益。矿产领域的挖矿可以得到相对稀缺的矿产资源,同时要付出体力和承担安全风险的代价;而比特币的挖矿可以得到比特币奖励,同时要付出计算机算力的代价。 矿产领域的矿工是靠大型的机械设备,而比特币世界里的矿工是靠专业的计算机设备,伴随着激烈竞争,比特币的挖矿设备从最开始的普通计算机,到现在的越来越专业的挖矿设备。 不过比特币世界的挖矿和矿产领域的挖矿也还是有很多不同的,比特币世界的挖矿还是发行新比特币的唯一方式,同时也是在去中心化的网络中保证民主和竞争的重要手段,但是它也不是一点坏处都没有,比如浪费了大量的计算机算力和电力。至于为什么会这么说,看完接下来的文字我想你就会明白了。 文章导读: 1.什么是挖矿 2.如何证明谁的工作量最多 3.什么是工作量证明(POW) 4.挖矿是一场接力赛 5.小结 1. 什么是挖矿 如果还不了解区块链的话,可以参考不懂技术?老司机带你轻松理解区块链知识,比特币的网络中传播着大量的交易信息,既然没有中心化的统一服务,那么谁来确认这些交易的合法性,以及达成统一的共识呢?我们可以想想中心化服务的支付宝是如何解决这两个问题的,支付宝其实是买卖双方的中间担保,它负责确认每一笔交易是否合法,并且等双方在线下的交易没有问题时,才将资金转给卖方,这就保证了不会出现某一方作弊或者不认账的问题。 但是比特币网络中没有像支付宝这样的担保角色,那么它是如何做到交易的正常进行的呢?其实答案也很简单,就是由网络中的所有全节点共同决定这份交易是否合法,通过共同维护同一份帐薄来确保交易不会违约和篡改。 这就如同有10个人共同见证了两个人的交易,并一起确认这笔交易的合法性,同时每个人都维护了一份账本,这笔交易会记录到每个人各自维护的同一套账本上,如果有人要违约或篡改交易数据,他需要同时改掉至少6个人的账本(少数服从多数)。否则如果只改自己的那一份账本,别人很容易就看出他的作弊行为,想想掩耳盗铃的故事应该就能明白了。 说回到比特币世界的挖矿,挖矿就是比特币世界里的矿工确认每一笔交易是否合法(关于如何确认交易合法,可以参考一文看懂比特币交易的全过程),并将合法的交易写入到统一的公共帐薄上,同时会获得一定的新比特币和交易费的奖励的过程。奖励是为了鼓励更多的矿工加入进来,确保不会出现某一个节点独断专权的情况,至于奖励给哪一个矿工,这就要看谁的工作量更多了,在比特币的世界里,是靠共同解决某一个数学问题来证明工作量的多少。 这就如同在竞争激励的市场经济中,每个公司都会拼尽全力提供更好的服务和产品才能生存下去,这样就不太容易产生垄断和腐败,而竞争的结果促进了资源的有效配置,社会的整体财富就会不断增长,最终所有人都会受益,当然受益最大的还是对社会贡献最大的企业家。 而在计划经济下,所有的生产安排和资源分配,都掌握在少数人手中,权力的过度集中必然会导致腐败,也不利于资源的合理配置,长远来看,只能是绝大大多数人普遍赤贫,而受益最大的往往是掌握更多资源的人。想想改革开放前后的中国,就能明白计划经济和市场经济的不同效果了。 总结一下,挖矿就是矿工为了得到新发行的比特币和交易费的奖励,主动去确认交易是否合法,并将合法的交易写入共同维护的帐薄中的过程。而奖励是为了确保矿工有更多的积极性,避免权力集中在少数人手中,同时奖励也是比特币发行的唯一方式。 2. 如何证明谁的工作量更多 刚才提到了挖矿的奖励会给工作量最多的那个人,那么如何证明谁的工作量最多呢。其实也很简单,就是大家共同去解同一道数学题,这道数学题需要一定的计算量才能做出来,而率先得到答案的矿工就是最终的胜出者,分享最终的奖励。 相信大家以前都玩过数独游戏(没玩过的同学请自行搜索游戏规则),简单来说就是每一行与每一列必须出现1~9的数字,每个小九宫格内也必须有1~9的数字,并且每个数字在每行、每列和每个小九宫格里出现且仅能出现一次。游戏刚开始只会给出有限的几个位置上的数字,其他的位置都需要计算分析才能得出来正确的数字。 由这张游戏图可以看出,想要计算分析出每一个位置上的数字,还是需要花费不少力气的,但是填完之后来验证是否正确就简单很多,看一下横排、竖排以及小九宫格是否没有重复的数字即可。 而比特币挖矿的数学题也有这样的特性,就是计算起来很费事,但是验证起来却很简单。当然了,挖矿的数学题不是求解一道数独题目,而是计算一道概率题。 先举一个简单的掷骰子游戏,假如说有两个骰子,如果我说掷出一个骰子之和小于等于12的组合,你肯定会说这还不简单,随便掷,任一个组合都肯定小于等于12,一点难度都没有。好,那假如我把条件设为小于等于8呢,可能就不是每次都能掷出来了,它的概率是0.72;如果我再把条件设小呢,如果是4呢,那么掷出来的可能性就会进一步减小,概率为0.11。(这里默认大家都会计算概率,如果不懂的话,只需要知道概率在不断减小就可以,想想现实的场景,这点应该不难理解)3. 什么是工作量证明(POW) 理解了掷骰子游戏,再来介绍挖矿的工作量证明(POW Proof-Of-Work)算法就很简单了,在之前一篇介绍区块链的文章不懂技术?老司机带你轻松理解区块链知识中,曾经提到过区块的数据结构,当时提到了两个数据是和挖矿相关的,当时没有详细说明,现在就可以拿出来分析了。 这里的难度目标和Nonce就是和挖矿相关的参数,我们都知道比特币网络平均每10分钟产生新的比特币,也就是说挖矿的平均时间为10分钟,也许你会问怎么确保刚好是10分钟呢。其实答案很简单,就是控制数学题目的难度,假如某个人的解题速度在不断提升,那么我只要提高题目难度,就可以保证他解答的时间大致衡定。 在比特币世界中,解题速度和计算机的算力有直接的关系,想想今天的一台计算机和20年前的一台计算机去解同一道复杂的数学题,谁先计算出来,我想你肯定也认同是今天的计算机率先求出答案。如果我告诉你,谁先解出答案,就给谁丰厚的奖励,大家肯定会拼命提高计算机的性能,这也是全球各个矿工在不断提高算力的原因,因为大家都想快速解出答案,以获得奖励。 说回到难度目标和Nonce两个参数,挖矿的题目是这样的,每一个区块头都有唯一的哈希值,我现在要求你在这个哈希值后面添加一个随机数字(一般是从零开始递增),然后再去计算这个结果的哈希值,直到求出来的哈希值小于某一个数字,而这个数字是由一个常数除以上面的难度目标得出来的。 如果你理解了上面的掷骰子游戏应该能看懂这道题目,其实就是通过不同的数字不断地计算哈希值,直到答案小于某一个目标数字,这个目标数字越小,难度就越大,跟上面的骰子一样,结果越小,掷出来的概率就越小。而这个目标数字是由难度目标决定的,难度目标数字越大,除出来得到的目标数字就越小。 Nonce计数器主要是统计总共计算了多少次,就如同掷骰子一样,虽然可以一把掷出要求的数字,但是多次平均下来,肯定是符合概率统计的,这样别的矿工就可以根据Nonce数字大小再一次印证这个矿工是否有作弊。 至此你应该已经明白工作量证明算法的大致逻辑了吧,本质上就是在求一个概率题,谁先算出来就算谁赢,奖励就归谁。难度随着答题的速度会动态调整,而这个难度就是由上面的难度目标值决定,这样就能保证平均每10分钟完成一次挖矿。 4. 挖矿是一场接力赛 一旦一个矿工成功挖矿,根据数独游戏的逻辑,其他矿工很快就能验证是否成功,一旦验证通过就会将区块放入自己维护的区块链中,并赶紧投入到下一次的挖矿,不带有一丝一毫的犹豫。如此激烈的竞争伴随的结果,就是每个矿工都不断提升自己的计算机性能,结果就是大家的挖矿设备都不断升级,以至于现在的矿场都是紧挨发电厂,用最先进的专用挖矿芯片。 这里其实还有一个问题,就是假如说有两个矿工同时计算出结果怎么办?这个时候就会出现分叉,也就是说区块链的末端区块存在分歧了,其实这只会临时出现,并不会长久存在。原因是一旦其他矿工确认了本次挖矿成功,就会投入到下一次挖矿,如果其他矿工又挖矿成功了,这条区块链路就会比另一条区块链路多出一个区块,区块链中的原则就是只认最长的链路,所以另一个挖矿成功的矿工很快就会舍弃之前的区块,以最长的区块链为准。 而奖励也是要得到大多数的矿工认可后才会有效,毕竟账本是所有的人一起维护的,只有大多数人的账本上认可你的挖矿结果才有效。所以临时的分叉并不会影响最终的奖励,其实10分钟的挖矿时间也是比特币之父“中本聪”对效率和共识的一种平衡。 看到这里也许你就会明白,为什么会说挖矿浪费了很多算力和电力,因为胜出者往往只有一个,其他的矿工就相当于白忙活了,但是他们的计算机已经投入计算了,这笔算力和与之相对应的电力也就此浪费了。 这恐怕就是为了维护民主化的代价,如果让中心化的节点去统一确认交易,并写入公共帐薄,那么很容易滋生出腐败,这也不符合中本聪一开始的去中心化的设计理念,但是靠挖矿决定输赢又会导致资源浪费,只能说任何事情都是有成本和代价的,只要收益大于成本,这件事就有做的价值,比特币现在的价格相比用于计算的电费还是划算得多。5. 小结 关于比特币的挖矿到此就全部介绍完了,不知道你有没有看明白。总结一下就是矿工将一定数量的交易打包到同一个区块,然后共同去计算同一道数学题来决定以谁的区块链为准,并且决定谁赢得新发行的比特币和交易费。这种靠竞争来解决交易共识的问题,避免了单一节点垄断整个网络的风险,让整个网络形成了良性竞争的局面。 当然随着全网算力的提高,篡改的难度就越来越大了,因为你要改至少51%的全节点的账本,这就要求你的算力至少是其他51%全节点的总和,这个难度现在已经大到无法想象的程度,而且即便能做到,为此付出的电费代价也会让篡改者掂量一下这么做是否划算。关于比特币的挖矿到此就全部介绍完了,不知道你有没有看明白。总结一下就是矿工将一定数量的交易打包到同一个区块,然后共同去计算同一道数学题来决定以谁的区块链为准,并且决定谁赢得新发行的比特币和交易费。这种靠竞争来解决交易共识的问题,避免了单一节点垄断整个网络的风险,让整个网络形成了良性竞争的局面。 ——The End——『声明:本文转载于公众号“扬帆沧海”』发布于 2021-05-13 13:48比特币 (Bitcoin)btc挖矿挖矿赞同 394 条评论分享喜欢收藏申请
比特币挖矿算法详解 - 知乎
比特币挖矿算法详解 - 知乎首发于清源的区块链实验室切换模式写文章登录/注册比特币挖矿算法详解清源区块链工程师比特币网络中,源源不断的收到交易,需要节点不断的打包这些交易,而网络中的所有节点都是对等的,如何判断谁可以打包这些交易,如何避免重复打包这些交易呢?这个时候就需要用到工作量证明(PoW,Proof-of-Work)的方式决定记账权。网络中的任何全节点,都可以试图创建区块,但区块只有在至少满足下列条件时创建的区块才会被其他节点认可和接受。 区块中包含的交易都是合法的; 区块哈希要小于等于一个目标值;要满足第一个条件很简单,节点只要将每笔交易都验证一遍,丢弃掉不合法的交易即可。但要满足第二个条件就需要挖矿。挖矿比特币挖矿就是找到一个随机数(Nonce)参与哈希运算Hash(Block Header),使得最后得到的哈希值符合难度要求,用公式表示就是Hash(Block Header)<= target 比特币采用的哈希算法是 SHA-256 ,也就是说最后会产生256位的输出,一共2^256种可能的取值。 最后得到的哈希值小于target的意思是把哈希后得到的bytes转换成数字后小于target转换成的数字。举个例子,直观的感受一下挖矿的难度;SHA-256计算123的值
a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
下面这段字符是比特币第1000个区块的哈希(2009年1月产生);
00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09
可以看到前面有8个0,虽然哈希值的生成是随机的,但是生成前面有8个0的值对计算机穷举来说也并不算太难。
再看一下这段字符,是比特币第560000个区块的哈希(2019年1月产生);
0000000000000000002c7b276daf6efb2b6aa68e2ce3be67ef925b3264ae7122
可以看到前面有18个0,要生成满足这个条件的哈希对于普通电脑来说几乎是不可能完成的任务了。简单来看挖矿难度的高低就是生成区块头的哈希值有多少0。挖矿难度在比特币系统中出块时间被设置为一个常数10分钟,但是挖出区块的速度并不是固定的,而是随着挖矿难度的变化在10分钟上下浮动, 挖矿难度越大,出块时间就越长,为了得到相对平均的出块时间,需要动态调整挖矿难度。 比特币每产生2016个区块调整一次挖矿难度,一个块10分钟,2016个块大概是两周的时间,而调整挖矿难度的这些逻辑都在代码中,当大多数诚实节点采用这个策略的时候整个网络就会自动遵循这个策略。挖矿难度的计算公式如下:diffculty = difficulty_1_target / target此处的 difficulty_1_target 为一个常数,非常大的一个数字( 2^(256-32)−1 )。表示挖矿的初始难度,目标值越小,区块生成难度越大。 2^(256-32)−1 是比特币的初始难度,是前2016个块的难度。 这个难度被存储在比特币的区块头nBits字段中,当有恶意节点篡改这个策略时,挖矿产生的区块头的哈希值就会和诚实节点产生冲突,不会被接收,白白浪费了算力。 因为策略不同,也就是nBits不同,恶意节点产生的区块哈希无法被诚实节点验证。 调整出块时间比特币系统中区块的生产速度是根据之前产生区块速度调整的,之前出块速度大于10分钟,则认为需要降低难度,则需要提高第一个公式中target的值,而target则通过如下公式计算;target = current_target * ( actual time / excepted time )current_target是当前系统中的难度值,target是调整后的难度值,actual time是实际产生区块的时间,excepted time是期望出块时间(2016块*10分钟),actual time有上下限,actual time最多8周,最小二分之一周。挖矿算法比特币中nBits标识了挖矿的难度,也就是说这个区块头进行SHA-256哈希算法后得到的bytes转换成数字后要小于这个难度,而SHA-256计算后的结果有256位,如果直接存储需要32个字节比较占用空间,所以采用了一种压缩算法。压缩算法nBits有4个字节32位,将SHA-256计算得到的值经过如下算法压缩到32位;将数字转换为 256 进制。如果第一位数字大于 127(0x7f),则前面添加 0。压缩结果中的第一位存放该256进制数的位数。后面三个数存放该256进制数的前三位,如果不足三位,从后补零。举个例子,将十进制1000压缩;1. 1000转换256进制数,1000 = 3 * 256 + 232 = 3*256^(2-1) + 232*256^(1-1)
2. 3小于127,不需要补0,跳过
3. 从第一部看到1000转换成256位数有2位,压缩结果第一位应该存放2
4. 因为只有两位,所以最后一位补0,得到存放的值为 [2, 3, 232, 0]十进制,转换十六进制 [0x02, 0x03, 0xe8, 0x00] 合并存储到nbits为 0x0203e800难度计算在第一个公式中difficulty_1_target的值为 2^(256-32)-1,转换成256进制为;FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF第一位大于0x7f,前面补0,变为00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF其长度等于 28+1=29 (0x1d),且长度超过三位,无需补零,则压缩结果为:0x1d00FFFF,因为压缩存储容量只有才4个字节,前两字节已经被长度和添加的 00 所占用,只剩下2个字节来存储数字,这样后面的26个 FF 值被丢弃。T=0x00FFFF * 256^(0x1b-3) = 0x00000000FFFF0000000000000000000000000000000000000000000000000000比特币中的difficulty就是0x1d00FFFF,如果区块中的nBits为0x1d00FFFF则说明这个区块挖矿难度为最小挖矿难度1.实际上专业的矿池程序会保留被截断的FF:00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF我们算一下比特币101799号区块的挖矿难度,通过区块链浏览器可以看到101799号区块的nBits为0x1b0404cbD = 0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF / 0x00000000000404CB000000000000000000000000000000000000000000000000 = 16307.669773817162 (pdiFF)pdiFF也被称为矿池难度。算力为了找到符合条件的值在挖矿的时候需要不断的调整区块头中Nonce的值,但是又会有一个问题,在比特币中Nonce的值是32位的,如果挖矿难度太大,就算穷尽Nonce的所有可能还是不能算出符合条件的值。铸币交易在一个区块产生的时候,会有一个铸币交易(coinbase),也就是矿工为自己铸币,产生新的比特币。铸币交易没有UTXO输入,只有输出指向自己的比特币地址,当挖矿成功,这个区块被网络接收的时候,新产生的币就转移到这个矿工地址了。看一下铸币交易包含的字段; transaction hash:“交易哈希”字段32个字节全部填充0(因为其没有UTXO输入);ouput index:“交易输出索引”字段全部填充0xFF(十进制的255); coinbase data:coinbase数据长度最小2字节,最大100字节。除了开始的几个字节外,矿工可以任意使用coinbase的其他部分,随意填充任何数据。以创世块为例,中本聪在coinbase中填入了这样的数据“The Times 03/Jan/ 2009 -Chancellor on brink of second bailout for banks“; - coinbase data size:coinbase数据大小; sequence number:现在未使用,设置为0xffffffff可以看到铸币交易的coinbase data字段是我们可以控制的,当Nonce不能满足挖矿难度的时候,我们可以通过调整coinbase data字段,从而影响区块头的默克尔树根的值,提供更多的可能来满足挖矿难度的要求。算力单位通过上面的流程,进行一次可能的挖矿尝试被称为H。 1 H/s = 每秒可执行一次哈希运算。 1 KH/s = 每秒1,000哈希(一千次)。 1 MH/s = 每秒1,000,000次哈希(百万次)。 1 GH/s = 每秒1,000,000,000次哈希(十亿次)。 1 TH/s = 每秒1,000,000,000,000次哈希(万亿次)。 1 PH/s = 每秒1,000,000,000,000,000次哈希。 1 EH/s = 每秒1,000,000,000,000,000,000次哈希。挖矿收益矿机挖矿的时候就会出现很长的时间找不到符合条件的哈希值,如果找不到哈希值不能打包区块就没有收益,显然对矿工十分不友好,但是如果挖到就像中彩票一样获得非常丰厚的回报。矿池为了避免单个矿工挖矿收益的不稳定性,就出现了矿池,矿池集合了大量的矿工,平均挖矿的收益,避免了挖矿收益的不稳定性。 矿池组织大量的矿工挖矿面临很重要的一个问题就是如何把高难度计算哈希的任务拆解成相对简单的任务,发送给单个矿工,回顾之前挖矿难度的计算,可以简单的认为前面0的多少表明了挖矿的难易。 0越多,挖矿难度越高,为了降低挖矿难度我们就要增加挖矿哈希0的数量,举个例子假设挖矿目标值 0x000abc,只要满足这个值就可以打包区块获得挖矿收益;
降低挖矿难度为 0x001abc,发送给矿工,矿工只要计算区块头满足这个相对低一点的难度就可以得到一个分片(shared),但是单个矿工挖到这个简单难度的块是无法发布到整个网络中的,但是矿池可以把这个分片记录下来,作为以后给这个矿工奖励的凭证。
0x001abc是0x000abc的子集,只要子集足够多总有一个会满足目标值。
当有一个矿工挖出一个满足目标值之后就可以获得挖矿收益,而挖矿就可以根据矿工分片多少来获得收益。
矿工收益 = 挖矿收益 / 挖到的分片数量但是现在还有一个问题没有解决,单个矿工挖到目标值以后如果私吞收益,私自广播区块怎么办?矿池有集中托管式的,也有分布式的。 集中托管式矿池,矿工可以把挖矿的机器托管给矿池,由矿池统一操作维护,只需要支付一些电费管理费即可,这样就避免了私自广播。 分布式矿池,矿工将机器自行管理,通过矿池协议从网络连接矿池即可,这样就会出现私自广播的可能。回顾一下铸币交易coinbase,可以看到有output字段,UTXO模型中币的来源都是上一个交易的output,所以可以把铸币交易的output字段设置为矿池的地址,然后随机生成一些coinbase data的填充后生成区块头的默克尔树,最后发由矿工去尝试目标值。通过这样的方式,即使矿工找到满足条件的哈希值,铸币交易的地址也是矿池的地址,私自广播区块没有任何收益,如果调整铸币交易的地址,这样又回到了独立挖矿的场景。全网算力如果要获知全网算力,可以通过出块时间,挖矿难度大致反推出全网算力。区块确认当一个区块产生之后,它不是立即可信的,网络上的节点总是相信最长的区块链,当一条交易记录被打包进一个区块之后,就有了一个确认,而这个区块所在的链后面被再加入一个区块,就是第二个确认,如此下去,一个交易有了6个确认,我们就认为这个交易已经确定了,会被永远记录在区块链中。 为什么是6个确认呢?因为每一个确认就是一个挖矿过程,需要大量的工作量证明,因此,这6个区块被同一个矿工创建的可能性微乎其微(可以说是不可能),因此矿工伪造交易也基本不可能。由于比特币的区块平均产生时间是10分钟,所以一个交易要1小时左右才能保证成功(最快),不过也不是所有的系统都这样认为,有些网站在接受比特币支付时,认为4个确认就可以给客户发货了,区块确认越多则越难被逆转。区块广播在区块链中,为了尽快收到其他节点的信息,节点间并不是直接传递区块信息的。 节点向附近节点发送一个Inv消息,Inv消息中包含已经被发送者(sender)接收并验证过的“交易记录的哈希”、以及“区块哈希”。接收者(receiver)收到Inv消息后,如果他还尚未从其他节点收到过相同的信息,他会发送一个getdata消息给发送者,要求得到交易记录及区块哈希包含的具体信息。此时,区块和交易记录的信息才会进行整体传递。 其中Inv消息结构如下;type MsgInv struct {
InvList []*InvVect
}
type InvVect struct {
Type InvType // Type of data
Hash chainhash.Hash // Hash of the data
}欢迎关注我的博客(qyuan.top),不定期分享一些区块链底层技术文章,博客排版要比知乎好一点(ㄟ( ▔, ▔ )ㄏ)。编辑于 2020-05-12 11:18挖矿区块链(Blockchain)比特币 (Bitcoin)赞同 8311 条评论分享喜欢收藏申请转载文章被以下专栏收录清源的区块链
挖矿原理 - 廖雪峰的官方网站
挖矿原理 - 廖雪峰的官方网站
Index
廖雪峰的官方网站
Blog
Java教程
手写Spring
手写Tomcat
Makefile教程
Python教程
JavaScript教程
区块链教程
SQL教程
Git教程
文章
问答
More
Java教程
手写Spring
手写Tomcat
Makefile教程
Python教程
JavaScript教程
区块链教程
SQL教程
Git教程
文章
问答
Java教程
手写Spring
手写Tomcat
Makefile教程
Python教程
JavaScript教程
区块链教程
SQL教程
Git教程
文章
问答
Profile
Passkey
Sign Out
Sign In
English
简体中文
Index
区块链教程
比特币
区块链原理
P2P交易原理
私钥
公钥和地址
签名
挖矿原理
可编程支付原理
多重签名
UTXO模型
Segwit地址
HD钱包
钱包层级
助记词
地址监控
以太坊
账户
区块结构
交易
智能合约
编写合约
部署合约
调用合约
编写Dapp
常用合约
ERC20
Wrapped Ether
关注公众号不定期领红包:
加入知识星球社群:
关注微博获取实时动态:
挖矿原理
Last updated: ...
/
Reads: 3281295
Edit
在比特币的P2P网络中,有一类节点,它们时刻不停地进行计算,试图把新的交易打包成新的区块并附加到区块链上,这类节点就是矿工。因为每打包一个新的区块,打包该区块的矿工就可以获得一笔比特币作为奖励。所以,打包新区块就被称为挖矿。
比特币的挖矿原理就是一种工作量证明机制。工作量证明POW是英文Proof of Work的缩写。
在讨论POW之前,我们先思考一个问题:在一个新区块中,凭什么是小明得到50个币的奖励,而不是小红或者小军?
当小明成功地打包了一个区块后,除了用户的交易,小明会在第一笔交易记录里写上一笔“挖矿”奖励的交易,从而给自己的地址添加50个比特币。为什么比特币的P2P网络会承认小明打包的区块,并且认可小明得到的区块奖励呢?
因为比特币的挖矿使用了工作量证明机制,小明的区块被认可,是因为他在打包区块的时候,做了一定的工作,而P2P网络的其他节点可以验证小明的工作量。
工作量证明
什么是工作量证明?工作量证明是指,证明自己做了一定的工作量。例如,在驾校学习了50个小时。而其他人可以简单地验证该工作量。例如,出示驾照,表示自己确实在驾校学习了一段时间:
比特币的工作量证明需要归结为计算机计算,也就是数学问题。如何构造一个数学问题来实现工作量证明?我们来看一个简单的例子。
假设某个学校的一个班里,只有一个女生叫小红,其他都是男生。每个男生都想约小红看电影,但是,能实现愿望的只能有一个男生。
到底选哪个男生呢?本着公平原则,小红需要考察每个男生的诚意,考察的方法是,出一道数学题,比如说解方程,谁第一个解出这个方程,谁就有资格陪小红看电影:
因为解高次方程没有固定的公式,需要进行大量的计算,才能算出正确的结果,这个计算过程就需要一定的工作量。假设小明率先计算出了结果x=2.5,小红可以简单地验证这个结果是否正确:
可以看出,解方程很困难,但是,验证结果却比较简单。所以,一个有效的工作量证明在于:计算过程非常复杂,需要消耗一定的时间,但是,验证过程相对简单,几乎可以瞬间完成。
现在出现了另一个问题:如果其他人偷看了小明的答案并且抢答了怎么办?
要解决这个问题也很容易,小红可以按照男生的编号,给不同的男生发送不同的方程,方程的第一项的系数就是编号。这样,每个人要解的方程都是不一样的。小明解出的x=2.5对于小军来说是无效的,因为小军的编号是3,用小明的结果验证小军的方程是无法通过验证的。
事实上如果某个方程被验证通过了,小红可以直接从方程的第一项系数得知是谁解出的方程。所以,窃取别人的工作量证明的结果是没有用的。
通过工作量证明,可以有效地验证每个人确实都必须花费一定时间做了计算。
在比特币网络中,矿工的挖矿也是一种工作量证明,但是,不能用解多项式方程来实现,因为解多项式方程对人来说很难计算,对计算机来说非常容易,可以在1秒钟以内完成。
要让计算机实现工作量证明,必须找到一种工作量算法,让计算机无法在短时间内算出来。这种算法就是哈希算法。
通过改变区块头部的一个nonce字段的值,计算机可以计算出不同的区块哈希值:
直到计算出某个特定的哈希值的时候,计算结束。这个哈希和其他的哈希相比,它的特点是前面有好几个0:
hash256(block data, nonce=0) = 291656f37cdcf493c4bb7b926e46fee5c14f9b76aff28f9d00f5cca0e54f376f
hash256(block data, nonce=1) = f7b2c15c4de7f482edee9e8db7287a6c5def1c99354108ef33947f34d891ea8d
hash256(block data, nonce=2) = b6eebc5faa4c44d9f5232631f39ddf4211443d819208da110229b644d2a99e12
hash256(block data, nonce=3) = 00aeaaf01166a93a2217fe01021395b066dd3a81daffcd16626c308c644c5246
hash256(block data, nonce=4) = 26d33671119c9180594a91a2f1f0eb08bdd0b595e3724050acb68703dc99f9b5
hash256(block data, nonce=5) = 4e8a3dcab619a7ce5c68e8f4abdc49f98de1a71e58f0ce9a0d95e024cce7c81a
hash256(block data, nonce=6) = 185f634d50b17eba93b260a911ba6dbe9427b72f74f8248774930c0d8588c193
hash256(block data, nonce=7) = 09b19f3d32e3e5771bddc5f0e1ee3c1bac1ba4a85e7b2cc30833a120e41272ed
...
hash256(block data, nonce=124709132) = 00000000fba7277ef31c8ecd1f3fef071cf993485fe5eab08e4f7647f47be95c
比特币挖矿的工作量证明原理就是,不断尝试计算区块的哈希,直到计算出一个特定的哈希值,它比难度值要小。
比特币使用的SHA-256算法可以看作对随机输入产生随机输出,例如,我们对字符串Hello再加上一个数字计算两次SHA-256,根据数字的不同,得到的哈希是完全无规律的256位随机数:
hash256("Hello?") = ????????????????????????????????????????????????????????????????
大约计算16次,我们可以在得到的哈希中找到首位是0的哈希值,因为首位是0出现的概率是1/16:
hash256("Hello1") = ffb7a43d629d363026b3309586233ab7ffc1054c4f56f43a92f0054870e7ddc9
hash256("Hello2") = e085bf19353eb3bd1021661a17cee97181b0b369d8e16c10ffb7b01287a77173
hash256("Hello3") = c5061965d37b8ed989529bf42eaf8a90c28fa00c3853c7eec586aa8b3922d404
hash256("Hello4") = 42c3104987afc18677179a4a1a984dbfc77e183b414bc6efb00c43b41b213537
hash256("Hello5") = 652dcd7b75d499bcdc61d0c4eda96012e3830557de01426da5b01e214b95cd7a
hash256("Hello6") = 4cc0fbe28abb820085f390d66880ece06297d74d13a6ddbbab3b664582a7a582
hash256("Hello7") = c3eef05b531b56e79ca38e5f46e6c04f21b0078212a1d8c3500aa38366d9786d
hash256("Hello8") = cf17d3f38036206cfce464cdcb44d9ccea3f005b7059cff1322c0dd8bf398830
hash256("Hello9") = 1f22981824c821d4e83246e71f207d0e49ad57755889874d43def42af693a077
hash256("Hello10") = 8a1e475d67cfbcea4bcf72d1eee65f15680515f65294c68b203725a9113fa6bf
hash256("Hello11") = 769987b3833f082e31476db0f645f60635fa774d2b92bf0bab00e0a539a2dede
hash256("Hello12") = c2acd1bb160b1d1e66d769a403e596b174ffab9a39aa7c44d1e670feaa67ab2d
hash256("Hello13") = dab8b9746f1c0bcf5750e0d878fc17940db446638a477070cf8dca8c3643618a
hash256("Hello14") = 51a575773fccbb5278929c08e788c1ce87e5f44ab356b8760776fd816357f6ff
hash256("Hello15") = 0442e1c38b810f5d3c022fc2820b1d7999149460b83dc680abdebc9c7bd65cae
如果我们要找出前两位是0的哈希值,理论上需要计算256次,因为00出现的概率是162=256,实际计算44次:
hash256("Hello44") = 00e477f95283a544ffac7a8efc7decb887f5c073e0f3b43b3797b5dafabb49b5
如果我们要找出前3位是0的哈希值,理论上需要计算163=4096次,实际计算6591次:
hash256("Hello6591") = 0008a883dacb7094d6da1a6cefc6e7cbc13635d024ac15152c4eadba7af8d11c
如果我们要找出前4位是0的哈希值,理论上需要计算164=6万5千多次,实际计算6万7千多次:
hash256("Hello67859") = 00002e4af0b80d706ae749d22247d91d9b1c2e91547d888e5e7a91bcc0982b87
如果我们要找出前5位是0的哈希值,理论上需要计算165=104万次,实际计算158万次:
hash256("Hello1580969") = 00000ca640d95329f965bde016b866e75a3e29e1971cf55ffd1344cdb457930e
如果我们要找出前6位是0的哈希值,理论上需要计算166=1677万次,实际计算1558万次:
hash256("Hello15583041") = 0000009becc5cf8c9e6ba81b1968575a1d15a93112d3bd67f4546f6172ef7e76
对于给定难度的SHA-256:假设我们用难度1表示必须算出首位1个0,难度2表示必须算出首位两个0,难度N表示必须算出首位N个0,那么,每增加一个难度,计算量将增加16倍。
对于比特币挖矿来说,就是先给定一个难度值,然后不断变换nonce,计算Block Hash,直到找到一个比给定难度值低的Block Hash,就算成功挖矿。
我们用简化的方法来说明难度,例如,必须计算出连续17个0开头的哈希值,矿工先确定Prev Hash,Merkle Hash,Timestamp,bits,然后,不断变化nonce来计算哈希,直到找出连续17个0开头的哈希值。我们可以大致推算一下,17个十六进制的0相当于计算了1617次,大约需要计算2.9万亿亿次。
17个0 = 1617 = 295147905179352825856 = 2.9万亿亿次
实际的难度是根据bits由一个公式计算出来,比特币协议要求计算出的区块的哈希值比难度值要小,这个区块才算有效:
Difficulty = 402937298
= 0x18 0455d2
= 0x0455d2 * 28 * (0x18 - 3)
= 106299667504289830835845558415962632664710558339861315584
= 0x00000000000000000455d2000000000000000000000000000000000000000000
注意,难度值的数值越小,说明哈希值前面的0越多,计算的难度越大。
比特币网络的难度是不断变化的,它的难度保证大约每10分钟产生一个区块,而难度值在每2015个区块调整一次:如果区块平均生成时间小于10分钟,说明全网算力增加,难度也会增加,如果区块平均生成时间大于10分钟,说明全网算力减少,难度也会减少。因此,难度随着全网算力的增减会动态调整。
比特币设计时本来打算每2016个区块调整一次难度,也就是两周一次,但是由于第一版代码的一个bug,实际调整周期是2015个区块。
根据比特币每个区块的难度值和产出时间,就可以推算出整个比特币网络的全网算力。
比特币网络的全网算力一直在迅速增加。目前,全网算力已经超过了100EH/每秒,也就是大约每秒钟计算1万亿亿次哈希:
所以比特币的工作量证明被通俗地称之为挖矿。在同一时间,所有矿工都在努力计算下一个区块的哈希。而挖矿难度取决于全网总算力的百分比。举个例子,假设小明拥有全网总算力的百分之一,那么他挖到下一个区块的可能性就是1%,或者说,每挖出100个区块,大约有1个就是小明挖的。
由于目前全网算力超过了100EH/s,而单机CPU算力不过几M,GPU算力也不过1G,所以,单机挖矿的成功率几乎等于0。比特币挖矿已经从早期的CPU、GPU发展到专用的ASIC芯片构建的矿池挖矿。
当某个矿工成功找到特定哈希的新区块后,他会立刻向全网广播该区块。其他矿工在收到新区块后,会对新区块进行验证,如果有效,就把它添加到区块链的尾部。同时说明,在本轮工作量证明的竞争中,这个矿工胜出,而其他矿工都失败了。失败的矿工会抛弃自己当前正在计算还没有算完的区块,转而开始计算下一个区块,进行下一轮工作量证明的竞争。
为什么区块可以安全广播?因为Merkle Hash锁定了该区块的所有交易,而该区块的第一个coinbase交易输出地址是该矿工地址。每个矿工在挖矿时产生的区块数据都是不同的,所以无法窃取别人的工作量。
比特币总量被限制为约2100万个比特币,初始挖矿奖励为每个区块50个比特币,以后每4年减半。
共识算法
如果两个矿工在同一时间各自找到了有效区块,注意,这两个区块是不同的,因为coinbase交易不同,所以Merkle Hash不同,区块哈希也不同。但它们只要符合难度值,就都是有效的。这个时候,网络上的其他矿工应该接收哪个区块并添加到区块链的末尾呢?答案是,都有可能。
通常,矿工接收先收到的有效区块,由于P2P网络广播的顺序是不确定的,不同的矿工先收到的区块是有可能的不同的。这个时候,我们说区块发生了分叉:
在分叉的情况下,有的矿工在绿色的分叉上继续挖矿,有的矿工在蓝色的分叉上继续挖矿:
但是最终,总有一个分叉首先挖到后续区块,这个时候,由于比特币网络采用最长分叉的共识算法,绿色分叉胜出,蓝色分叉被废弃,整个网络上的所有矿工又会继续在最长的链上继续挖矿。
由于区块链虽然最终会保持数据一致,但是,一个交易可能被打包到一个后续被孤立的区块中。所以,要确认一个交易被永久记录到区块链中,需要对交易进行确认。如果后续的区块被追加到区块链上,实际上就会对原有的交易进行确认,因为链越长,修改的难度越大。一般来说,经过6个区块确认的交易几乎是不可能被修改的。
小结
比特币挖矿是一种带经济激励的工作量证明机制;
工作量证明保证了修改区块链需要极高的成本,从而使得区块链的不可篡改特性得到保护;
比特币的网络安全实际上就是依靠强大的算力保障的。
Comments
Make a comment
Sign in to
make a comment
Index
区块链教程
比特币
区块链原理
P2P交易原理
私钥
公钥和地址
签名
挖矿原理
可编程支付原理
多重签名
UTXO模型
Segwit地址
HD钱包
钱包层级
助记词
地址监控
以太坊
账户
区块结构
交易
智能合约
编写合约
部署合约
调用合约
编写Dapp
常用合约
ERC20
Wrapped Ether
廖雪峰的官方网站
©Copyright 2019-2021
Powered by iTranswarp
Feedback
License
Buy/Sell Bitcoin, Ether and Altcoins | Cryptocurrency Exchange | Binance
Buy/Sell Bitcoin, Ether and Altcoins | Cryptocurrency Exchange | Binance
Error 403 Forbidden - This request is blocked.
For security reasons you can't connect to the server for this app or website at this time.
It maybe that you have too many requests or the illegal request payload is identified as an attack.
Please try again later.
NiceHash - Leading Cryptocurrency Platform for Mining and Trading
NiceHash - Leading Cryptocurrency Platform for Mining and Trading
We're sorry but client doesn't work properly without JavaScript enabled. Please enable it to continue.
NiceHash - Leading Cryptocurrency Platform for Mining and Trading
NiceHash - Leading Cryptocurrency Platform for Mining and Trading
We're sorry but client doesn't work properly without JavaScript enabled. Please enable it to continue.
什么是挖矿?挖矿为什么要高算力? - 知乎
什么是挖矿?挖矿为什么要高算力? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册挖矿挖矿机btc挖矿什么是挖矿?挖矿为什么要高算力?关注者19被浏览31,088关注问题写回答邀请回答好问题添加评论分享15 个回答默认排序区块链达摩院 关注挖矿简单来说就是让一台矿机执行一套计算题目的过程。算出答案了,就会有数字货币奖励。而在求解这个数学难题的过程中呢,计算能力越强,算出答案的速度越快,就能得到更多的数字货币奖励。也就是所说的要求高算力。低算力效率慢呀,算力太低完成不了高强度的运算。所以,算力越高,挖到比特币的概率就越大。发布于 2021-04-08 17:35赞同添加评论分享收藏喜欢收起宠物森林提供宠物驯养、宠物用品等知识 关注挖矿是确认一段时间内进行的交易,将其记录到新块中,然后将新块添加到链中的过程。用外行的话来说,这是记账的过程。矿工是执行上述操作的人员或团体。矿工是簿记员,分类账是区块链。基于不同的共识机制,采矿的方式是不同的,但同样的是,成功的记账矿工得到丰厚的报酬 (例如,比特币矿工获得比特币奖励)。因此,记账有一定的要求和付款。例如,在POW共识机制下的采矿需要计算和功率,每个人都购买性能更好的采矿机器,目的是为了争夺记账资格。什么是算力?顾名思义,计算能力就是计算能力,这是一个与采矿相关的概念,例如在POW共识机制中,为了争夺记账权,矿工拥有的矿工需要持续进行随机操作 (哈希冲突)获得符合条件的正确解决方案。每个矿工每秒可以进行的哈希冲突数代表该矿工的 “计算能力”。该单元被记录为哈希/s。计算能力代表着矿工竞争记账的能力,计算能力的比例代表着矿工抓住记账权的概率,只有成功的记账才能获得区块链网络的奖励!计算能力,即挖掘某种加密货币的强度。根据这一概念,计算能力是对在特定网络消耗下生成新块的单元的总计算能力的衡量。最初的计算能力代表是PoW,即所谓的工作负载证明机制PoW (工作证明)。比特币、以太币、比特币现金、Litecoin和Dash等主流货币也普遍采用了PoW共识机制。除了PoW共识机制,还有由比特股份创建的股权证明 (PoS) 共识和授权股权证明 (PoS) 共识机制。挖掘是通过贡献计算能力来维持网络的安全稳定运行,从而获得奖励硬币,但是一些CND使用贡献存储和带宽来获得挖掘机器的计算能力,目前,以这种方式进行采矿的代表是迅雷玩客云、风暴盒、IPFS采矿机。这样,计算能力越高,收益越大。然而,随着计算能力的增加,功耗也会增加,采矿机硬件的销售也会增加。价格也会更高。高能耗也意味着电费支出成为巨大的成本。因此,高计算能力并不能使收入最大化,所以在选择采矿机器时,你不能只看采矿机器计算能力的大小,每单位计算功率的功耗越低,净利润收入就越高。发布于 2021-04-09 16:36赞同 2添加评论分享收藏喜欢