im钱包官网下载地址|比特币挖矿在算什么
详解比特币挖矿— 应该是史上最通俗易懂的版本 - 知乎
详解比特币挖矿— 应该是史上最通俗易懂的版本 - 知乎切换模式写文章登录/注册详解比特币挖矿— 应该是史上最通俗易懂的版本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 条评论分享喜欢收藏申请
比特币挖矿是什么意思 - 知乎
比特币挖矿是什么意思 - 知乎首发于比特币切换模式写文章登录/注册比特币挖矿是什么意思燃烧的灵魂燃烧中的灵魂只为了刹那间的释放据http://BTC.com数据,“BTC距离难度调整还有3天,预计下次挖矿难度将上调0.39%至18.74 T"那么比特币挖矿是什么意思,下面华仔给大家解说一下:比特币的根本就是一个互相验证的公开记账系统,而挖矿的本质则是在争夺记账权。从工作内容来看,所谓的“挖矿”是将过去一段时间内发生的、尚未经过网络公认的交易信息收集、检验、确认,最后打包加密成为一个无法被篡改的交易记录信息块,从而成为这个比特币网络上公认已经完成的交易记录,并永久保存。 据了解,想要“挖矿”获得比特币,就一定要借助用计算机来解决一定难度的数学问题,并且在全体用户的监督下“记账”,这样才可以获得比特币。但在比特币的产生机制里,挖矿奖励是逐渐减少的。比特币网络出现的4年里,将会出现10,500,000个比特币。但这个数量每隔4年就自动减半,到最后总共产生的比特币数量为接近21,000,000个。就像挖金子一样,越挖越少。业内人士之前以为比特币非常好“挖”,只要一台普通电脑CPU就能完成,只需下载软件就可以自动“解题”。但是随着币价上涨,挖矿的人越来越多,无疑添加了挖矿的难度。由于挖矿需要海量矿机集体行动,而海量矿机的的算力已经占了全世界的75%以上,也就是说全世界有75%的比特币都是由中国制造。耗电量是惊人的,而中国边远地区有廉价的水电站,这促使全球的算力大部分集中在中国。目前中国发布于 2020-12-25 19:19比特币 (Bitcoin)区块链(Blockchain)币圈赞同 4添加评论分享喜欢收藏申请转载文章被以下专栏收录
互联网上说的挖矿到底是什么意思? - 知乎
互联网上说的挖矿到底是什么意思? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册互联网NVIDIA(英伟达)挖矿btc挖矿互联网上说的挖矿到底是什么意思?关注者5被浏览109,628关注问题写回答邀请回答好问题添加评论分享3 个回答默认排序区块链海森堡 关注一、“挖矿”究竟是什么所谓“挖矿”就是,将一段时间内比特币系统中发生的交易进行确认,并记录在区块链上,形成新的区块,挖矿的人叫作矿工。简单来说,挖矿就是记账的过程,矿工是记账员,区块链就是版本。比特币系统的记账权利是去中心化的,即每个矿工都有记账的权利,只要成功抢到记账权,矿工就能获得系统新生成的比特币奖励。从这个意义上来说,挖矿就是生产比特币的过程。中本聪最初设计比特币时规定没生产210000个区块,比特币奖励减半一次,直至比特币不能再被细分,因为比特币的总量是有限的,比特币也被称为数字黄金。比特币生产也俗称挖矿。二、挖矿必备工具比特币通过挖矿生产,每10分钟全网矿工一起计算一道算术题,只要先算出答案,就相当于挖到了这个区块,该矿工就能获得系统新生的比特币奖励。在比特币刚诞生的时候,通过计算机的CPU便可以挖矿,随着挖矿的矿工越来越多,目前用CPU已经不能挖出比特币了,大家开始用矿机挖矿。挖矿必备工具:1.专业矿机;2.比特币地址;3.挖矿软件。目前,比特币网络算力太大,个人购置少量矿机,是很难挖出区块的,很多矿工只能加入矿池一起挖;矿场只负责计算,矿池负责信息打包。挖到比特币后,根据矿场的算力占比分配收益,此保证更加稳定的投入产出。三、矿工是怎么挖矿的区块链诞生后,矿工不再只是煤矿工人的简称,而是一种全新的含义。从事虚拟货币挖矿的人和传统的“矿工”不同,区块链领域的矿工具有更多的科技色彩。矿工的主要工作是交易确认和数据打包。矿工需要购买一台专用的计算机设备,下载挖矿软件。挖矿不需要矿工亲自动手,完全由电脑在执行特定的运算。对于矿工来说,只要保证矿机电力供应和网络连接就可以。以比特币为例,比特币矿机就是通过运行大量计算,争夺记账权从而获得新生比特币奖励的专业设备。矿机的构成包括:挖矿芯片。散热片和风扇。只执行单一的计算机程序、耗电量更大,挖矿实际是矿工之间算力的比拼,拥有较多算力的矿工,挖到比特币的概率更大。随着全网算力上涨,用传统的设备挖到比特币的难度越来越大,人们开发出专门用来挖矿的芯片。芯片是矿机最核心的零件,运作过程中会产生大量的热。为了散热降温,比特币矿机一般配有散热片和风扇。用户在电脑下载比特币挖矿软件,用该软件分配好每台矿机的任务就可开始挖矿。每种币的算法不同,所需要的矿机也各不相同。四、中本聪与“挖矿”对于区块链来说,挖矿是必要的吗?为了解答这个问题,我们先来说下究竟什么是“挖矿”?以比特币为例,没产生一比交易,并不算完成,只有将交易数据写入数据库,才算成立,对方才能真正收到钱。首先,所有的交易数据都会传送到矿工,矿工负责把这些交易写入区块链。计算哈希的过程叫挖矿,计算哈希的机器就叫矿机,操作矿机的人就叫矿工。根据比特币协议,一个区块的大小最大是1MB,而一笔交易大概是500字节,因此一个区块最多可以包括2000多笔交易。矿工负责把这2000多笔交易打包在一起,组成一个区块,然后计算这个区块的哈希(Hash)。中本聪故意让添加新区块变得困难,他的设计是:平均每10分钟,全网才能生成一个新区块,一小时只能生成六个。人为设置大量的计算及难度系数,需要大量算力才能得到当前区块的有效哈希,进而将新区块添加到区块链。为了让自己第一个添加新区块进入区块链,矿工之间充满了竞争,谁先算出来了,就能享受这个区块的全部收益;而其他矿工只能将那一页抄写一份,贴在自己账本的最后面,然后又开始新的记账过程。周而复始,生生不息,账本一页一页地增加,账本越来越厚。由此看来,挖矿其实是一种安全机制,利用密码学哈希函数和非对称加密,确保区块链网络的挖矿节点在广播区块前投入大量的计算,提高作假和作恶的成本,保证已有数据不可能被篡改,确保全网达成共识。笔者认为,中本聪设计这种机制的出发点是为了避免系统受到攻击。如果攻击者想用搞乱账本的方式来进行攻击,就需要足够的计算能力。当收益不足以抵消成本时,攻击者就没有了攻击系统的动力。所以对区块链来说,建立挖矿机制还是有必要的,但未来一定会产生更合理高效的解决方案。摘自张浩《一本书读懂区块链》推荐阅读《区块链启示录:中本聪文集》是中本聪的论文,帖子,谈论问题的汇总,全景展现了比特币问世及发展的来龙去脉。发布于 2022-05-31 16:21赞同 2添加评论分享收藏喜欢收起SuperPoints每一个有价值的行为都将得到合理的回报! 关注区块链,挖代币发布于 2022-05-12 17:36赞同添加评论分享收藏喜欢收起
区块链的挖矿原理:什么是挖矿? - 知乎
区块链的挖矿原理:什么是挖矿? - 知乎切换模式写文章登录/注册区块链的挖矿原理:什么是挖矿?海米酋长开心最重要‼️一、“挖矿”究竟是什么所谓“挖矿”就是,将一段时间内比特币系统中发生的交易进行确认,并记录在区块链上,形成新的区块,挖矿的人叫作矿工。简单来说,挖矿就是记账的过程,矿工是记账员,区块链就是版本。比特币系统的记账权利是去中心化的,即每个矿工都有记账的权利,只要成功抢到记账权,矿工就能获得系统新生成的比特币奖励。从这个意义上来说,挖矿就是生产比特币的过程。中本聪最初设计比特币时规定没生产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 条评论分享喜欢收藏申请
挖矿原理 - 廖雪峰的官方网站
挖矿原理 - 廖雪峰的官方网站
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: 3281006
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.
比特币(BTC)挖矿详细图文教程-太平洋电脑网
比特币(BTC)挖矿详细图文教程-太平洋电脑网
首页 > 软件 > 区块链 > 百科 > 比特币 > 正文
正在阅读:比特币(BTC)挖矿详细图文教程比特币(BTC)挖矿详细图文教程
2018-07-11 17:31
出处:其他
作者:佚名
责任编辑:liukaiping
好吧,废话不多说了,其实比特币 - Bitcoin 出现时间已经很久了,不过对于新手来说,还是需要讲解一下的。关于比特币。FORECE 在好几年前就听说过了,不过当时就觉得这玩意不靠谱。不过看到CNBETA这几年来一直不时的有比特币的新闻出现。FORECE 决定没事玩玩先吧。比特币的简介比特币(英语:Bitcoin,简写:BTC,货币符号:?),是一种用开源的P2P技术的软件而产生的电子货币。 虚拟货币 “比特币”的概念最初由中本聪(Satoshi Nakamoto,可能化名)在2009年提出。现在比特币也指根据中本聪的思路设计发布的开源软件以及建构其上的整个P2P网络。在全球范围内,比特币可以通过多个线上的交易所和服务商进行兑换交易,也可以在线下找到兑换点,兑换为现钞或金币,但未有国家对此作出法律上的任何保障。比特币的价值那么现在的比特币的价值如何呢?我们可以通过 https://mtgox.com/ 来查看当前汇率,刚刚 Forece 查看了一下,一个 BTC 就可以兑换到 $117 美元。比特币的获取渠道那么我们如何获取比特币呢?最开始,比特币的获取方式就是通过CPU来进行“挖矿”。也就是说像挖金子一样,通过CPU计算,通过贡献我们的CPU计算量,我们就可以获得比特币,当你的CPU挖出了一个区块,你就获得了一定量的比特币。不过现在这种单干的方式越来越难了,因为比特币的量是固定的,知道比特币的用户越来越多,所以造成了比特币的矿越来越难挖。于是“矿池”这个东东就诞生了,网上的大牛们建立了一个网站,集合大家的计算能力一起挖矿,虽然你并没有挖到比特币,但是通过贡献计算量,你也可以获得少量的比特币。目前来说比特币的挖矿方式已经从 CPU 转为了 GPU,因为 GPU 的设计问题,GPU 更适用于比特币的计算方式。所以一般来说 GPU 的速度往往要比 CPU 的速度大十倍甚至几十倍。准备工作1. 显卡显卡最好是 AMD ATI 的显卡,N卡不成,速度没有A卡的效果好,当然等级越高越好,另外可以从这个网站看一下自己挖矿的速度。https://en.bitcoin.it/wiki/Mining_hardware_comparison2. 比特币钱包3. 挖矿软件比特币挖矿教程1. 首先安装一个比特币钱包,获得一个比特币的地址去 Bitcoin 官方网站,下载比特币钱包 Bitcoin-Qt ,适用于多个平台。当然你也可以下载到你安卓手机上,在 Google Play 中搜索 Bitcoin Wallet 就可以简单安装了。在各种比特币钱包中,找到你自己的钱包地址,如下图所示:比特币挖矿详细图文教程除了比特币的官方钱包外,我们还有其他各种钱包可供选择。各有优势。Bitcoin-Qt - 基于 C++/Qt 的 Bitcoin 比特币客户端图形化界面,支持 Linux/MacOSX/Windows,全功能。现在作为官方客户端使用,不过有个缺点,就是需要同步数据,超级慢啊,网上搜索了一下,大概需要7G的数据。所以就难怪网络上一堆人在那里叫:比特币钱包同步怎么这么慢啊?实在是没法快起来,数据包太大了。如果实在受不了,只想要一个钱包地址的话,那么不妨试试手机客户端或者以下其他几种客户端吧。 下载地址: http://bitcoin.org/en/downloadMultiBit - 一个安全、轻量级、国际化的 Bitcoin 比特币钱包,支持 Windows、MacOS 和 Linux。MultiBit比特币客户端主要面向非技术用户,目标是为了让普通用户更快更方便的使用比特币。主要特征有“秒同步”(同步速度飞快),客户端可以创建和管理多个钱包,另外每个钱包都可以创建无数个收款地址。唯一的一点不好,选项里面有一个0.001的交易手续费,且不能取消。这是不是意味着,每次付款都要付出至少0.001的手续费呢?小编使用的就是这个客户端,强烈推荐。网站: https://multibit.org/Armory - 是一个开放源代码的钱包客户端。它从一开始就设计用来给大量投资比特币的用户提供最高级别的安全性,同时仍然保持了高度的易用性和便利性。其易于使用和大量先进的功能,使它成为最流行的比特币客户端之一。Armory是基于 Python 的客户端,当前处在 Alpha 测试阶段,Beta 版本由多人资助。网站: https://bitcoinarmory.com/Electrum - 是一个轻量级的、易于使用的比特币客户端,它可以保护你的比特币,避免遭受到因为备份错误或者电脑故障而造成的损失。你的钱包可以从一个秘密的短语中恢复,你可以把这段密语写在纸上或者记在心里。它并不下载比特币的块链数据,所以当你启动客户端时,你会发现不需要等待(众所周知官方客户端启动超慢)。网址: http://electrum.org/2. 找一个矿池,注册一个账号我们就可以开始挖矿啦。如果你不知道都有哪些矿池的话,不妨先下载一个挖矿软件,这里 Forece 推荐的挖矿软件叫做 GUIMiner 然后打开 GUIMiner,通过查看服务器,我们就可以知道目前都有哪些流行的矿池了。比特币挖矿详细图文教程3. 注册完毕后,在网站中选择挖矿方式,然后我们就可以用 GUIMiner 开始挖矿了,在 GUIMiner 中填入刚刚注册的矿池账号信息,然后点击开始挖矿即可。至于挖矿方式,下方会有介绍。几种挖矿方式介绍1. Slush方式-Slush矿池基于积分制,较老的shares将比新的shares拥有更低的权重,以减少一轮中切换矿池的投机分子。2. Pay-Per-Share方式-该方式为立即为每一个share支付报酬。该支出来源于矿池现有的比特币资金,因此可以立即取现,而不用等待区块生成完毕或者确认。这样可以避免矿池运营者幕后操纵。这中方法减少了矿工的风险,但将风险转移给了矿池的运营者。运营者可以收取手续费来弥补这些风险可能造成的损失。3. Luke-Jr方式-该方式借用了其他方式的长处,如Slush方式一样,矿工需要提供工作证明来获得shares,如puddinpop方式一样,当区块生成时马上进行支付。但是不象之前的方式,针对一个区块的shares,会被再次利用于生成下一个 区块 。为了区分一下参与矿工的交易传输费用,只有当矿工的余额超过1BTC时才进行支付。如果没有达到1BTC,那么将在下一个区块生成时进行累计。如果矿工在一周内没有提供一个share,那么矿池会将剩下的余额进行支付,不管余额是多少。4. Triplemining方式-该方式是将一些中等大小矿池的计算力合并起来,然后将获得奖励的1%按照各个矿池计算力的比例分发给矿池运营者。5. P2Pool方式-P2Pool的挖矿节点工作在类似比特币区块链的一种shares链上。由于没有中心,所以也不会受到DoS攻击。和其他现有的矿池技术都不一样-每个节点工作的区块,都包括支付给前期shares的所有者以及该节点自己的比特币。99%的奖励(寻修网 http://www.seekxiu.com/ (注意:50BTC+交易费用)会平均分给矿工,另外0.5%会奖励给生成区块的人。6. Puddinpop方式-一种使用“元哈希”技术的方式,使用特定的puddinpop挖矿软件,现在没有矿池用这种方式。目前使用较多的方式为Pay-Per-Share,如 deepbit.net和btcguild.com 等均支持PPS,矿工使用起来也比较方便。当然除了 GUIMiner ,我们还有其他选择,比如 CGMiner 等等,不过 GUIMiner 是大家最常用的软件,对于新手来说比较方便。像CGMiner 就是纯代码版本的,需要手动如数一些参数才可以开始挖矿,对于新手来说麻烦一些。另外使用 GUIMiner 的时候,请先安装 AMD 的 SDK 软件,和更新一下驱动程序,目前来说 AMD-APP-SDK-v2.6 和 AMD 12.6 的显卡驱动比较稳定。请大家去官网查询下载。其他赚取比特币的方式现在很多网站还提供很多其他赚取比特币的方式,比如看广告,看视频等等,只要完成他们的任务,你就可以获得小部分比特币,这里 Forece 会稍作整理然后放出。每天只能免费获取一次的:http://dailybitcoins.org/http://boklund.nu/bunnyrun/http://bitcoiner.net/http://netlookup.se/free-bitcoins/http://cointicket.org/index.php以下几个站可以每天看广告获取BTC:http://www.bitvisitor.com/http://www.bitcoin4you.net/earnBit.phphttp://earnfreebitcoins.com/visit关于比特币提现很多人一拿到比特币就想提现,这里 Forece 推荐几个网站提现美元、外币Mt.GoxBTC-E提现人民币:BtcChina比特海FXBTC关于挖矿的速率计算大家可以来到这个网站,通过 GuiMiner 中提供的速率,然后来查询你通过挂机能获得的金额。http://www.alloscomp.com/bitcoin/calculator
相关文章
玩得就是心跳 BTC比特币价格暴跌了20%
警方破获比特币挖矿窃电大案:日均偷电4万度!
关注我们
聚超值
抽油烟机
洗衣机
蓝牙耳机
摄像机
智能眼镜
无线主动降噪耳机
人体工学无线鼠标
迷你游戏笔记本
热门排行
十大ERP系统品牌排行榜,哪些软件更适合您的企业?
0
OpenAI发布Sora火爆全球,微美全息(WIMI.US)布局AI视频生成迎来新的“GPT时刻”
0
几个堪称神器的小众网站 用过就离不开
0
网络犯罪的阴暗创新:暗网上的人工智能试验揭露
0
别再盲选ERP,看看这份ERP品牌排行榜单作参考
0
热门软件
PC软件
安卓应用
iOS应用
手游电脑版
游戏专区
资讯|曝《上古卷轴6》2025-26年发售 背景在落锤省
资讯|塞班经典国产手游《七夜》高清重制版实机演示
资讯|《守望先锋2》加入计分板功能 玩家:不能划水了
IT百科
热门专题
ETC免费办?当心猫腻
当心这种微信诈骗!
细思极恐!这些微信清粉软件可能暗含大阴谋
库克又对你的iPhone下手了,比让手机变卡更狠
除了反向绕行80公里,网约车还有哪些坑爹操作?
让你看得怀疑人生的支付宝账单,是怎么算出来的?
PPT制作软件
抢票软件大全
牛市炒股利器合集
看美剧软件大全
看日漫软件排行榜
安卓模拟器电脑版下载合集
汽车资讯
正在加载中...
成都车展
宏光MINI EV
普拉多
欧拉黑猫
途达
起亚嘉华
玛奇朵
皇冠陆放
奔驰C级
哈弗神兽
坦克600
奥迪Q5
思域
卡罗拉双擎E+
轩逸
太平洋汽车网app
新能源车
最新资讯离线随时看
聊天吐槽赢奖品
浅谈:什么是挖矿?矿卡是什么? - 哔哩哔哩
么是挖矿?矿卡是什么? - 哔哩哔哩 浅谈:什么是挖矿?矿卡是什么?吃饭团的佳乐同学关注专栏/浅谈:什么是挖矿?矿卡是什么?浅谈:什么是挖矿?矿卡是什么?
2019年05月01日 22:09--浏览 ·
--喜欢 ·
--评论
吃饭团的佳乐同学粉丝:19.0万文章:5
关注这是一场资本主义的赛跑什么是挖矿?用来挖矿的电脑挖矿:即比特币挖矿,是一种利用电脑硬件计算出比特币的位置并获取的过程。(本文章举例比特币说明)比特币,指的是网络的虚拟货币中的一种,可以交易,并有一定的现实价值,是一种可以挖掘的虚拟货币,靠显卡(相较于CPU而言,显卡更适合用来计算虚拟货币)计算特定的一些数学任务,计算完成后可获得能够交易的虚拟货币,很多人也因此靠显卡计算出虚拟货币,并交易虚拟货币以此赚钱,这种行为就叫做“挖矿”。虚拟货币交易概念图当然,涉及到计算出任务以得到虚拟货币的时候,就不得不提到一个专业名词“算力”了,它代表着一个电子硬件在获取虚拟货币的过程中所拥有的“工作效率”,“算力”越高它获得“比特币”的时间就越快,选择更高“算力”的显卡,能够更快的获取到价格高昂的“比特币”。原来“矿”指的就是“比特币”这种虚拟货币,而“挖矿”指的就是获取这个虚拟货币的过程什么是矿卡?矿卡示意图矿卡:即用来获取比特币的显卡。相信不少小伙伴早已经看到很多朋友们说“矿卡”不能买,上手易翻车!这究竟是为什么呢?其实,矿卡作为资本家获取虚拟货币的工具,肯定不会拥有太过奢华的保养,经常24小时不间断,全年无休的满载运行着以获得“比特币”,这就导致“矿卡”使用寿命急剧缩减,长期高负荷运行导致电子元器件容易出现故障,通常都会有大大小小的毛病或者问题,一般来说常见的问题有:莫名其妙蓝屏、正常使用过程中卡顿、突然暴毙等,作为一张二手显卡,还是超负荷重度使用的显卡,其危险性和翻车概率相信不用我多说了吧。矿卡翻车图PS:其实大部分矿卡还是能够正常使用的,出现问题的毕竟不占大多数,主要运气不太差,买个矿卡拿回来将就的用用还是没问题的。原来用来挖矿的显卡就叫做矿卡,不建议购买是因为常年的重度使用矿卡是怎么来的?数量不少的矿卡因为“比特币”是虚拟货币,价格相较于正规货币而言,波动较大。比特币的总量有限,挖一个少一个,再加上近几年的炒作,价格水涨船高,也正因为如此,很多人一买几十张显卡用来挖矿,在“比特币”价格的鼎盛时期除开电费等成本小工作的一个月纯利润可以达到惊人6位数,当然也随着价格的起伏过程中,有不少囤积大量显卡用来挖矿的商人害怕市场饱和导致比特币价格不稳定,为了回血大量抛售矿卡,这些显卡流入二手市场,也正因为如此,矿卡才成为了一个电脑玩家们头疼不已的问题。矿卡价格低,数量多,你说怎么让人不心动呢?原来矿卡之所以这么大量的流入市场,除开矿场对显卡的需求量大以外,还因为虚拟货币的不稳定性,商人为了“回血”低价售卖矿卡。简单的科普后,相信大家对挖矿和矿卡有了一定的了解,其实如今市面上有了越来越多的专业矿机后,使用电脑显卡拿来挖矿的比例也明显下降了,也许在不久的将来,一台电脑装载10余个显卡挖矿的事情会消失在历史的长河中,到那时我们也不必担心二手显卡市场中的不稳定因素了。而且因为矿卡的使用和“算力”挂钩,一些特别高端的显卡和功耗高算力低的老卡的出现频率可以忽略不计了,毕竟一天的电费都比挖出来的虚拟货币值钱,那还挖什么矿呢?本文为我原创本文禁止转载或摘编
科普
显卡
挖矿
正经
比特币
矿卡
分享到:
投诉或建议评论-----
比特币挖矿到底在计算什么? - 知乎
比特币挖矿到底在计算什么? - 知乎切换模式写文章登录/注册比特币挖矿到底在计算什么?太衍真君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添加评论分享喜欢收藏申请
比特币挖矿消耗的计算能力用来干什么了?创造了什么价值?还是只是用于维系比特币体系使用? - 知乎
比特币挖矿消耗的计算能力用来干什么了?创造了什么价值?还是只是用于维系比特币体系使用? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册btc挖矿比特币挖矿消耗的计算能力用来干什么了?创造了什么价值?还是只是用于维系比特币体系使用?投入那么多电力,计算硬件设备去挖矿,这些运算能力用来计算什么内容了?这些内容怎么带来价值的?还是说这些运算能力全部都只是用于维系比特币这个系统?能否把…显示全部 关注者21被浏览32,504关注问题写回答邀请回答好问题 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赞同 174 条评论分享收藏喜欢收起子楠小程序“职业照相机” 关注按你说电力这问题,你重新创造一个私有链,一个人也能维护,但你不敢信任他啊,一个人全维护了,他也能随便改。那么几十个人的小团体,你依然没法信任他。但是如果是数十万,上百万人,他们大部分互相不认识,然后一起维护一个链,那么各自利益不同,串通好了的概率也不大,所以你不太担心这个系统被里面的人修改了。越多人一起记账,就越安全。这就是所谓的去中心化的好处了。那这冲突点就来了。记账有必要这么多人么?当然没必要。但是人越多越安全。人越多也就越耗能。至于区块奖励,只是为了一开始没人去记账时,作为一个奖励手段,吸引有人去记账罢了。至于这算力拿去云计算啥的,那太麻烦了,没法保证对每个人(计算单元)来说机会均等,搞那么麻烦,出错的概率就大,简单的系统不容易出问题。至于为啥人会越来越多,那就和楼上说的“内卷”道理几乎一样了。那么问题来了,为什么会有这么多人,宁愿选择在矿里卷,也不在工厂里,在互联网公司卷呢?为啥非得搞个内卷的环境,不给大家自由创新的土壤呢?难道在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 条评论分享喜欢收藏申请
比特币挖矿在计算什么? 是怎么计算的? - 知乎
比特币挖矿在计算什么? 是怎么计算的? - 知乎切换模式写文章登录/注册比特币挖矿在计算什么? 是怎么计算的?微算力首先,”比特币“挖矿是怎挖的 比特币是一中虚拟货币,基于区块链技术。如果我们简单地把区块链的区块比作一个个的账本,那么”挖矿“就是“打包”过去十分钟整个区块链网络的交易,把这些交易写入新的区块,那么就“打包”完成,那就是完成了“挖矿”。完成了挖矿之后就获得了系统分发给你的比特币。这就是比特币“挖矿”比较简化的说法,当中的原理和运行还是相当复杂的。 如何分配“打包权” 比特币的价格超过2w元一个,每一次获得“打包权”,完成工作就会获得12.5个比特币(会随时间递减),获利可谓相当丰厚。 天下熙熙皆为利来天下攘攘皆为利往,只要有利润的地方就有人。网络上矿工众多,那么如何确定应该分配给哪个矿工去做这事呢? 比特币的创始人中本聪采用这种方法:采用一种叫“工作证明(Proof Of Work,简称POW)机制,即工作量的证明。 这种方法通常来说只能从结果证明,因为监测工作过程通常是繁琐与低效的。这是用来确认你做过一定量的工作,但是监测工作的整个过程极为低效,而通过对工作的结果进行认证来证明完成了相应的工作量,则是一种非常高效的方式。 我们可以比喻成,要证明您会开车技术好,企业不可能给您几天时间,跟着您在市区上走。但是,你可以提供驾驶证和之前在公交车公司当公交车司机的工作证明, 来说明您得能力。你要获得这个能力需要付出大量的时间和精力,但是企业验证却非常简单。比特币这种加密系统所使用工作量证明机制的证明是哈希现金,需要算出对应的哈希函数。哈希现金是一种工作量证明机制,它是亚当·贝克在1997年发明的,主要用于抵抗邮件的拒绝服务攻击及垃圾邮件网关滥用。在比特币之前,哈希现金被用于垃圾邮件的过滤,也被微软用于hotmail等产品中。 对于比特币这种加密系统所使用的哈希函数,它需要具备以下的性质: 1. 免碰撞,即不会出现输入x≠y,但是H(x)=H(y) 2. 隐匿性,也就是说,对于一个给定的输出结果H(x),想要逆推出输入x,在计算上是不可能的。 3. 不存在比穷举更好的方法,可以使哈希结果H(x)落在特定的范围。 比特币在区块链的生成过程中使用了POW机制,一个符合要求的区块哈希函数由N个前导零构成,零的个数取决于网络的难度值。 要得到合理的区块哈希码需要经过大量尝试计算。当某个节点提供出一个合理的区块哈希值,那就是说明该节点确实经过了大量的尝试计算,那么系统就把”打包权“分配给该节点(矿工)。目前国内比特币挖矿赚钱最好的工具就是微算力,预期收益可达400%,百度、360等各大应用市场都可以下载,微信公众号“MicroHash”(微算力)挖矿更方便,十几元就可以挖矿,真正的低投资高收益。 当然这不能得出计算次数的绝对值,因为寻找合理hash是一个概率事件,所以当节点(矿工)拥有占全网n%的算力时,该节点基本上就是有n/100的概率找到区块哈希。那就是意思上说比拼算力。 当能不能记住前面几个0,然后可以使用呢?不能的,因为难度值不一样, 0的数量就不一样。而且要证明的数是一个哈希码,而且需要验证的工作量证明非常庞大,基本上无法造假。 只存在一个方法:穷举! 那么意味着,你不仅要算出你的哈希值,还需要对比对不对,如果不对的话继续算。 所以需要大量的显卡进行大量的并行运算,获取哈希值。让我们来看看,矿场是一个怎么样的存在: 这些矿场都是用很贵的显卡来算,他们的算里是人工的N倍。如果单靠人力,算十年都没有它们工作一小时的工作量大。发布于 2018-09-17 17:30比特币 (Bitcoin)挖矿机挖矿赞同添加评论分享喜欢收藏申请
什么是比特币挖矿? | 了解关于BTC的一切 | 比特币入门
特币挖矿? | 了解关于BTC的一切 | 比特币入门开始什么是比特币挖矿?比特币的新铸造过程在某些方面类似于从地球中提取贵金属的过程。因此,这个过程被称为“比特币挖矿”。正如比特币白皮书中所述: 不断增加固定数量的新币类似于金矿工人耗费资源将黄金加入流通。在我们的案例中,耗费的是CPU时间和电力。 比特币挖矿的简化概述如下:人们通过应用计算能力参与一种称为“工作量证明”(PoW)的过程,以竞争获得比特币奖励。之所以这样命名,是因为只有那些证明自己已经投入了足够资源(工作)的参与者(矿工)才有机会赢得奖励。大约每10分钟,奖励会分发给一个胜出的“矿工”。奖励有两部分 -> (1) “区块奖励”,即新铸造的比特币。在写作本文时,区块奖励设定为6.25比特币(但从2024年5月初开始,奖励将减半,之后每四年再减半,依此类推)。(2) 当前区块内所有交易相关的费用。希望进行交易的终端用户必须为拟议的交易附加一笔费用,以激励矿工将其包含在下一个区块中。目录为什么需要比特币挖矿?什么是工作证明,为什么它是必要的?比特币挖矿是如何工作的?什么是比特币的哈希算法?比特币挖矿中的难度调整是什么,为什么需要它?比特币挖矿合法吗?比特币挖矿对环境有害吗?比特币挖矿盈利吗?比特币挖矿如何影响比特币的价格?仅需 30 美元就能起步购买从比特币、比特币现金、以太坊等中选择相关文章从此处开始 →比特币快速入 门指南了解比特币及其重要性的简明介绍。查看 →比特币快速入门指南了解比特币及其重要性的简明介绍。我如何创建比特币钱包?学习如何快速轻松地创建比特币钱包。了解不同的钱包类型及其各自的优缺点。查看 →我如何创建比特币钱包?学习如何快速轻松地创建比特币钱包。了解不同的钱包类型及其各自的优缺点。比特币术语查看 →比特币术语阅读我们的常见问题解答快速找到常见问题的答案。查看 →阅读我们的常见问题解答快速找到常见问题的答案。我怎样购买比特币?了解如何在几分钟内获得您的第一比特币。查看 →我怎样购买比特币?了解如何在几分钟内获得您的第一比特币。如何出售比特币?了解如何安全地将比特币兑换成本地货币。查看 →如何出售比特币?了解如何安全地将比特币兑换成本地货币。如何保障我的加密资产安全?确保您的加密资产安全,请遵循这些简单的建议。查看 →如何保障我的加密资产安全?确保您的加密资产安全,请遵循这些简单的建议。你收件箱中的 Bitcoin.com每周的重要新闻提要,加上为经济自由提供支持的教育资源和产品及服务更新注册使用 Bitcoin.com 钱包,开始安全投资已生成超过个钱包安全买卖、交易和投资比特币及其他加密货币所需要的一切立即创建您自己的钱包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.
挖矿原理 - 廖雪峰的官方网站
挖矿原理 - 廖雪峰的官方网站
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: 3281007
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
比特币挖矿一定要用计算机吗?用纸笔来计算可行吗? - 知乎
比特币挖矿一定要用计算机吗?用纸笔来计算可行吗? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册数学比特币 (Bitcoin)区块链(Blockchain)比特币挖矿一定要用计算机吗?用纸笔来计算可行吗?比特币挖矿在解一条方程吗?解方程一定要用到计算机吗能不能用纸笔算一个解出来? 相关问题: 如何笔算解码二维码?显示全部 关注者2,777被浏览1,901,578关注问题写回答邀请回答好问题 15375 条评论分享221 个回答默认排序Y2TT这位更是重量级 关注Mining Bitcoin With Pencil and Paper楼主,这里有教程,我很看好你。解出来以后比特币的开采就有你掌控了。挣钱了记得给我冲50元话费。结论写在这吧:作者做了个比喻,用手算出哈希值的难度比在全世界的沙子里面找到特定的一粒沙子还要难,可能性还要低。教程每天算出来手算的速度是0.67hash(不吃不喝不睡),楼主经过训练以后速度应该有所提升,和现在主流挖矿机比起来挖矿机的速度是楼主的一百万的三次方倍(quintillion)。但是楼主没问难不难,只问可不可以,所以答案是可以的。Ken ShirriffI decided to see how practical it would be to mine Bitcoin with pencil and paper. It turns out that the SHA-256 algorithm used for mining is pretty simple and can in fact be done by hand. Not surprisingly, the process is extremely slow compared to hardware mining and is entirely impractical. But performing the algorithm manually is a good way to understand exactly how it works.我决定看看用铅笔和纸来演算挖比特币的矿是不是一件可行的事情。结果我发现挖矿所用的SHA-256算法其实很简单并且也可以用手算。当然了,与硬件挖矿相比这个过程是漫长的,但这不失为一中理解比特币挖矿算法的一种好方法。The mining processBitcoin mining is a key part of the security of the Bitcoin system. The idea is that Bitcoin miners group a bunch of Bitcoin transactions into a block, then repeatedly perform a cryptographic operation called hashing zillions of times until someone finds a special extremely rare hash value. At this point, the block has been mined and becomes part of the Bitcoin block chain. The hashing task itself doesn't accomplish anything useful in itself, but because finding a successful block is so difficult, it ensures that no individual has the resources to take over the Bitcoin system. For more details on mining, see my Bitcoin mining article.比特币挖矿是比特币系统安全的保证。中心思想就是比特币矿工们汇聚到一个矿区并且重复进行加密的哈希运算(不计其数的,zillion应该是比trillion还大的多得多的计量单位。)直到找到产生合适的哈希的字符串。到此为止,这个区块就已经被挖到了并成为了比特币区块链上的一环。哈希运算本省并没有任何意义。但是挖矿的难度由于是巨大的,这就保证了没有任何一个人可以有足够多的资源占据整个比特币系统。A cryptographic hash function takes a block of input data and creates a smaller, unpredictable output. The hash function is designed so there's no "short cut" to get the desired output—you just have to keep hashing blocks until you find one by brute force that works. For Bitcoin, the hash function is a function called SHA-256. To provide additional security, Bitcoin applies the SHA-256 function twice, a process known as double-SHA-256.加密的哈希计算确保了解出这个运算没有任何捷径,只能够不断觉得进行运算用暴力的方法直至成功。In Bitcoin, a successful hash is one that starts with enough zeros. [1] Just as it is rare to find a phone number or license plate ending in multiple zeros, it is rare to find a hash starting with multiple zeros. But Bitcoin is exponentially harder. Currently, a successful hash must start with approximately 17 zeros, so only one out of 1.4x1020 hashes will be successful. In other words, finding a successful hash is harder than finding a particular grain of sand out of all the grains of sand on Earth.The following diagram shows a block in the Bitcoin blockchain along with its hash. The yellow bytes are hashed to generate the block hash. In this case, the resulting hash starts with enough zeros so mining was successful. However, the hash will almost always be unsuccessful. In that case, the miner changes the nonce value or other block contents and tries again.Structure of a Bitcoin blockThe SHA-256 hash algorithm used by BitcoinThe SHA-256 hash algorithm takes input blocks of 512 bits (i.e. 64 bytes), combines the data cryptographically, and generates a 256-bit (32 byte) output. The SHA-256 algorithm consists of a relatively simple round repeated 64 times. The diagram below shows one round, which takes eight 4-byte inputs—A through H—then performs a few operations, and generates new values of A through H.SHA-256 算法把输入为64bytes的区块整合成加密数据并产生了32byte的输出。SHA-256 算法包含了相对而言简单的64轮操作。下面的图展示了把8个4byte的输入从A到H,展开了一些运算以后产生了从A到H新的值。One round of the SHA-256 algorithm showing the 8 input blocks A-H, the processing steps, and the new blocks. Diagram created by kockmeyer, CC BY-SA 3.0.The blue boxes mix up the values in non-linear ways that are hard to analyze cryptographically. Since the algorithm uses several different functions, discovering an attack is harder. (If you could figure out a mathematical shortcut to generate successful hashes, you could take over Bitcoin mining.)右侧深蓝色的格子里面把输入的数值用非线性的方法进行整合,这样就很难进行分析。因为这种算法用到了数种方法,找到一条捷径就更难了。如果谁找出来了,他就能掌管比特币的开采。The Ma majority box looks at the bits of A, B, and C. For each position, if the majority of the bits are 0, it outputs 0. Otherwise it outputs 1. That is, for each position in A, B, and C, look at the number of 1 bits. If it is zero or one, output 0. If it is two or three, output 1.Ma这个运算主要关注与A,B和C的值。如果他们主要的值是0.那输出就是0.如果主要不是0,那输出就是1.比如说,A,B,C上都是0或者1,那么输出0,如果是2或3那么就输出1.The Σ0 box rotates the bits of A to form three rotated versions, and then sums them together modulo 2. In other words, if the number of 1 bits is odd, the sum is 1; otherwise, it is 0. The three values in the sum are A rotated right by 2 bits, 13 bits, and 22 bits.Σ0转换A的值并且相加,找出除以2的余数。如果1bits是偶数那么总和为偶,不然就为0.三个值加起来的总和是A向右移2bits,13bits和22bits。The Ch "choose" box chooses output bits based on the value of input E. If a bit of E is 1, the output bit is the corresponding bit of F. If a bit of E is 0, the output bit is the corresponding bit of G. In this way, the bits of F and G are shuffled together based on the value of E.Ch的值由E的输入来决定。如果E的bit为1,那么输出为F的bit。如果E为0,那么输出为G的bit。这样F 和 G 一定程度上有E决定。The next box Σ1 rotates and sums the bits of E, similar to Σ0 except the shifts are 6, 11, and 25 bits.Σ1与Σ0类似,只是向右移6,11,25bits.The red boxes perform 32-bit addition, generating new values for A and E. The input Wt is based on the input data, slightly processed. (This is where the input block gets fed into the algorithm.) The input Kt is a constant defined for each round.[2]红格子产生了新的A和E. 输入的Wt是由输入的数据决定的,经过稍微的处理。输入的Kt 是一个常数由每一轮运算定义。As can be seen from the diagram above, only A and E are changed in a round. The other values pass through unchanged, with the old A value becoming the new B value, the old B value becoming the new C value and so forth. Although each round of SHA-256 doesn't change the data much, after 64 rounds the input data will be completely scrambled. [3]每一轮只有A和E产生了变化。其他的值都没有变。旧的A变成了新的B.旧的B变成了新的C.尽管每一轮都没有太大的变化,但是六十四轮以后输入的值就会有翻天覆地的变化。Manual miningThe video below shows how the SHA-256 hashing steps described above can be performed with pencil and paper. I perform the first round of hashing to mine a block. Completing this round took me 16 minutes, 45 seconds.https://www.youtube.com/watch?time_continue=1&v=y3dqhixzGVo 这里有视频地址,需要翻墙才能看。To explain what's on the paper: I've written each block A through H in hex on a separate row and put the binary value below. The major peration appears below C, and the shifts and Σ0 appear above row A. Likewise, the choose operation appears below G, and the shifts and Σ1 above E. In the lower right, a bunch of terms are added together, corresponding to the first three red sum boxes. In the upper right, this sum is used to generate the new A value, and in the middle right, this sum is used to generate the new E value. These steps all correspond to the diagram and discussion above.解释一下我在纸上做了什么,我把从A到H分别在一行上面十六进制转换为二进制。主要的运算写在C下面。bits转换和Σ0展示在A行上面。同样的,choose运算在G下面,bits转换和Σ1在E的上方。在右下角,相对应于三个红格子的数值被加了上去。在右上方,总和被用于产生一个新的A值。在右中侧,总和被用于产生新的E值。I also manually performed another hash round, the last round to finish hashing the Bitcoin block. In the image below, the hash result is highlighted in yellow. The zeroes in this hash show that it is a successful hash. Note that the zeroes are at the end of the hash. The reason is that Bitcoin inconveniently reverses all the bytes generated by SHA-256. [4]What this means for mining hardwareEach step of SHA-256 is very easy to implement in digital logic—simple Boolean operations and 32-bit addition. (If you've studied electronics, you can probably visualize the circuits already.) For this reaon, custom ASIC chips can implement the SHA-256 algorithm very efficiently in hardware, putting hundreds of rounds on a chip in parallel. The image below shows a mining chip that runs at 2-3 billion hashes/second; Zeptobars has more photos.In contrast, Litecoin, Dogecoin, and similar altcoins use the scrypt hash algorithm, which is intentionally designed to be difficult to implement in hardware. It stores 1024 different hash values into memory, and then combines them in unpredictable ways to get the final result. As a result, much more circuitry and memory is required for scrypt than for SHA-256 hashes. You can see the impact by looking at mining hardware, which is thousands of times slower for scrypt (Litecoin, etc) than for SHA-256 (Bitcoin).ConclusionThe SHA-256 algorithm is surprisingly simple, easy enough to do by hand. (The elliptic curve algorithm for signing Bitcoin transactions would be very painful to do by hand since it has lots of multiplication of 32-byte integers.) Doing one round of SHA-256 by hand took me 16 minutes, 45 seconds. At this rate, hashing a full Bitcoin block (128 rounds) [3] would take 1.49 days, for a hash rate of 0.67 hashes per day (although I would probably get faster with practice). In comparison, current Bitcoin mining hardware does several terahashes per second, about a quintillion times faster than my manual hashing. Needless to say, manual Bitcoin mining is not at all practical.[5]SHA-256运算出奇的简单,简单到可以拿手算。做一轮要花我16分钟45秒,以这个速度得到一个完整的比特币区块(128轮)需要1.49天(不吃不喝一直做)每天的速度是0.67 hashes.目前挖矿机的效率是我的一百万的三次方倍数。所以说手算挖矿是不实际的。A Reddit reader asked about my energy consumption. There's not much physical exertion, so assuming a resting metabolic rate of 1500kcal/day, manual hashing works out to almost 10 megajoules/hash. A typical energy consumption for mining hardware is 1000 megahashes/joule. So I'm less energy efficient by a factor of 10^16, or 10 quadrillion. The next question is the energy cost. A cheap source of food energy is donuts at $0.23 for 200 kcalories. Electricity here is $0.15/kilowatt-hour, which is cheaper by a factor of 6.7 - closer than I expected. Thus my energy cost per hash is about 67 quadrillion times that of mining hardware. It's clear I'm not going to make my fortune off manual mining, and I haven't even included the cost of all the paper and pencils I'll need.有一个reddit网友问我关于能量消耗的事。其实并没有消耗我多少的体能。假设一个人一天啥也不干他的机体消耗是1500卡路里。手动挖矿找到一个哈希值大约消耗10兆焦耳。硬件挖矿通常消耗是100兆焦耳。所以我的能耗比机器要低的多得多的多。关于补充能量的事,一个甜甜圈能提供200卡路里需要23美分(1块5).电的价格是一千瓦时15美分(九毛八)。所以我的耗能是机器的百万的四次方倍,很明显靠笔算挖矿挣不了钱。而且我还没有考虑笔和纸的消耗。编辑于 2017-09-16 20:06赞同 6191196 条评论分享收藏喜欢收起酱紫君数学等 2 个话题下的优秀答主 关注我觉得高赞答案那个老外还少算了,他就算了下SHA256,事实上还有其他麻烦...不想看原理可以直接跳到最后一张图开始.比特币挖矿,说来也容易,其实就是找到如下不等式的一个解而已:\text{hash}(x)<\text{target}其中hash就是常说的哈希函数,target则决定了难度.哈希函数定义域为整数,值域则是某个范围的正整数.可以看出其实解有无数个,但是发现其中一个并不容易.你可能要说了,我能不能分析这个函数来求它的部分反函数?有些哈希函数可以,比如CRC校验函数,但是一类用作加密的哈希函数不可以.哈希加密函数,基本特点之一就是随机,以比特币使用的SHA256为例,画出前100个数字的哈希值:可以看出这个函数图像几乎就是 0\sim 2^{256} \approx 1.15792\times 10^{77} 中的一个随机数.也就是说随便说一个数,说中答案的概率只有 8.63616^{-78},宇宙原子总数才 10^{80} 左右...Target用来调节难度.Target越小,找到一个解的难度自然就越高.而唯一的求解方法就是穷举.SHA256是SHA-2的一种,SHA-2的第t个加密循环如图所示:图中的深蓝色方块是事先定义好的非线性函数.\begin{aligned} &\operatorname {Ch} (E,F,G)=(E\land F)\oplus (\neg E\land G)\\ &\operatorname {Ma} (A,B,C)=(A\land B)\oplus (A\land C)\oplus (B\land C)\\ &\Sigma _{0}(A)=(A\!\ggg \!2)\oplus (A\!\ggg \!13)\oplus (A\!\ggg \!22)\\ &\Sigma _{1}(E)=(E\!\ggg \!6)\oplus (E\!\ggg \!11)\oplus (E\!\ggg \!25)\\ \end{aligned}先把输入从16进制翻译成2进制,有256位哦.然后切片输入这个运算器.\operatorname {Ch} 关注E,F,G.如果E为1,那么输出为F。如果E为0,那么输出为G.\operatorname {Ma} 关注A,B,C.相互进行ADN然后相加取模二余数.\Sigma _{0}(A) ,取A分别右移动2Bits,13Bits和22Bits,等价于数学上的除以$2^2$ , $2^13$ , $2^22$,然后相加取模二余数.\Sigma _{1}(E) 与 \Sigma _{0}(E) 类似,只是右移6,11,25 Bits.遇到红框模 2^{32} ,也就是抹去前面192位.ABCDEFGH一开始分别是八个初始值,$K_t$是第t个密钥,$W_t$是本区块产生第t个word.原消息被切成固定长度的区块,对每一个区块,产生n个word,通过重复运作循环n次对ABCDEFGH这八个工作区块循环加密.最后一次循环所产生的八段字符串合起来即是此区块对应到的散列字符串.比特币的方程(不等式)可以写成\text{SHA256}(\text{SHA256}(C+x)) < \text{TARGET},0 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. 比特币的工作原理 - 比特币 Bitcoin.org 是一个社区支持的社区,我们十分感谢任何捐助。这些捐助会用于改进网站。 捐助 Bitcoin.org 需要你的帮助! × 捐助Bitcoin.org 使用下方二维码或地址 3E8ociqZa9mZUSwGdSmAEMAoAxBK3FNDcd $5.00 (... BTC) $25.00 (... BTC) $50.00 (... BTC) 介绍 个人 商家 开发者 入门指南 工作原理 White paper 资源 资源 兑换 社区 词汇表 活动 比特币核心 创新 参与 支持比特币 购买比特币 开发 常见问题 简体中文 Bahasa Indonesia Català Dansk Deutsch English Español Français Italiano Magyar Nederlands Polski Português Brasil Română Slovenščina Srpski Svenska Türkçe Ελληνικά български Русский Українська Հայերեն العربية فارسی עברית हिन्दी 한국어 ខ្មែរ 日本語 简体中文 繁體中文 Bahasa Indonesia Català Dansk Deutsch English Español Français Italiano Magyar Nederlands Polski Português Brasil Română Slovenščina Srpski Svenska Türkçe Ελληνικά български Русский Українська Հայերեն العربية فارسی עברית हिन्दी 한국어 ខ្មែរ 日本語 简体中文 繁體中文 Language: zh_CN 比特币的工作原理 这是个经常引起混淆的问题,下面是个简明扼要的解释! 新用户所需了解的基本知识 作为新用户,你可以开始使用比特币,而不需要理解其中的技术细节。一旦你在电脑或手机上安装一个比特币钱包,它会生成你的第一个比特币地址,并且在你需要的任何时候都可以生成更多的地址。你可以将你的地址告诉你的朋友们,他们便能够通过这个地址向你支付比特币,反之亦然。事实上,这跟电子邮件的运作方式是非常相似的,除了一个比特币地址应该只被使用一次。 余额 - 区块链 比特币区块链是整个比特币网络所依赖的公共共享总帐。所有确认的交易均包含在区块链中。这样比特币钱包可以计算出可用余额,并核实新的交易中消费方花费的确实是自己的比特币。密码学确保了区块链的完整性和时间顺序。 交易 - 私钥 一笔交易是指包含在区块链里的比特币钱包之间的价值转移。 比特币钱包保存着一份称作私钥或种子的保密数据用来为交易签名,即提供数学证据证明这些交易来自钱包的拥有者。这个 签名也确保交易发生后不会被任何人修改。所有的交易在用户之间广播,通常在接下来的10-20分钟内通过一个称作 挖矿的处理过程开始被比特币网络所确认。 处理 - 挖矿 挖矿是个将待确认的交易数据包含到区块链中,从而完成对这些交易进行确认的分布式共识系统。通过挖矿,可以强制性保证块链中的数据按时间顺序存储,保持比特币网络的中立性,且允许比特币网络上不同的计算机对系统状态达成一致。交易要获得确认,必须要被打包到一个符合非常严格的密码学规则的区块中,并通过比特币网络进行验证。这些规则可以防止对已有块的修改,因为一旦有改动,之后所有的块都将失效。挖矿的难度和中彩票相当,没人可以轻易地、连续地将新块加入到块链中。因此,没有集体和个人可以控制块链中包含什么样的内容或者替换掉块链中的部分内容以达到撤销他们交易的目的。 深入探究 这只是一份比特币的概要。如果你需要更多的细节,你可以阅读描述了比特币设计的最初的论文,开发者文档,或者查看比特币百科。 支持Bitcoin.org: 捐助 3E8ociqZa9mZUSwGdSmAEMAoAxBK3FNDcd 介绍: 个人 商家 开发者 入门指南 工作原理 注意事项 White paper 资源: 资源 兑换 社区 词汇表 活动 比特币核心 参与: 支持比特币 开发 其他: 法律 Privacy Policy 新闻媒体 关于bitcoin.org Blog © Bitcoin Project 2009-2024 基于MIT协议授权发布 Network Status 简体中文 Bahasa Indonesia Català Dansk Deutsch English Español Français Italiano Magyar Nederlands Polski Português Brasil Română Slovenščina Srpski Svenska Türkçe Ελληνικά български Русский Українська Հայերեն العربية فارسی עברית हिन्दी 한국어 ខ្មែរ 日本語 简体中文 繁體中文 Bahasa Indonesia Català Dansk Deutsch English Español Français Italiano Magyar Nederlands Polski Português Brasil Română Slovenščina Srpski Svenska Türkçe Ελληνικά български Русский Українська Հայերեն العربية فارسی עברית हिन्दी 한국어 ខ្មែរ 日本語 简体中文 繁體中文 zh_CN比特币的工作原理 - 比特币