阿波羅飛船計(jì)算機(jī)挖礦能力如何?挖個幣需1380億億年
北京時間7月10日消息,控制阿波羅飛船登月的阿波羅導(dǎo)航計(jì)算機(jī)(以下簡稱“AGC”),是美國航空航天局阿波羅載人登月項(xiàng)目取得的眾多技術(shù)突破之一。在那個計(jì)算機(jī)大小與冰箱相當(dāng),甚至塞滿一間房子的年代,AGC重量僅為約70磅(31.75千克)。它還是首批采用集成電路的計(jì)算機(jī)之一。
一個計(jì)算機(jī)歷史學(xué)家獲得了一臺AGC,并使之恢復(fù)運(yùn)行。該團(tuán)隊(duì)的成員之一肯·謝里夫(Ken Shirriff)決定看看它在比特幣挖礦方面的表現(xiàn)。
挖礦是維護(hù)比特幣區(qū)塊鏈過程的關(guān)鍵部分。只有解決一個難題,用戶才能獲得在區(qū)塊鏈中添加一個區(qū)塊的權(quán)利:找到一個SHA-256哈希值具有最少0的區(qū)塊。當(dāng)前已知完成這一任務(wù)的唯一方式是強(qiáng)大的算力:礦工創(chuàng)建一個帶有隨機(jī)數(shù)的區(qū)塊,計(jì)算其哈希值。如果哈希值的前導(dǎo)0個數(shù)不夠多,礦工會改變隨機(jī)數(shù),然后再次嘗試計(jì)算其哈希值。
合格的區(qū)塊要求的0的個數(shù)會自動調(diào)整,使網(wǎng)絡(luò)能平均每10分鐘生成一個新區(qū)塊。目前,一個區(qū)塊的哈希值需要至少約18個0(16進(jìn)制)才能被網(wǎng)絡(luò)接受—;—;相當(dāng)于嘗試約1022次才能發(fā)現(xiàn)一個有效的區(qū)塊。
目前,大多數(shù)比特幣挖礦活動都是由專用硬件完成的,它們每秒能計(jì)算數(shù)萬億個哈希值。相比之下,謝里夫?yàn)锳GC編寫的挖礦軟件就慢多了:每計(jì)算一個哈希值需要約10秒。
謝里夫?qū)懙?,“阿波羅導(dǎo)航計(jì)算機(jī)運(yùn)行太慢了,要成功挖到一枚比特幣,它需要相當(dāng)于宇宙年齡約10億倍的時間?!庇钪婺挲g被廣泛認(rèn)為是138億年,這意味著AGC挖出一個比特幣的時間約為1380億億年。
這一差異反映了過去50年計(jì)算機(jī)硬件的飛速發(fā)展。在摩爾定律“推動”下,現(xiàn)代芯片集成有多得多的晶體管,時鐘頻率也要高得多。定制的挖礦ASIC(專用集成電路)能夠并行計(jì)算大量哈希值。
不過謝里夫也遇到了其他問題:AGC的特異之處也使得它不適合用來挖比特幣。例如,AGC中一個字的長度為15位,現(xiàn)代計(jì)算機(jī)中一個字的長度通常為32位或64位。SHA-256算法進(jìn)行大量的32位計(jì)算,因此謝里夫必須將每個32位的整數(shù)劃分為3個部分—;—;一個部分為4位、兩個部分為14位—;—;對各個部分單獨(dú)計(jì)算。
AGC還不支持移位和循環(huán)指令—;—;現(xiàn)代計(jì)算機(jī)的標(biāo)配、被大量應(yīng)用在SHA-256算法中,謝里夫不得不通過子例程完成這些操作。
AGC有限的內(nèi)存也影響了其挖礦能力,“與1960年代的大多數(shù)計(jì)算機(jī)一樣,AGC也使用了磁芯存儲器,在每個微型磁化鐵氧體中存儲1位數(shù)據(jù)。由于磁芯存儲器尺寸相對較大,AGC的存儲容量僅為2K字(約為4K字節(jié))。AGC的尋址方案給編程帶來了更高的復(fù)雜性,除非使用一種不方便的存儲體切換機(jī)制,用戶通常只能使用256字的內(nèi)存容量。問題是SHA-256算法利用8個(32位)哈希值,1個64字的消息表和8個字的中間值,它們就會占去240個AGC字的內(nèi)存,只給其他指令留下16個字的內(nèi)存,其中包括中間值、子程序返回地址、循環(huán)計(jì)數(shù)器、指針等。通過重用這16個字的內(nèi)存容量,我將算法塞在一個存儲體中,但我用了很長時間調(diào)試軟件?!?/p>
這并非謝里夫第一次在“老爺”計(jì)算機(jī)上部署挖礦算法。數(shù)年前,他曾成功在一臺1960年代生產(chǎn)的IBM 1401計(jì)算機(jī)上部署挖礦算法。這臺計(jì)算機(jī)挖礦的速度比AGC還要慢,80秒才能計(jì)算一個哈希值。謝里夫還在一臺1970年代生產(chǎn)的施樂Alto計(jì)算機(jī)上部署了挖礦軟件—;—;每秒能計(jì)算1.5個哈希值。