打字猴:1.703866365e+09
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
1703866395
1703866396
1703866397 图5.7 一个用于比特币挖矿的家庭组装式GPU机架
1703866398
1703866399 资料来源:István Finta, bitcointalk.org
1703866400
1703866401 同时GPU也没有很好的冷却处理设置,尤其是当你把大量的GPU堆放在一起的时候,这个问题就尤为突出。设计显卡的时候并没有考虑如图5.7所示的这种堆放的情形,原始的设计场景就是在一台电脑、一个机箱、一块显卡运行做图形处理而已。
1703866402
1703866403 GPU也非常耗电,所以一台普通的电脑也会消耗很多电。由此引发的另一个缺点就是,你要么自己构建特定的主板,要么花大价钱购买可以搭载大量显卡的特定的主板。
1703866404
1703866405 一个非常高端的显卡经过超频之后可能使得运行速度达到200MH/s,也就是说,每秒可以进行2亿次哈希运算,这是用CPU不可能达到的一个数量级。但是即便如此,即使你将100块这样的显卡集成在一起进行运算,根据2015年早期的比特币挖矿难度,仍旧需要运算几百年才有可能找到一个有效区块。因此,用GPU来挖矿基本上已经成为历史,但是在其他一些另类币的早期阶段还是很有效率的。
1703866406
1703866407 现场可编程门阵列挖矿
1703866408
1703866409 2011年左右,用于现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)的硬件设计语言Verilog,第一次用于比特币挖矿。一些矿工开始用FPGA来代替GPU进行挖矿。
1703866410
1703866411
1703866412
1703866413
1703866414 图5.8 家庭组装式FPGA机架
[ 上一页 ]  [ :1.703866365e+09 ]  [ 下一页 ]