tokenpocket钱包下载|链克挖矿技巧

作者: tokenpocket钱包下载
2024-03-11 01:15:13

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.

详解比特币挖矿— 应该是史上最通俗易懂的版本 - 知乎

详解比特币挖矿— 应该是史上最通俗易懂的版本 - 知乎切换模式写文章登录/注册详解比特币挖矿— 应该是史上最通俗易懂的版本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挖矿挖矿​赞同 39​​4 条评论​分享​喜欢​收藏​申请

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.

干货:资深矿工教你如何挖矿 - 知乎

干货:资深矿工教你如何挖矿 - 知乎首发于区块链应用技术切换模式写文章登录/注册干货:资深矿工教你如何挖矿头等仓专业服务价值投资者新闻内容:本文来源于Rolf,由头等仓 Mavis进行翻译自从我开始撰写此博客以来,已经完成了一些关于挖矿的帖子和视频,并收到了很多提问!以下是对FAQ的一些介绍和回答——这些FAQ没有深入研究所有细节,为新进或有想法的矿工提供一个很好的概述。为什么要挖矿?如果理解加密货币的基础知识,拥有一点技术技能,且能够获得相对便宜的电力(<0.10美元/千瓦时),那么挖矿是一种获取收益的好方式 ,每天都可以攒一点。自2015年底到现在,我的经验是,购买的现有挖矿设备在挖矿约10个月内可以收回成本。在更小的半导体技术实现之前,可以一直使用这种挖矿设备。用什么挖矿设备?这取决于加密货币使用的哈希算法。任何新的哈希的一般过程是,它可以首先由CPU(像Intel这样的处理器)解决,然后是GPU(图形卡),然后是ASIC(专用集成电路)。CPU可以做任何事情,GPU的功能有限,而ASIC通常只用于一种类型的哈希算法。每种算法通常都有一个主要的加密货币来启动它,然后其他许多使用该算法的加密货币再来启动它。通常最好从挖取大型的代币开始。之后,随着获得的经验增加,可以挖取小型代币,并将其换成大型代币。SHA-256 – Bitcoin——BTCScrypt – Litecoin——LTCX11 – Dash——DASHCryptonight – Monero——XMREthash – Ethereum——ETHEquihash – Zcash——ZEC最佳的入门方式是什么?购买一个ASIC矿机和电源,就可以开始挖矿了。不要进行太多研究,因为我们无法做出完美的决定,就这么开始吧。如果收益不错,那就多买些矿机,继续挖。如果收益不好,则停止。这是我的第一次挖矿的照片。这是一个Antminer S-7:如打算购买多个矿机,最好直接从制造商那里购买。如果只想购买一台机器,请从亚马逊购买。如果直接从工厂购买,需支付的费用会更多,但可以使用信用卡付款;如果从Prime卖家购买,可以在30天内全额退款。ASIC矿机没有配备电源,需要另外购买。以下是亚马逊上不同ASIC矿工和电源的链接。请不要只看黄金铺铺位的商品,记得货比三家。只在有库存的商家处购买——不要买预售商品!Bitcoin——Bitmain Antminer S9 13.5 THLitecoin——Bitmain Antminer L3+ 504 MHDash——Bitmain Antminer D3 19.3 GHS9和D3的电源供应——Bitmain APW-3++ with 10 connectors一至二个L3++的电源供应—— Bitmain APW-3++ with 18 connectors电源在208伏或更高电压下会运行得更好,就像电动干衣机的插座一样。可能需要电工的帮助。Antminer S9很棒!D3也是!L3 ++可能在隔壁房间运行比较好。从GPU挖矿开始是否会更好?使用GPU矿机有一些很好的理由。初始的投资较少,且更灵活。如果已经拥有带有显卡的计算机,可以开始对山寨币进行GPU挖矿。另一种入门方法是构建GPU矿机。从一个GPU开始,并在获得收益时添加更多GPU。以下是购买和搭建GPU矿机的完整指南。挖矿设备是什么样的?我开始是在地下室挖矿,然后租了一个小仓库,然后是一个更大的仓库。现在我有大约450个矿机。以下是我在挖矿方面能做的三件事:1.撰写关于挖矿及运营的博文2.制作有关挖矿的视频,并将其发布到Crypto Mining YouTube频道上3.当我有时间时,会回复文章和视频下的评论如何计算不同矿机的盈利能力?查看矿机的规格,然后将其插入加密货币挖矿计算器(如Whattomine和Coinwarz)的字段中。这些网站已经为每个加密货币的算力和价格提供了很好的价值,可以执行计算,并根据目前的收益大小对它们进行排名。有一些事情需要考虑。首先,是否会在挖矿后立挖将矿奖励转换为比特币,再兑换成美元等法定货币?如果是这样,那么Whattomine计算器很适合。如不是,可能需要考虑其他因素。加密货币应该放在哪?我喜欢使用加密货币交易所,但我放在交易所的钱不多。对于任何我打算保存超过几周的加密货币,我都会把它们放在钱包里。对于任何加密货币,我都会在计算机上使用钱包应用程序,一个有价值的代币都有一个适用于Linux或Windows的钱包。将挖取的代币放在钱包、备份钱包文件和私钥,这样就不会面临资金丢失的风险。从长远来看,我尽可能多地将加密货币保存在硬件钱包上。最值得购买的是Ledger Blue和Trezor Model T。我喜欢直接在制造商的网站上进行购买。不要使用纸钱包。它们容易丢失,很难正确使用。如果没有保管好加密货币私钥,则无法保管好资金。让资金远离交易所,除非你正在积极地进行交易。如何建立和运营更大规模的挖矿设备?在向大型设备过渡时,需要考虑几个不同的事情。为了保持连续性,我将挖矿作业分为三种不同的规模:小型——拥有1到50个矿机,在办公室进行操作的人——这是属于爱好。中等——50到500个矿机。运行它们需要全职工作或厉害的兼职人员。这通常属于家族企业或私营企业。大型——大于500个矿机。这属于完整的业务,包括员工、投资者、流程、规模和盈利能力优化。不同规模的重点不同。小矿工倾向于优化他们的矿机的每个方面,并可以维护矿机,确保正常工作。中型矿工通常希望保持尽可能多的运行,同时保持小型操作的独立性。这篇文章是一个规划比特币挖矿操作的很好的开始。挖矿业有时非常有利可图,但近几年来的收益并不乐观,只有运营成本最低的矿工才能继续。本篇文章面向中型矿商,他们可以部署比小型矿商更多的机器,并且比大型矿工具有更大的操作灵活性。如何以优惠的价格购买大量矿机?直接从制造商处购买。在2017年底,在钱包中有加密货币的人可缴费。我从比特大陆购买了大部分矿机。还有其他优秀的挖矿制造商,但比特大陆Antminers具有最优惠的价格和性能。一般来说,可以从比特大陆那个购买多达50或200个矿机。有时,甚至可以使用法定货币进行电汇付款。问题是,比特大陆网站上的大多数矿机都卖光了。但还是有买到的可能的。在推特和脸书上关注比特大陆,因为他们会提前12-24小时宣布出售矿机的消息。当矿机上架时,尽可能将矿机放入购物车并在两小时内检查好。之后,它们通常会再次售罄。其他可以购买矿机的好公司包括:Innosilicon、Baikal Miner、Ibelink。偶尔会有其他公司声称拥有最好的矿机。除非你认识某个拥有他们矿机的人,否则不要从他们那里订购,因为可能是诈骗网站。如何兑换挖矿利润?我的建议是尽可能多地保留获得的代币。在美国,可以通过持有加密货币一年以上来减少税收,因为任何价值的增加的物品都会作为长期资本收益被征税。在某些时候,需要支付一些账单,或者还房贷。你会怎么做?主要有两种类型的交易所——一种是仅加密货币,另一种是与法币挂钩的加密货币。首先,在与法币挂钩的交易所创建一个账户。举一些例子:Coinbase、Kraken、Bitstamp。为了处理任何重要的数量,需要提供身份证明,以满足KYC/AML(了解客户/反洗钱)规则。进行法定货币的交易所就和银行运作一样。注册并提供身份证明后,将交易所帐户连接到银行帐户。再对美元等法定货币进行小规模的双向转账测试。当要出售(或购买)加密货币时,请使用交易所的交易功能。对于Kraken来说,这是他们主页的一部分。Coinbase交易功能GDAX上,它与Coinbase共享一个登录名。设置限价销售或购买,然后将资金转入银行帐户。在进行销售和转移时,请注意每日、每周和每月的交易限制。如果正在挖规模较小的山寨币,需要将它们转换成比特币、以太坊或莱特币,以便在交易所进行出售。众所周知的中心化交易所是:Bittrex、Poloniex、Cryptopia、Livecoin。也有去中心化交易所,但那些更难使用。将山寨币转换成BTC、ETH或LTC后,将其提取到Coinbase、Kraken或Bitstamp的存款地址,然后在交易所使用限价订单将其卖出。原文来源:Rolf 由头等仓 Mavis进行翻译。欢迎在下方留言一起讨论!想要获取更多项目资讯跟踪分析报告,欢迎私信或是添加微信号go-first-one 发布于 2019-01-14 13:47币圈挖矿区块链(Blockchain)​赞同 12​​添加评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录区块链应

通俗易懂:比特币挖矿原理 - 知乎

通俗易懂:比特币挖矿原理 - 知乎切换模式写文章登录/注册通俗易懂:比特币挖矿原理唐小檬我就是我。是颜色不一样的烟火。提起比特币和区块链,很多人都觉得如数家珍,实则知其然不知所以然。比特币是区块链的前身实现,区块链是比特币的后期提炼;如果初次接触比特币,当你想和别人交流的时候,面对的第一个概念可能就是挖矿。那么,挖矿的原理是什么?怎样利用挖矿产生比特币呢?首先,我们来思考一下为什么每个区块链系统都要发行自己的数字货币?也就是前段时间的ICO热。这里面就涉及到区块链的根本作用,这个作用就是:实现社会价值在区块链上的自由流通(类比互联网的根本作用:实现信息的自由流通)。比如我可以针对汽车开发一个汽车链,针对房子开发一个房子链,针对母猪开发一个母猪链等等。如果一个组织或个人的能量足够大,也可以发布一个面向全行业的链,那汽车、房子、母猪……想在各自的链上自由流转,从A的名下流转到B的名下,或者从C的名下流转到D的名下,一定需要个度量的尺度。这个尺度就是靠支出相应的数字货币来完成的。换句话说,每条链发布的数字货币,充当的是该链上价值流通的一般等价物。做个现实的类比:也就是我们生活中用于交易的人民币、美元、泰铢、英镑等中央货币,在我们购物时充当的作用。每条链可以类比成一个国家,每个国家是不是都有自己的货币系统?这样一想,大概就清楚每条链发行数字货币的目的就是促使链上的资产顺利流通了。就数字货币而言,对于想做事的人,它充当的是价值流通的一般等价物;对于敛财的人,就是个圈钱的工具。在区块链上,数字货币的发布模式是怎样的呢?区块链发布链上的数字货币有两种主要形式。一种是,以国内的NEO为例,NEO的发行模式是:在系统创建的时候,一次性的在创世块里,写入1亿个NEO。借助ICO,用户可以直接用人民币认购持有。这种模式比较类似于央行发行人民币。另一种就是类似于淘金,就是比特币这样的,通过挖矿节点,不断消耗自身的算力,来换取比特币。由于比特币系统是完全开源的,在这套开源的代码里,包含了挖矿的功能,只要一个人懂代码,就可以把这套代码进行编译部署,加入到比特币网络里面去,把挖矿功能开启,那你的宿主机开始挖矿了。在比特币系统,通过自身的算法可以动态调整全网节点的挖矿难度,保证每过大约10分钟,比特币网络中,就会有一个节点挖矿成功;一旦有人挖矿成功,比特币系统就会奖励此人一定数量的比特币,这个数量也是通过算法控制的。具体说来:最开始的四年,每个挖矿成功的人会得到25个比特币的奖励,每过四年衰减一半;也就是下一个四年挖矿成功奖励12.5个,再下一个四年奖励6.25个,以此类推。大约到2140年的时候,区块链发行完毕,大约2100万个比特币,这就是比特币的总量,所以不会无限增加下去。通过上面的阐述,大家应该明白挖矿和比特币的关系了。这个关系就是:挖矿,是比特币系统发行自身数字货币,也就是比特币的必经之路。比特币系统,借助挖矿完成自身数字货币的发行。发行数字货币的过程,就是各个矿工竞争挖矿的过程。在每一个10分钟内,看谁先挖到矿,就奖励一定数量的比特币,这个奖励的过程就是比特币发行的过程;每个挖矿节点,受利益的驱使,也是不断的想办法能更快地挖矿,这也就催生了市面上的各种各样的矿池节点。挖矿是比特币系统中一个形象化的表述。它背后真正的名称是POW算法,也就是工作量证明算法。工作量证明,是从经济学中来的。1993年,由两个经济学家提出来的一种策略,就是防止对服务滥用或者资源滥用,而采取的一种有效阻断的经济策略。POW算法在比特币之前就已经被广泛使用了,其中比较有名的就是Google邮箱的反垃圾邮件系统。Google是这样做的:他要求每一个给google邮件服务器发电邮的对方服务器,必须先完成一定量的计算工作,这个计算可能会耗时对方服务线程2到3秒。2到3秒的时间,如果是一个人在发邮件,是完全可以忍受的;如果对方是个发送垃圾邮件的脚本程序,他是根本无法忍受的,邮件脚本要做的是每秒成千上百封的往外发。那POW算法在比特币系统是怎样应用的?中本聪在设计实现比特币系统的时候,希望每10分钟完成一次比特币发行,由于比特币网络中有成千上万个节点,那该把币发行给谁呢?按照工作量证明的策略,也就是POW算法的思路,中本聪在比特币系统中,给每一个节点出了一个难题。每个区块头的数据结构里面都有个Nonce字段,中本聪的解决的难题就是:在其他字段值不变的前提下,通过不断调节Nonce的值,来对BlockHeader这个结构体值算Hash,要求找到一个Nonce值,使得算出来的hash值小于或大于某个固定值,这个固定值,在BlockHeader结构体中,由Bits来标示。由于hash算法是一个不可以逆的算法,没法通过具体的hash值,倒推出原文。这样每个节点只能采用穷举的方法,也就是从1开始,2 3 4 5…不断的往后试。在这个过程就开始考验各个节点的CPU计算速度了,算的快的,很快就能得到Nonce值,然后他就把这个Nonce值放在结构体里,通过P2P网络广播出去。每个系统节点收到后,发现这个Nonce值是合法的,能满足要求,就认为挖矿成功。对于那些算到半截的节点,发现有人已经算出来了,就放弃本次穷举了,然后开始通过穷举的办法,去寻找下一个区块头的Nonce值。因此说,所谓挖矿,就是计算机通过穷举的办法,不断去找Nonce值、算Hash值的过程。谁先找到,谁就挖成功了。发布于 2021-07-15 09:37​赞同 3​​添加评论​分享​喜欢​收藏​申请

挖矿原理 - 廖雪峰的官方网站

挖矿原理 - 廖雪峰的官方网站

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: 3275787

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

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.

挖矿过程 | 区块链技术指南

| 区块链技术指南区块链技术指南搜索Ctrl + K前言修订记录如何贡献区块链的诞生记账科技的千年演化分布式记账与区块链集大成者的比特币区块链的商业价值本章小结核心技术概览定义与原理技术的演化与分类关键问题和挑战趋势与展望认识上的误区本章小结典型应用场景应用场景概览金融服务征信管理权属管理与溯源资源共享物流与供应链物联网数字艺术品和 NFT其它场景本章小结分布式系统核心技术一致性问题共识算法FLP 不可能原理CAP 原理ACID 原则与多阶段提交Paxos 算法与 Raft 算法拜占庭问题与算法可靠性指标本章小结密码学与安全技术密码学简史Hash 算法与数字摘要加解密算法消息认证码与数字签名数字证书PKI 体系Merkle 树结构Bloom Filter 结构同态加密其它技术本章小结比特币 —— 初露锋芒的区块链比特币项目简介比特币诞生背景工作原理挖矿过程共识机制闪电网络侧链热门问题相关工具本章小结以太坊 —— 挣脱加密货币的枷锁以太坊项目简介核心概念主要设计相关工具安装客户端使用智能合约智能合约案例:投票本章小结超级账本 —— 面向企业的分布式账本超级账本项目简介社区组织结构顶级项目介绍开发必备工具贡献代码本章小结Fabric 安装与部署简介本地编译组件容器方式获取本地方式启动 Fabric 网络容器方式启动 Fabric 网络本章小结管理 Fabric 网络简介使用通道管理节点管理链上代码监听网络事件自动发现网络信息使用运维服务如何升级网络版本使用 SDK注意事项与最佳实践本章小结智能合约开发简介链码概念与结构示例一:信息公证示例二:交易资产示例三:数字货币发行与管理示例四:学历认证示例五:社区能源共享小结Fabric 架构与设计简介架构设计消息协议小结区块链服务平台设计简介IBM Bluemix 云区块链服务微软 Azure 云区块链服务使用超级账本 Cello 搭建区块链服务本章小结性能与评测简介Hyperledger Fabric v0.6小结附录术语常见问题Go 语言开发相关安装与配置 Golang 环境编辑器与 IDE高效开发工具依赖管理ProtoBuf 与 gRPC参考资源链接由 GitBook 提供支持挖矿过程基本原理比特币中最独特的一个概念就是“挖矿”。挖矿是指网络中的维护节点,通过协助生成和确认新区块来获取一定量新增比特币的过程。当用户向比特币网络中发布交易后,需要有人将交易进行记录和确认,形成新的区块,并串联到区块链中。在一个互相不信任的分布式系统中,该由谁来完成这件事情呢?比特币网络采用了“挖矿”的方式来解决这个问题。目前,每 10 分钟左右生成一个不超过 1 MB 大小的区块(记录了这 10 分钟内发生的验证过的交易内容),串联到最长的链尾部,每个区块的成功提交者可以得到系统 12.5 个比特币的奖励(该奖励作为区块内的第一个交易,一定区块数后才能使用),以及用户附加到交易上的支付服务费用。即便没有任何用户交易,矿工也可以自行产生合法的区块并获得奖励。每个区块的奖励最初是 50 个比特币,每隔 21 万个区块自动减半,即 4 年时间,最终比特币总量稳定在 2100 万个。因此,比特币是一种通缩的货币。挖矿过程挖矿的具体过程为:参与者综合上一个区块的 Hash 值,上一个区块生成之后的新的验证过的交易内容,再加上自己猜测的一个随机数 X,一起打包到一个候选新区块,让新区块的 Hash 值小于比特币网络中给定的一个数。这是一道面向全体矿工的“计算题”,这个数越小,计算出来就越难。系统每隔两周(即经过 2016 个区块)会根据上一周期的挖矿时间来调整挖矿难度(通过调整限制数的大小),来调节生成区块的时间稳定在 10 分钟左右。为了避免震荡,每次调整的最大幅度为 4 倍。历史上最快的出块时间小于 10s,最慢的出块时间超过 1 个小时。为了挖到矿,参与处理区块的用户端往往需要付出大量的时间和计算力。算力一般以每秒进行多少次 Hash 计算为单位,记为 h/s。目前,比特币网络算力峰值已经达到了每秒数百亿亿次。汇丰银行分析师 Anton Tonev 和 Davy Jose 在 2016 年一份客户报告中曾表示,比特币区块链(通过挖矿)提供了一个局部的、迄今为止最优的解决方案:如何在分散的系统中验证信任。这就意味着,区块链本质上解决了传统依赖于第三方的问题,因为这个协议不只满足了中心化机构追踪交易的需求,还使得陌生人之间产生信任。区块链的技术和安全的过程使得陌生人之间在没有被信任的第三方时产生信任。如何看待挖矿2010 年以前,挖矿还是一个非常热门的盈利行业。但是随着相关技术和设备的发展,现在个人进行挖矿的收益已经降得很低。从概率上说,由于当前参与挖矿的计算力实在过于庞大(已经超出了大部分的超算中心),一般的算力已经不可能挖到比特币。特别是利用虚拟机来挖矿的想法,已经基本不可能了。从普通的 CPU(2009 年)、到后来的 GPU(2010 年) 和 FPGA(2011 年末)、到后来的 ASIC 矿机(2013 年年初,目前单片算力已达每秒数百亿次 Hash 计算)、再到现在众多矿机联合组成矿池(知名矿池包括 F2Pool、BitFury 等)。短短数年间,比特币矿机的技术走完了过去几十年的集成电路的进化历程,甚至还颇有创新之处。高回报刺激了科技的飞速发展。目前,矿机主要集中在少数矿池手中,全网的算力已超过每秒 10^20 次 Hash 计算。如果简单认为一次 Hash 计算等同于一次浮点运算,那么比特币全网算力将等同于 500 台 Summit 超级计算机(目前最快的超级计算机,由 IBM 和 Nvidia 于 2018 年研制)。很自然地,读者可能会想到,如果有人掌握了强大的计算力,计算出所有的新区块,并且拒不承认他人的交易内容,那是不是就能破坏掉比特币网络。确实如此,基本上个体达到 1/3 的计算力,比特币网络就存在被破坏的风险了;达到 1/2 的算力,从概率上就掌控整个网络了。但是要实现这么大的算力,将需要付出巨大的经济成本。那么有没有办法防护呢?除了尽量避免计算力放到同一个组织手里,没太好的办法,这是目前 PoW 机制自身造成的。也有人认为为了共识区块的生成,大部分计算力(特别是最终未能算出区块的算力)其实都浪费了。有人提出用 PoS(Proof of Stake)和 DPoS 等协议,利用权益证明(例如持有货币的币龄)作为衡量指标进行投票,相对 PoW 可以节约大量的能耗。PoS 可能会带来囤积货币的问题。除此之外,还有活跃度证明(Proof of Activity,PoA)、消耗证明(Proof of Burn,PoB)、能力证明(Proof of Capacity, PoC)、消逝时间证明(Proof of Elapsed Time)、股权速率证明(Proof of Stake Velocity,PoSV)等,采用了不同的衡量指标。当然,无论哪种机制,都无法解决所有问题。一种可能的优化思路是引入随机代理人制度,通过算法在某段时间内确保只让部分节点参加共识的提案,并且要发放一部分“奖励”给所有在线贡献的节点。上一页工作原理下一页共识机制最后更新于2年前在本页这有帮助吗?在GitHub上编辑基本原理挖矿过程如何看

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.

区块链技术入门-挖矿的7个步骤 | 登链社区 | 区块链技术社区

区块链技术入门-挖矿的7个步骤 | 登链社区 | 区块链技术社区

文章

问答

讲堂

专栏

集市

更多

提问

发表文章

活动

文档

招聘

发现

Toggle navigation

首页 (current)

文章

问答

讲堂

专栏

活动

招聘

文档

集市

搜索

登录/注册

区块链技术入门-挖矿的7个步骤

影无双

更新于 2019-10-31 15:34

阅读 13889

本文简洁的一步一步解释在区块链上矿工挖矿的7个步骤。

想知道在区块链上是如何挖矿的,交易是如何上链的?

没有找到一个清晰的可以一步一步解释这个过程的文章,于是我决定自己写一篇。以下就是我的分享,在区块链上矿工挖矿的7个步骤。

## 步骤一:发起交易

用户进入[钱包](https://learnblockchain.cn/2019/04/11/wallet-dev-guide/),执行一个交易操作,他将一个加密货币或者一个token发送给另一个用户。

## 步骤二:进入交易池

现在这个交易被[钱包](https://learnblockchain.cn/2019/04/11/wallet-dev-guide/)广播,等待区块链上的矿工们来拾取它。在被拾取前,它会一直在“*未确认交易池*”中等待。

所有等待被处理的交易都会在未确认交易池中,未确认交易池不是网络上的一个巨大的池,而是很多小的分散在矿工本地的缓存池。

## 步骤三:确认待打包的交易

区块链网络上的矿工(有时叫节点,但不完全一样)从未确认交易池中选择交易打包成数据块。除了一些额外的元数据外,数据块基本上就是交易数据(此时仍然是未确认交易)。每个矿工打包它们拾取的交易数据块,多个矿工可以选择同样的交易数据打包。例如,两个矿工,矿工A和矿工B都决定打包交易X。

每个区块链对数据块都有最大限制。在比特币区块链上,这个最大值是1MB。

在打包交易前,矿工需要先根据区块链的历史数据检查这个交易是否有资格被打包。根据区块链历史数据记录,如果支付者的钱包里有足够的余额,这笔交易被认为是有效的,并且可以被打包上链。

假如一个比特币持有者想要加速他的交易进度,他可以选择支付更高的挖矿奖励。矿工通常会优先打包这些支付更高挖矿奖励的交易。

## 步骤四:计算签名出块

矿工的工作就是选择交易数据并打包成块。要把这些块添加到区块链上(这意味着让区块链上所有节点都接受这个块的数据),这个数据块首先需要签名(也叫“工作证明”)。这个签名是在解决了一个非常复杂的数学问题后得到的,这个签名是独一无二的。每个区块需要解决的数学问题难度是一样的。为了解决这个数学问题,需要耗费相当多的**算力**(所以,要消耗相当多的电力)。这个过程就被叫做挖矿。如果你想知道更多关于这个问题的内容,请继续阅读,如果你只想简单了解一下,请跳到步骤五。

![矿场](https://img.learnblockchain.cn/2019/10/31/1*ZWQMcP4fEEoBdF-E9WKyOw.jpeg)

### 挖矿即哈希([工作量证明](https://learnblockchain.cn/2017/11/04/bitcoin-pow/))

矿工在打包块时需要解决的数学问题实际上就是找到一个以一定量的零开头的哈希函数的输出结果(就是签名)。这听起来很复杂对吗?但是它并不难理解。

开始之前,我们需要先了解一下什么是哈希函数。哈希函数很难解,但其结果非常容易验证。

哈希函数的输入值可以是任意字符串,随机输出一个32位的字母和数字的字符串。如果输入中有任何一点小小的变动,输出也将会随机改变。然而,同样的输入字符串只会得到同样的输出。

矿工要打包的交易数据就是一个字符串,将它进行哈希计算,就会得到一个32位的输出值。比特币区块链有一个规则,要求打包的数据块签名必须以一定数量的零开头。然而哈希计算的输出值是对它的每个输入值都是随机的,那么,输入的字符串哈希后没有得到这么多零开头的值怎么办呢?这就是为什么矿工需要不断的去改变块里面一个叫"nonce"的值,每改变一次nonce的值,就会改变块的数据,哈希运算后得到的签名也会不一样,也就是,每改变一次nonce的值,就会得到一个全新的签名。

矿工无限次重复改变nonce的值,直到得到一个符合要求的签名。

下图例子中,签名是以7个零开头的。但是具体需要多少个零,取决于区块链上的区块难度。区块难度的问题相对要难一些,所以我建议你先收藏[block difficulty](https://blog.goodaudience.com/blockchain-the-mystery-of-mining-difficulty-and-block-time-f07f0ee64fd0) 。

![以7个0开头](https://img.learnblockchain.cn/2019/10/31/1*MJMd3OVd89GDUUyjluPmSQ-1.png)

这就是矿工们为什么需要为它们打包的数据块找到一个合格的签名,也是需要那么多算力来解决这个数学问题的原因。试想一下需要这么多次更改nonce值并计算需要多少时间和算力呀。此外,当更多的矿工加入到区块链,哈希运算的难度也将增加并且会导致更高的电费支出。现在我们继续第五步。

注意:此过程实际上不是定义为数学问题,而是定义确定性问题 - 计算机对数字执行预先确定的操作,以查看输出是否可取。

## 步骤五:广播区块

矿工找到了一个合格的签名,他就可以向其他所有矿工广播他的数据块和签名。

## 步骤六:验证区块

其他矿工现在要确认通过广播收到的数据块的签名合法性,他们要对这个数据块进行哈希运算检查它是否输出一个以这么多零开头的签名。如果检查通过,其他矿工就会认为这个数据块有效,并且同意将它添加到区块链上(他们达成了共识,即他们所有矿工都同意彼此,所以术语叫共识算法)。这也是“工作量证明”的来源。签名就是矿工工作的证明(已花费的算力),现在,数据块可以加到区块链上了,并且分发到网络上所有其他节点。只要这个数据块中的所有交易数据都跟区块链上的历史数据符合,其他节点将接收这个数据块并将其保存。

## 步骤七

当一个数据块被添加到区块链上后,这条区块链上的所有块都认为它是正确的。例如,我的交易包含在第502号块中,并且这条区块链现在最长是第507号块,它的意思就是说我的交易数据被确认过5次(507-502)。它被认为是正确的,因为每次有其他块上链的时候,区块链都会就所有交易记录达成共识,包括你的交易和你的块。你可以说,到这个时候,你交易已经被确认了5次。这也是Etherscan在显示交易详细信息时所指的。你的交易被确认的次数越多(即嵌入区块链越深),攻击者就越难更改它。

每当新的交易加入到区块链,所有矿工都需要从第三步重新开始,打包一个新的交易数据块。

> 在完成一个块上链前,矿工们不能继续挖矿。

>

> 1、它可能包含已添加到区块链上已经确认过的交易(请记住,多个矿工可以选择同一个交易数据处理),任何重新发起的交易都可能导致它们无效,因为支付者的余额可能已经不足。

>

> 2、每个块都需要将区块链上的最后一个块的哈希签名添加到到他们自己的元数据中。这也是让数据块链起来的原因。假如一个矿工打包的是已经上链的块,其他矿工会注意到它的签名和区块链上最后一个数据块对不上,并且会拒绝这个块。

想知道在区块链上是如何挖矿的,交易是如何上链的?

没有找到一个清晰的可以一步一步解释这个过程的文章,于是我决定自己写一篇。以下就是我的分享,在区块链上矿工挖矿的7个步骤。

步骤一:发起交易

用户进入钱包,执行一个交易操作,他将一个加密货币或者一个token发送给另一个用户。

步骤二:进入交易池

现在这个交易被钱包广播,等待区块链上的矿工们来拾取它。在被拾取前,它会一直在“未确认交易池”中等待。

所有等待被处理的交易都会在未确认交易池中,未确认交易池不是网络上的一个巨大的池,而是很多小的分散在矿工本地的缓存池。

步骤三:确认待打包的交易

区块链网络上的矿工(有时叫节点,但不完全一样)从未确认交易池中选择交易打包成数据块。除了一些额外的元数据外,数据块基本上就是交易数据(此时仍然是未确认交易)。每个矿工打包它们拾取的交易数据块,多个矿工可以选择同样的交易数据打包。例如,两个矿工,矿工A和矿工B都决定打包交易X。

每个区块链对数据块都有最大限制。在比特币区块链上,这个最大值是1MB。

在打包交易前,矿工需要先根据区块链的历史数据检查这个交易是否有资格被打包。根据区块链历史数据记录,如果支付者的钱包里有足够的余额,这笔交易被认为是有效的,并且可以被打包上链。

假如一个比特币持有者想要加速他的交易进度,他可以选择支付更高的挖矿奖励。矿工通常会优先打包这些支付更高挖矿奖励的交易。

步骤四:计算签名出块

矿工的工作就是选择交易数据并打包成块。要把这些块添加到区块链上(这意味着让区块链上所有节点都接受这个块的数据),这个数据块首先需要签名(也叫“工作证明”)。这个签名是在解决了一个非常复杂的数学问题后得到的,这个签名是独一无二的。每个区块需要解决的数学问题难度是一样的。为了解决这个数学问题,需要耗费相当多的算力(所以,要消耗相当多的电力)。这个过程就被叫做挖矿。如果你想知道更多关于这个问题的内容,请继续阅读,如果你只想简单了解一下,请跳到步骤五。

挖矿即哈希(工作量证明)

矿工在打包块时需要解决的数学问题实际上就是找到一个以一定量的零开头的哈希函数的输出结果(就是签名)。这听起来很复杂对吗?但是它并不难理解。

开始之前,我们需要先了解一下什么是哈希函数。哈希函数很难解,但其结果非常容易验证。

哈希函数的输入值可以是任意字符串,随机输出一个32位的字母和数字的字符串。如果输入中有任何一点小小的变动,输出也将会随机改变。然而,同样的输入字符串只会得到同样的输出。

矿工要打包的交易数据就是一个字符串,将它进行哈希计算,就会得到一个32位的输出值。比特币区块链有一个规则,要求打包的数据块签名必须以一定数量的零开头。然而哈希计算的输出值是对它的每个输入值都是随机的,那么,输入的字符串哈希后没有得到这么多零开头的值怎么办呢?这就是为什么矿工需要不断的去改变块里面一个叫"nonce"的值,每改变一次nonce的值,就会改变块的数据,哈希运算后得到的签名也会不一样,也就是,每改变一次nonce的值,就会得到一个全新的签名。

矿工无限次重复改变nonce的值,直到得到一个符合要求的签名。

下图例子中,签名是以7个零开头的。但是具体需要多少个零,取决于区块链上的区块难度。区块难度的问题相对要难一些,所以我建议你先收藏block difficulty 。

这就是矿工们为什么需要为它们打包的数据块找到一个合格的签名,也是需要那么多算力来解决这个数学问题的原因。试想一下需要这么多次更改nonce值并计算需要多少时间和算力呀。此外,当更多的矿工加入到区块链,哈希运算的难度也将增加并且会导致更高的电费支出。现在我们继续第五步。

注意:此过程实际上不是定义为数学问题,而是定义确定性问题 - 计算机对数字执行预先确定的操作,以查看输出是否可取。

步骤五:广播区块

矿工找到了一个合格的签名,他就可以向其他所有矿工广播他的数据块和签名。

步骤六:验证区块

其他矿工现在要确认通过广播收到的数据块的签名合法性,他们要对这个数据块进行哈希运算检查它是否输出一个以这么多零开头的签名。如果检查通过,其他矿工就会认为这个数据块有效,并且同意将它添加到区块链上(他们达成了共识,即他们所有矿工都同意彼此,所以术语叫共识算法)。这也是“工作量证明”的来源。签名就是矿工工作的证明(已花费的算力),现在,数据块可以加到区块链上了,并且分发到网络上所有其他节点。只要这个数据块中的所有交易数据都跟区块链上的历史数据符合,其他节点将接收这个数据块并将其保存。

步骤七

当一个数据块被添加到区块链上后,这条区块链上的所有块都认为它是正确的。例如,我的交易包含在第502号块中,并且这条区块链现在最长是第507号块,它的意思就是说我的交易数据被确认过5次(507-502)。它被认为是正确的,因为每次有其他块上链的时候,区块链都会就所有交易记录达成共识,包括你的交易和你的块。你可以说,到这个时候,你交易已经被确认了5次。这也是Etherscan在显示交易详细信息时所指的。你的交易被确认的次数越多(即嵌入区块链越深),攻击者就越难更改它。

每当新的交易加入到区块链,所有矿工都需要从第三步重新开始,打包一个新的交易数据块。

在完成一个块上链前,矿工们不能继续挖矿。

1、它可能包含已添加到区块链上已经确认过的交易(请记住,多个矿工可以选择同一个交易数据处理),任何重新发起的交易都可能导致它们无效,因为支付者的余额可能已经不足。

2、每个块都需要将区块链上的最后一个块的哈希签名添加到到他们自己的元数据中。这也是让数据块链起来的原因。假如一个矿工打包的是已经上链的块,其他矿工会注意到它的签名和区块链上最后一个数据块对不上,并且会拒绝这个块。

学分: 20

分类: 科普与研究

标签:

入门 

比特币 

点赞 0

收藏 0

分享

Twitter分享

微信扫码分享

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

你可能感兴趣的文章

RoochBTC - 用链上索引器实现比特币二层

851 浏览

重新思考闪电网络

809 浏览

深入探讨比特币二层概念

1788 浏览

TI 专访 Merlin Protocol:构建在比特币网络上的资产适配协议

515 浏览

运行 v0.7 及更早版本的 Bitcoin Core

977 浏览

比特币 常见的几个疑惑点解密

955 浏览

相关问题

以太坊节点同步遇到错误

2 回答

阿波罗公链是pos算法公链吗

4 回答

fabric2.2.0可以运行在Intel的SGX(software guard extensions)中么?

0 回答

全小白应该怎么系统的学习

2 回答

如何去理解区块链技术,怎样高效的学习区块链技术

1 回答

想找一名区块链老师,学习区块链编程。

4 回答

0 条评论

请先 登录 后评论

影无双

关注

贡献值: 386

学分: 1789

江湖只有他的大名,没有他的介绍。

文章目录

关于

关于我们

社区公约

学分规则

Github

伙伴们

ChainTool

为区块链开发者准备的开源工具箱

合作

广告投放

发布课程

联系我们

友情链接

关注社区

Discord

Twitter

Youtube

B 站

公众号

关注不错过动态

微信群

加入技术圈子

©2024 登链社区 版权所有 |

Powered By Tipask3.5|

粤公网安备 44049102496617号

粤ICP备17140514号

粤B2-20230927

增值电信业务经营许可证

×

发送私信

请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!

发给:

内容:

取消

发送

×

举报此文章

垃圾广告信息:

广告、推广、测试等内容

违规内容:

色情、暴力、血腥、敏感信息等内容

不友善内容:

人身攻击、挑衅辱骂、恶意行为

其他原因:

请补充说明

举报原因:

取消

举报

×

如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!