阿波羅飛船計算機挖礦能力如何?挖個幣需1380億億年
控制阿波羅飛船登月的阿波羅導航計算機(以下簡稱“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個哈希值。(作者/霜葉)