凤凰网科技讯 北京时间7月10日消息,控制阿波罗飞船登月的阿波罗导航计算机(以下简称“AGC”),是美国航空航天局阿波罗载人登月项目取得的众多技术突破之一。在那个计算机大小与冰箱相当,甚至塞满一间房子的年代,AGC重量仅为约70磅(31.75千克)。它还是首批采用集成电路的计算机之一。
一个计算机历史学家获得了一台AGC,并使之恢复运行。该团队的成员之一肯·谢里夫(Ken Shirriff)决定看看它在比特币挖矿方面的表现。
挖矿是维护比特币区块链过程的关键部分。只有解决一个难题,用户才能获得在区块链中添加一个区块的权利:找到一个SHA-256哈希值具有最少0的区块。当前已知完成这一任务的唯一方式是强大的算力:矿工创建一个带有随机数的区块,计算其哈希值。如果哈希值的前导0个数不够多,矿工会改变随机数,然后再次尝试计算其哈希值。
合格的区块要求的0的个数会自动调整,使网络能平均每10分钟生成一个新区块。目前,一个区块的哈希值需要至少约18个0(16进制)才能被网络接受——相当于尝试约1022次才能发现一个有效的区块。
目前,大多数比特币挖矿活动都是由专用硬件完成的,它们每秒能计算数万亿个哈希值。相比之下,谢里夫为AGC编写的挖矿软件就慢多了:每计算一个哈希值需要约10秒。
谢里夫写道,“阿波罗导航计算机运行太慢了,要成功挖到一枚比特币,它需要相当于宇宙年龄约10亿倍的时间。”宇宙年龄被广泛认为是138亿年,这意味着AGC挖出一个比特币的时间约为1380亿亿年。
这一差异反映了过去50年计算机硬件的飞速发展。在摩尔定律“推动”下,现代芯片集成有多得多的晶体管,时钟频率也要高得多。定制的挖矿ASIC(专用集成电路)能够并行计算大量哈希值。
不过谢里夫也遇到了其他问题:AGC的特异之处也使得它不适合用来挖比特币。例如,AGC中一个字的长度为15位,现代计算机中一个字的长度通常为32位或64位。SHA-256算法进行大量的32位计算,因此谢里夫必须将每个32位的整数划分为3个部分——一个部分为4位、两个部分为14位——对各个部分单独计算。
AGC还不支持移位和循环指令——现代计算机的标配、被大量应用在SHA-256算法中,谢里夫不得不通过子例程完成这些操作。
AGC有限的内存也影响了其挖矿能力,“与1960年代的大多数计算机一样,AGC也使用了磁芯存储器,在每个微型磁化铁氧体中存储1位数据。由于磁芯存储器尺寸相对较大,AGC的存储容量仅为2K字(约为4K字节)。AGC的寻址方案给编程带来了更高的复杂性,除非使用一种不方便的存储体切换机制,用户通常只能使用256字的内存容量。问题是SHA-256算法利用8个(32位)哈希值,1个64字的消息表和8个字的中间值,它们就会占去240个AGC字的内存,只给其他指令留下16个字的内存,其中包括中间值、子程序返回地址、循环计数器、指针等。通过重用这16个字的内存容量,我将算法塞在一个存储体中,但我用了很长时间调试软件。”
这并非谢里夫第一次在“老爷”计算机上部署挖矿算法。数年前,他曾成功在一台1960年代生产的IBM 1401计算机上部署挖矿算法。这台计算机挖矿的速度比AGC还要慢,80秒才能计算一个哈希值。谢里夫还在一台1970年代生产的施乐Alto计算机上部署了挖矿软件——每秒能计算1.5个哈希值。