神秘的中本聪为比特币网络开采出创世区块后,比特币慢慢从密码朋克的圈子里扩散开来,越来越多的人下载了中本聪的客户端软件,开始玩起挖矿的游戏。现在,比特币网络已达到恐怖量级的算力,而且还在高速增长。比特币挖矿演变是比特币发展最重要的环节,今天我从硬件的升级换代来给大家介绍比特币挖矿的四个阶段。
第一阶段 CPU挖矿
中央处理器——CPU(Central Processing Unit),是普通电脑的核心部件,相信所有人都不陌生。最早参与比特币挖矿的就是采用中本聪发布的比特币节点软件,按照中本聪的想法以及那个时代用软件来实现计算任务的手段,业余选手只能选择用CPU来进行哈希计算(SHA-256)1。
CPU作为第一代挖矿设备,从比特币诞生开始持续了一年多,在这段时间,比特币没有形成权威的市场交易价格,因此可以算作零价格时期。在这样的背景下,参与挖矿的人都是技术爱好者。从下图比特币网络算力的演变来看,2010年3月份前后,显然算力开始明显增长,我们可以想见那是参与的人增加了,而真正的硬件技术突破是到2010年7月18日,一个叫ArtForz的人用GPU开采出了第一个区块,宣告CPU挖矿时代成为过去。我们可以从图中明显看出,那个时间开始,比特币网络算力出现陡增。而那一天,比特币也开始有了价格记录,一枚比特币大概值几美分。
现在不再有人采用CPU进行挖矿了,因为按照现在比较高端的个人电脑配置的CPU,在现在的比特币网络难度水平下,大概需要百万年以上才可能挖到一个区块。毫不夸张地说,用CPU参加比特币网络挖矿,真的非常非常非常的困难!
第二阶段 GPU挖矿
所有的个人电脑里,除了CPU是核心部件外,还有一个对于游戏玩家来说极其重要的部件,就是显卡。显卡的心脏是图形处理器(Graphic Processing Unit,简称GPU)。GPU主要功能是处理图像,因此天然就有高吞吐量和高并行处理功能,而这两点对比特币挖矿的算法非常有利。于是有人意识到采用GPU来进行挖矿应该比CPU效率高。2
与此同时,苹果公司在2009年8月28日发布了一门新的计算机语言——开放运算语言(Open Computing Language,简称OpenCL)。这是一个可以使GPU进行非图像处理类工作的通用语言,人们可以用它在显卡上做很多种类型的运算,而且速度确实比CPU要快。
在当时买显卡是一个非常容易的事情,而且可以通过一个CPU和一个主板加载许多个GPU方式来提高算力,以更快的找到正确的临时随机数及其对应的有效区块。许多人创造性地发明了许多有趣的“自制型”硬件设置,用一个CPU驱动很多个GPU。
GPU由于发热量非常大,因此当把一大堆GPU凑在一起的时候,散热是一个大问题,因此自制GPU矿机基本上都没有外壳,裸体运行以方便散热。
在这个阶段,由于比特币矿工采购了太多的显卡以至于影响到了正常的市场需求,游戏玩家发现采购优秀的显卡越来越难,造成了比特币和游戏两个阵营的爱好者发生摩擦。不过,正是因为如此,许多游戏玩家开始了解了比特币,开始变为比特币矿工。
进入GPU挖矿时代,比特币网络算力开始稳步增长,比特币价格(红线)也开始启动。在那段时间,比特币慢慢从极客圈子里走了出来,得到社会越来越多的关注(游戏玩家)。随着2011年4月开始,比特币价格的猛涨,算力也随着猛涨,许多人开始进场淘金,于是硬件再次升级迭代。
在谈CPU挖矿时,我说现在不会再有人用CPU挖矿了,因为普通电脑在目前的比特币网络难度下,需要百万年才可能挖到一个区块。换成GPU,就算你将100块显卡推叠在一起进行挖矿,估计也要上万年才有可能挖到一个区块。不过可能读者会听说周围有人还在用显卡挖矿,你可以问一下他挖的是什么矿,因为现在有几乎上万种数码货币(我认为里面99%以上是忽悠骗局)。现在还能用显卡挖矿有收益的,肯定不是比特币,而是其他什么数码货币,比较靠谱的是以太币这样确实有相当多技术创新和思想的币种。除了比特币,其他的数码货币的价格以及靠谱性还没有吸引到足够的资本投入去开发专业矿机,所以显卡还有用武之地。
第三阶段 FPGA挖矿
在比特币网络挖矿的前两个阶段,采用的硬件都是个人电脑内都有的,因此那两个阶段都是通过软件设计来让一个本来不是用于挖矿计算的硬件设备来干挖矿的活。因此在前两个阶段应该算是挖矿的业余阶段。
随着比特币价格在2011年4月份的猛涨,开始有相对专业的人考虑如何定制硬件来实现更高速的计算。2011年5月20日,在比特币论坛(Bitcoin Forum),一个叫fpgaminerd的人发了一个帖子《The Open Source FPGA Bitcoin Miner》,差不多相当于宣告FPGA技术开始代替GPU进行挖矿的时代到来。
这里要简单介绍一下FPGA的工作原理。
首先要简单说说CPU和GPU的工作原理。硬件出厂时,CPU和GPU的逻辑电路和可执行的指令都已经定制好,我们需要通过编写软件给CPU或者GPU下达指令,然后让CPU和GPU执行指令来实现我们的计算任务。我们编写不同的软件,就是把CPU或GPU可执行的指令根据我们的计算目标进行组合,实现各种各种的计算。总之一句话,这样的架构是硬件以自己的不变来应对千变万化的软件。可见我们的CPU和GPU的功能强大体现在能够处理各种不同的计算问题。
回到FPGA,英文全称是Field-Programmable Gate Array,翻译成人话是“现场可编程门阵列”(这也是大部分人看不懂的人话)。FPGA的工作原理与CPU和GPU不同,它在硬件设计的时候并没有把硬件的结构和逻辑定制好,而是为了将来不同的应用场合(算法),制定了一个“硬件白纸”。当需要采用它完成一种计算任务的时候,就要用专门的硬件设计语言把所需要完成任务的结构和逻辑设计出来,相当于在“硬件白纸”上刻上需要计算的公式,然后再去执行任务。这样采用FPGA就会获得比软件指挥硬件(CPU和GPU)更高的效率。但是FGPA这个“硬件白纸”一旦被刻上了公式,那么就变成只能完成这一个种类的计算任务了。
FPGA比GPU大致能提高5倍计算速度,也很容易冷却。总体来说,相比显卡堆叠,我们可以构建一个更加干净整洁的大型FPGA阵列。
现在FPGA是芯片发展的一个大方向,有些FPGA芯片出厂后可以支持多次擦除写入硬件编程,相当于一张可重复擦写的“硬件白板”。可是,在比特币网络挖矿领域,FPGA挖矿时代非常短暂。我认为短暂的原因是FPGA是专业挖矿的小试牛刀,毕竟FPGA不像CPU和GPU一样能随便买到,而且针对FPGA的搭建和编程也是非常冷门(相对于业余计算机爱好者来说)的技术。因此从下图看出,FPGA存在的时代,应该是和GPU挖矿时代重叠的,算力上并没有显著的增长,甚至在比特币价格剧烈波动下还出现算力萎缩的情况。
第四阶段 ASIC挖矿
专业选手一旦进场,那么FPGA那种需要后期进行硬件编程来取代GPU的做法,很快就被更优化更高效的技术方案所取代。这一次出场的是定制化的专用集成电路技术(Application Specific Integrated Circuits,简称ASIC)。
ASIC的技术原理说白了就是比FPGA更进一步,不需要什么“硬件白纸”,直接为比特币网络的挖矿算法定制一个集成电路,由这个集成电路来直接进行挖矿效率将大幅度提高,功耗和散热也会因为专业设计定制而大大减少。然而ASIC有一个致命的弱点,就是它只会进行比特币网络挖矿算法的计算,其他的事情完全没有能力去做。因此ASIC的出现一定是伴随着比特币价格体系给了资本方足够的信心,因为设计ASIC芯片需要非常专业的知识,研发过程成本比较高,不是专业机构是搞不定的。
在ASIC阶段早期(2012年4月份就开始有机构研发ASIC矿机),前几代的比特币矿机有许多缺陷,而且寿命十分短暂。在那个时期(2014年底以前),绝大部分早期的ASIC芯片在6个月就被淘汰,而挖矿利润有一半是新矿机在6个月的“保鲜期”内实现的。因此矿机的出货速度显得至关重要。然而这个新生行业非常不成熟,生产矿机的公司会故意推迟供货,用新矿机先自己挖矿一段时期以后再发货给矿主,甚至出现当矿主收到货的时候,设备已经淘汰了。在那个时期失望客户对供应商的欺诈控诉的事件时有发生。下图可以看出比特币2013年的一轮价格暴涨,而算力的增加是差不多滞后半年的。
如今的比特币矿机芯片技术已经相当成熟可靠,寿命也大大延长。但是由于比特币网络算力的爆炸式增长,尽管比特币价格也在这些年大幅度增长,可是考虑到矿机运行所需耗费的电力成本以及冷却成本,小家庭作坊矿机已经无法靠挖矿来赚回成本。
今天,挖矿已经从个人领域转到了大型专业挖矿中心。要建立一个挖矿中心,需要考虑气候、电费和网络接入速度三个重要因素。据说格鲁吉亚和冰岛是专业挖矿中心投资的首选之地。
当比特币挖矿的硬件设备进入到ASIC时代,也就成为了地球上的一个新兴行业。我们从下图看到比特币算力在ASIC技术成熟以后,开始疯狂暴涨。
迷惑的比特币未来
本篇谈的比特币挖矿历史与黄金开采有很多有趣的相似之处。它们都开始于类似的淘金者热潮,大量的年轻人和业余爱好者积极参与其中,渐渐的从个人操作演变为大公司专业运作。其间所采用技术手段的升级换代也惊人的相似。它们之间还有一个相似点是大多数的利润都被设备制造商拿走了,不管是黄金采掘设备还是比特币ASIC矿机生产商,而埋单的都是那些希望一夜致富的人。
今天我们回顾了比特币挖矿的历史,眼睁睁看到比特币网络算力的暴涨,同时伴随着的是比特币价格暴涨暴跌。我经常迷惑于比特币价格和投入挖矿行业资本之间的因果关系,到底谁是因?谁是果?
我们知道现在投入ASIC矿机,是只能用于挖比特币,无法干其他任何事情。如果是因为比特币价格拉动了挖矿算力增长,那么总体来说还算健康;可是如果是挖矿算力增长让那些大量投入的资本方炒作比特币价格,那么就是一个可怕的大泡沫了!
比特币当初设计的初衷是一个完全去中心化的系统,在这个系统里每个人都能用自己的电脑去挖矿。然而ASIC专业挖矿设备和专业挖矿中心的出现已经违反了比特币设计的初衷,会不会挑战到这个去中心化系统的设计?这是一个关乎到比特币未来的基本问题。
天文数字级别的网络算力给了比特币现在无与伦比的安全性,可是同样是这个网络算力的来源也给了比特币未来极大的不确定性。
因此,我要提醒看我文章的读者,比特币目前绝不能说是一个完全被证明成功的区块链技术应用,更不能说是一个完全被证明成功的数字货币。请了解一点点区块链技术原理,仔细分辨那些披着区块链外衣来圈钱的骗子们。
注释:
1、想了解挖矿算法的,请参考本人写的《比特币里的挖矿到底是挖什么矿?》。
2、关于GPU为何比CPU挖矿速度快,我弟弟给了我一个类比,我觉得非常形象,这里给读者作一个参考:CPU相当于博士生在进行计算,现在CPU可能会有4核、8核,可以完成多个任务线程,那么就相当于有4个或8个博士生在进行计算;而GPU相当于小学生进行计算,GPU上有几百个计算单元,相当于同时有几百个小学生同时在进行计算。而比特币挖矿算题(SHA-256)就相当于个位整数加减法,只是需要进行非常巨大的计算次数来完成挖矿算题。那么用几百个小学生进行个位数加减法计算显然比几个博士生算同样的题目要快很多。