打字猴:1.703866345e+09
1703866345 图5.5展示了一轮SHA-256的压缩函数运算,一个完整的SHA-256运算要做64次这样的迭代运算,在每一轮运算中,会使用稍微不同的常数,所以所有的迭代运算都是不一样的。
1703866346
1703866347 矿工的任务就是尽可能快地进行这种函数运算。矿工们互相比拼运算速度,算得越快收益越高。为了实现尽可能快的速度,矿工需要进行32位字段操控,32位模加法运算,同时做按位逻辑运算。
1703866348
1703866349
1703866350
1703866351
1703866352 图5.5 SHA-256的结构
1703866353
1703866354 注:这是一轮压缩运算。Maj是按位运算的。Ch也是按位运算的,根据第一个输入值的不同而决定是选择第二个还是第三个。∑0和∑1通过按位循环和⊕运算来操纵32位的字符输入。
1703866355
1703866356 我们很快就会看到,在比特币机制下,为了得到供其他节点使用的哈希函数,实际上要求两轮SHA-256运算。这是比特币的奇怪之处,进行两次运算的原因并不清楚,但这就是比特币的个性,作为比特币矿工只能服从。
1703866357
1703866358 CPU挖矿
1703866359
1703866360 第一代挖矿工作都是在普通电脑上完成的,也就是用通用中央处理器(CPU)来进行运算。事实上,CPU挖矿的工作就像图5.6中代码所示的逻辑那样简单,也就是说,矿工简单地按照线性的方式尝试所有的临时随机数,在软件中进行SHA-256的运算,并检查结果确认是否找到一个有效区块。请注意,正如我们之前提到过的,这段代码要进行两次SHA-256运算。
1703866361
1703866362
1703866363
1703866364
1703866365 图5.6 CPU挖矿的伪代码
1703866366
1703866367 普通电脑运行这段代码到底有多快?一台高端的个人桌面电脑,每秒可以计算大约2千万次哈希函数(20MH/s),按照这个速度,根据2015年早期的难度水平(267),大概需要几十万年来找到一个有效区块。毫不夸张地说,挖矿真的非常困难!
1703866368
1703866369 如今使用一个普通电脑用CPU挖比特币,在目前的难度下已经无利可图了。在过去的几年里,用CPU挖矿的旷工可能会非常失望地发现,他们永远不可能通过挖矿赚到钱,因为他们不了解比特币是如何运行的。
1703866370
1703866371 GPU挖矿
1703866372
1703866373 第二代矿工意识到用CPU挖矿是在做无用功,他们开始用显卡或者图形处理器(GPU)来挖。
1703866374
1703866375 几乎每一个现代个人电脑都有内置的GPU以支持高性能图像处理,这些GPU都有高吞吐量和高并行处理功能,这两点对比特币挖矿都非常有利,比特币挖矿存在大量的并行处理,因为你需要同时用不同的临时随机数计算多个哈希值。2010年,有一门计算机语言开放运算语言(Open Computing Language,简称OpenCL)诞生了,这是一个可以使GPU进行非图像处理类工作的通用语言。OpenCL是一门高级语言,人们可以用它在显卡上做很多种类型的运算,而且速度比在CPU上的要快。这给通过GPU来进行比特币挖矿铺平了道路。
1703866376
1703866377 当时,通过显卡来挖矿有好几个吸引人的地方。首先,买显卡很容易,而且哪怕是业余爱好者也能轻松配置显卡。你可以在网上或大多数专营电子产品的商场里买到它。对大众来说,显卡是最容易获得的高端硬件设备。其次,显卡还有一些格外适合比特币挖矿的特性:显卡的并行性设计使其具备很多算术逻辑单元(Arithmetic Logic Units,简称ALU),可以同时进行SHA-256运算。有一些GPU还特别集成了针对位移操作的指令,这对SHA-256的运算非常有用。
1703866378
1703866379 大多数显卡都可以超频,这意味着如果你愿意承担显卡过热或者出现故障的风险的话,你可以让显卡以高于设计频率的频率更快地运行。超频是游戏玩家们渴望了多年的特性。对于比特币挖矿来说,超频会增加收益,即使超频可能引起一些运算错误。
1703866380
1703866381 举例来说,将显卡超频50%,也就是说运算速度加快50%,同时可能会造成SHA-256运算出错概率增加30%。如果显卡错误地接受了一个不正确的运算结果——虽然不太可能发生——你还可以通过CPU来进行二次确认。然而,你可能永远都不会知道一个正确的运算结果被错过了。但是通过超频产生的运算速度的增加,完全可以抵消由于显卡运行错误产生的正确输出减少,这样超频还是合算的(从经济效益上来说)。在上述的例子中,超频使得吞吐量增加到原来的1.5倍,而运算成功率降低到了0.7,那么乘积就是1.05,也就是意味着超频使得你的获利增加了5%。为了最大化收益,人们花了很多时间去优化最佳的超频比例。
1703866382
1703866383 最后,你可以通过一个CPU和一个主板加载许多个GPU。然后你便可以在安装了多个GPU的电脑上运行比特币节点,监听网络收集交易,组装区块,同时用多个GPU进行SHA-256的运算,以更快地找到正确的临时随机数及其对应的有效区块。很多人创造性地发明了很多有趣的“自制型”硬件设置,如图5.7所示,用一个CPU来驱动很多个GPU。这种情况仅发生在比特币的早期,当时大多数矿工都是比特币的爱好者,他们并不具备服务器搭建及运营经验。但是他们还是做了很多巧妙的设计,使得大量的GPU可以在一个较小的空间里同时运行,同时还解决了散热的问题。
1703866384
1703866385 GPU挖矿的缺点
1703866386
1703866387 GPU挖矿也有缺点。GPU有大量的内置硬件来进行图形处理,这些特定硬件对比特币挖矿没有任何用处,比如它们大量的浮点运算单元(floating point units),在SHA-256的运算中完全用不到。
1703866388
1703866389
1703866390 矿工和游戏玩家的对比
1703866391
1703866392 根据民间传说,2011年,由于比特币矿工采购了太多的显卡以至于影响到了正常的市场需求,这造成了比特币社区和游戏社区之间的摩擦,因为游戏玩家们发现采购某个热门显卡变得越来越难。有趣的是,尽管如此,很多失望的游戏玩家因此而对比特币产生了兴趣,甚至有些游戏玩家因此而变成了比特币矿工!
1703866393
1703866394
[ 上一页 ]  [ :1.703866345e+09 ]  [ 下一页 ]