>科技>>正文

比特镇魂曲03(上)比特币矿业奇观

原标题:比特镇魂曲03(上)比特币矿业奇观

▐ 撰文/素为

本集关键词:挖矿、全网算力、哈希率、PoW、hashcash、矿业、CPU、GPU、FPGA、ASCI矿机、矿机工艺、矿场、电力、矿池、分配机制、2100万、四年减半、难度调整、交易费、UTXO、公私钥体系、地址、BASE58、抗量子计算、椭圆加密曲线的标准

️ 主人,你对着电脑在捣鼓什么?

我在试试,能不能“挖”到比特币。

️ 用什么“挖”?

用我的电脑呀!

️ 哈哈,你这个普通的办公电脑哇,十年前恐怕可以,现在嘛,基本上就是痴心妄想了!不过,也不是说绝对不行,而是这普通电脑挖到币的概率甚至还没有中彩票大奖的概率高呢!

何以见得?

️ 我们可以到一些网站查询一下,当前比特币网络的全网算力情况,例如https://bitcoinwisdom.com/bitcoin/difficulty,然后你可以看到一项Hashrate,即哈希率,目前是53EH/s 。Hz是频率的单位,1Hz/s就表示每秒钟运算1次,根据1k=1000、1M≈1000k、1G≈1000M、1T≈1000G、1P≈1000T、1E≈1000P这样大致的换算,你可以大概估算一下。

bitcoinwisdom网站显示的挖矿难度

我电脑的CPU可是高级货!

️ 就算是目前高端的电脑CPU,主频4GHz,开满12线程,你的算力也到不了全网算力的十亿分之一,也就是说,你挖到比特币的概率不到十亿分之一。需要说明一点的是,虽然挖矿算力与CPU运行的算力不完全是一回事,但这样估算是没大毛病的,所以,劝你还是彻底放弃幻想吧!

啊!有这么绝望吗?

️ 我原本也存有幻想,你知道的,怎么说我也是智能机器人呢!但是,当我跟随办案团队前往老张的比特币矿场,看到偌大的厂房整齐排满的比特币矿机时,我惊呆啦!

为什么要去老张的比特币矿场?

️ 因为在正式接触老张之前,我们要对他和他的企业有一个全面的了解,所以,我们决定去看一看他的矿场。

既然凶手在临刑前嘱咐其妻去找老张,那么,老张一定是可疑的,而且死者恰好是数字货币交易所的老板,老张又恰好是开矿场挖矿的,这当中一定有某种关联,去看一下老张的矿场是必要的。

️ 老张的矿场在西部一座小型水电站的旁边,我们一路山路颠簸,差点没把我颠散架。

啊!话说当年科幻作家刘慈欣就是一边与世隔绝在山里守水电站,一边创作出了不朽名作《三体》。然而,挖比特币为什么也要把矿场设在那么偏僻的地方啊?

️ 因为电力丰裕且便宜呀!

哦,挨着山里的水电站,同时也节省了电力的传输成本。

️ 大多数的矿场都是这样,建在山里的水电站旁边,或者内蒙古草原上,风力发电站的旁边。

比特币挖矿竟如此的依赖电力资源。

️ 当然呀,有一篇报道统计,2017年挖矿消耗的电量已经占到了全球发电量的0.19%,这是很惊人的。比特币挖矿的这种机制被称为PoW(Proof of Work,工作量证明机制),从功能上说,PoW除了能“挖”出比特币,对人类社会没有任何的实际增益。

那岂不是很浪费资源?

比特币矿场

️ 是非常浪费资源!有些西北偏远地区,为了招商引资,对在当地投资办企业,尤其是有科技含量的企业,有非常多的优惠和补贴政策,恰好这些地方的电力资源也较为充裕,于是就吸引了一些“矿工”前往。然而,大家逐渐发现所谓的比特币挖矿并没有对社会价值产生什么实际增益,而且还是高能耗、高噪音,于是已经有地方出台政策点名禁止在当地办“挖矿”企业了。

比特币挖矿,应该不是一开始就这么耸人听闻的吧?

️ 最初的一两年,因为知道和认可比特币的人很少,全网算力小,所以那时用家里的个人电脑就能挖到币,本质上是运用电脑的CPU进行计算来挖。

那种岁月就像原始社会一样的古老吧!

️ 后来,希望挖到比特币的人多了起来,有些极客就开始研究了,怎么样比别人家的电脑挖到多一些呢?这时,有人发现,所谓的挖矿,不过是不断的带入随机数——如果在求解的过程中从1开始逐个枚举也太傻了,所以实际挖矿是用随机数——然后一个个结果去试,看哪一次能算出符合要求的哈希值,这都是一些简单却重复的计算,非常像显卡GPU所干的事情……

啊!GPU除了用于人工智能的深度学习领域,没想到还是一个“挖矿”神器呀!

️ 电脑屏幕的本质,是一个个的像素点阵,GPU要同时在屏幕上显示像素点,必然擅长于并发做重复计算,这与CPU擅长做逻辑运算的架构存在本质上的不同。

嗯,GPU擅长做大量的重复性计算,我们在去年的《素为求智录》中讨论过。

用显卡GPU挖矿

️ 所以,极客们很快写了个程序,用GPU挖矿。效果好得不要不要的,CPU挖矿就渐渐凉凉了。

那个智慧检务创新研究院区块链实验室不是有两块1080TI的GPU嘛,拿来挖吧!

️ 主人,如果你想犯错误的话,你就拿公家的算力和能源来挖矿吧!

哈哈,我岂会不知那是违纪甚至是违法犯罪行为!网上有过一些报道,早些年,某地方政府机房承建商曾在bitcointalk论坛上发帖,咨询做一套外表是正常设备实际上内部是挖矿设备的方案;而我也亲眼见过在某单位的网站服务器上私跑着挖矿程序;还有人偷电挖矿,你去百度搜“偷电挖矿”,一堆案子……

️ 不只是国内这样,国外也出过哈佛大学研究员用超级计算机挖矿这样的丑闻。利益容易冲昏人的头脑,让人铤而走险!早些年,还有人在网页中植入挖矿的脚本木马,在访问网页时调用你的电脑资源帮它挖矿……

简直是挖空心思、无奇不有啊!不过,我只是很好奇,咱自己家电脑的显卡也不错,准备拿来试试。

️ 很可惜,GPU挖矿也过时了。要知道,在那么大的全网算力面前,你就是把GPU超频烧爆了,也不过是沧海一粟。

这么大的全网算力是怎么搞出来的?

️ 因为,很快就有人把FPGA用到了挖矿领域。

FPGA是什么?

️ FPGA是Field Programmable Gate Array,中文翻译为“现场可编程逻辑门阵列”。

……

️ 我知道你听不懂,你就把它理解为一种类似乐高积木那样的编程电子元器件,包括与门、非门、或门、选择器等。

拿这个来挖矿?

️ 是呀!难道不可以吗?当你用GPU挖矿的时候,你实际上得开一台电脑,整个电脑开着,除了用于挖矿的那部分,其余的大部分内存、硬盘这些消耗能源的组件也都开着,也都在耗电,非常不划算。如果直接用可编程电子元器件来组成挖矿的机器,从对资源的管理角度来说,是很大的优化,资源的利用率自然就会得以提升了。

FPGA矿机

你说什么?挖矿的机器,是不是就是“矿机”?

️ 是的,2011年末,就有人拿FPGA造出了第一台比特币矿机。当然了,FPGA矿机在算力上并不比GPU强多少,但整体的功耗却低很多,对于电力成本比较敏感的挖矿者便一度对其青睐有加。

然而呢?嘻嘻~

️ 然而,人民群众的智慧是无穷的!有人就想了,与其像乐高积木一样的拼装电路,不如设计专门的集成电路芯片吧!于是,就发明出了ASIC矿机。ASIC是ApplicationSpecific Integrated Circuit的缩写。

厉害呀!

️ 还有更厉害的,早期的矿机体积比较大,功耗大,为了散热,所以噪音也大,于是针对这些问题,ASIC矿机厂商不断改进工艺,其中重要的一项就是不断变小的集成电路线宽,从最初的55纳米,到40、28、14纳米,一直到现在的7纳米。

为什么线宽要做得越来越小?

️ 做同样的运算,线宽越小,所需的电能就越少。

啊?

️ 芯片的本质是电流,电流的本质是电子的传导。同样的导体,一个粗一个细,通过导体传递同样的信息,粗导体需要的电子多,而细导体需要的电子少。很显然,细导体所需的电能少。

看起来,电力是挖矿成本控制中最重要的一部分。

️ 没错,人们都是为了赚钱才挖矿的,如果挖出的币值连电费都抵不过,就不会有人挖了,所以要严格控制电费支出成本。芯片的线宽越做越细,同样的运算,传导的电子越少,损耗也便越少,如此也提升了能源利用率。损耗实际上是一种把电能转化为热能的过程,所以损耗越少,意味着对散热的需求也越小,这样就不用拿着个较大的风扇嘎吱嘎吱吹了。

我记得,早年还有挖矿产生噪音,隔壁邻居实在受不了噪音提刀砍伤挖矿者的案子。

️ 嗯,噪音主要的根源其实是散热风扇。

原来,要控制噪音,是要控制散热;而要控制散热,其实是要降低损耗;为了降低损耗,才需要把线宽做细,原来矿机工艺的改进逻辑是这样的一系列。

️ 不只是矿机,而是包括家用电脑在内的所有电子产品的工艺改进逻辑,都是如此。

话说回来,一个纳米有多宽?

️ 1纳米=10^-9米,即0.000000001米,是大约4个原子的长度。举个形象的例子,1纳米相当于头发丝直径的万分之一。

我嘀个乖乖,已经是人类的肉眼徒手看不见摸不到的了,这芯片产业都掺合进来了,那还有咱个人玩家什么事哟~

ASIC矿机

️ 也不尽然,你忘记我刚才说的在老张开的矿场里,一望无垠、整齐排列的比特币矿机了吗?这成百上千台矿机可不是单打独斗的哦,他们是作为集团军参战的呢!

哦,我明白了,有些甲算过的数字,乙就可以不算了,例如你算奇数题,我算偶数题,分工协作,如果算出来,就是大家共同的功劳。是这样吗?

️ 就是这样!

那还不是我说的,人家都拿着现代化武器组集团军了,我们个人玩家还舞刀弄枪,就太不自量力了。

️ 个人玩家、个体矿工的机会,就是加入“集团军”呀!

哦,对呀,我可以加入,我的机器可以跟矿场的成百上千台机器一起“挖矿”,挖到了“矿”,我还能分一杯羹呢,那么,我加入的这个,这个机制叫什么呢?

️ 矿池。不仅仅是你的机器可以与矿场的机器一起挖矿,而是全世界所有的机器都可以加入到某个矿池,而且,如果你是矿场的老板,你也可以选择带着你的“队伍”加入到大矿池里,只要你觉得矿池的分配方式是合理的。

我的机器贡献了算力,那么,必须这次的算力客观上助矿池挖到矿,我才能获得收益,还是,只要我贡献了算力,无论这次有没有挖到,只要是在一段时间内贡献了算力,而矿池又挖到了矿,我就能分得一些收益呢?

️ 矿池的运营和分配可是一门学问,有PPLNS、PPS、DGM、SLUSH等各种模式,如果分配机制不科学,就不会有人带“队伍”来加入,对于职业挖矿的人来说,如果加入的矿池分配方式不对路,可能收益会差很多呢!不过咱又不是职业挖矿的,就没必要研究那么深了。

那么,也就是说,即便是开矿场的,纵使有成百上千的专业矿机,算力也不过是全网的沧海一粟,为了确保收益,必然也需要加入某个矿池。

️ 是这样的。

2018年度比特币矿池算力分布图,来源 btc.com/stats/

工作量证明PoW机制如此劳师动众、浪费能源,简直是暴殄天物呀!

️ 然而,PoW机制最初被发明出来,却是一项创举。最早PoW是用于抵御垃圾邮件而被发明的。

咦?这个稀奇。

️ 这个方法叫HashCash,哈希现金算法机制,是在1997年由亚当·巴克(Adam Back)发明的:为了解决垃圾邮件的问题,需要有一种方法有效识别哪些是正常的邮件,简而言之,有“工作量”的才是正常邮件。

亚当·巴克(Adam Back),HashCash发明人

愿闻其详。

️ 系统会要求,在发电子邮件的时候,用邮件内容、收件人地址、当前时间戳等数据做一次哈希计算,得到的哈希值就可以用于校验是否是垃圾邮件了。如果是正常的用户,花几秒钟运算一下哈希值,基本上没有什么成本;倘若是垃圾邮件制造者发邮件,每一封都花几秒钟,这个时间成本就是承受不起的了,并且,成千上万封邮件同时发,对同时做这么多次哈希运算的机器也是个考验,总之,HashCash方法提高了发送垃圾邮件的成本。

很酷的算法机制!

️ 不止如此,HashCash方法还能用于防止拒绝服务攻击,即DoS,Denial of Service。

哦,我做过网站,我知道拒绝服务攻击:网站服务器只能承受有限的终端同时访问,黑客会用大量的机器假装是访问者,把服务通道堵死,导致网站不能正常被访问。

️ 是的,就像是竞争对手派人在高峰期去你开的餐馆,把位置都占着,却不吃饭。

如果用HashCash的方法来处理这个问题,就可以是要求占座的人提供身份信息,至少是一个手机号码,这样,就能有效避免被“拒绝服务攻击”。哈哈~

️ 好像有的餐馆也确实是这么做的。

然而,像HashCash方法这么有品的东西,用到了比特币里成为了PoW机制,却感觉是被玩坏了。大家为啥这么对比特币挖矿趋之若鹜呀!

️ 因为稀缺呀!经济学上说,稀缺就是价值,比特币总数量有2100万个,而且就挖矿来说,大概的周期是每四年减少一半的产量:例如2012年11月以前,每挖出一个区块可以获得50个币,而之后却只有每个区块25个币了,到了2016年7月之后,现在每个块里只有12.5个币了……预计到2140年,所有的原生比特币就会被全部开采完。

为啥要每四年产量减少一半呀?

️ 这就是比特币的发行机制呀,是写在比特币软件代码里的,代码都是开源的,也就是说代码都是公开的,你可以参看https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp。当然了,并不是像你想象的,直接写着2100万,而是一套计算公式……

等一下,你刚刚说每四年减半,从2012年11月到2016年7月,并不到四年呀!

️ 我正要说这个问题呢!所谓“四年减半”只是一种大概的说法,真实的比特币发行规则,程序的设定是:每经过210000个区块,产量就减半。最初210000个区块的奖励是50个比特币,210001-420000个区块的奖励是25个,而目前处于420001-630000个区块的范围内,所以奖励是12.5个。

也就是说,总发行量是这样累计的:210000×50+ 210000×25+ 210000×12.5+ 210000×6.25+ 210000×3.125+……最后,好像只是无限接近2100万呀!

️ 嗯,比特币数量可以精确到小数点后面的第8位,所以,按照这种减半规则,最终的发行量准确值其实是 20999999.97690000个,为了叙述方便,一般就说是2100万个。

比特币产量时间表

每210000个区块收益减半,难怪大家会使劲抢着挖的。随着这些年专业矿机和矿池的出现,相比以前个人电脑能挖矿的时代,算力翻了那么多倍,那岂不是计算越来越快,也就是挖矿的速度越来越快了?

️ 计算是越来越快,但题目却随着算力的增长变难了。

题目不就是hash(hash(a+b+c+X))=N嘛,会变吗?

️ 你忘记N是一串前面有若干个0开头的哈希值了吗?要得到前面是10个0的哈希值比得到前面是9个0的哈希值,难度可是数量级的提升啊!

比特币网络怎么提升难度呢?怎么决定哈希值是需要多少个0开头呢?

️ 每过两个星期的时间,比特币网络就会做一次判断,判断的逻辑是这样的:如果在两个星期即20160分钟之内,有超过2016个区块产生,那么,说明相对全网算力来说,难度低了,就需要提高难度;如果在两个星期内生产的区块不到2016个,则说明难度相对全网算力来说高了,需要适当调低难度。

哦,维持在平均10分钟生成一个区块。

️ 是的,这样的调整最终就可以把产生一个区块的时间大致控制在10分钟左右,那么,产生210000个区块的时间,就应该大约是整整四年。

比特币真的是设计得好用心。然而,问一句杞人忧天的话:比特币全部“挖”完了怎么办?2140年以后怎么办?

️ 这个问题已经考虑到了!

——————————————————————

《素为求智录》第二季 回顾链接

——————————————————————

《素为求智录》第一季1-15集 回顾链接

欢迎互动

《比特镇魂曲》明天将继续连载,欢迎添加“小素机器人”的个人微信号 Lawup1,找到志同道合的小伙伴,大家一起来聊‘法律与区块链、人工智能等信息科技’,您的真知灼见将有机会出现在后续的连载中哦~返回搜狐,查看更多

责任编辑:

声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
阅读 ()
投诉
免费获取
今日搜狐热点
今日推荐