當前位置:
首頁 > 新聞 > 準備好紙和筆,人肉計算比特幣:每天0.67哈希值

準備好紙和筆,人肉計算比特幣:每天0.67哈希值

在這篇文章中,我們一起來看一看用紙和筆來人肉「挖」比特幣的難度到底有多大。


實際上,用於挖礦的SHA-256演算法其實還算是比較簡單的了,而且可以手工計算出來。毫無疑問,這個過程肯定要比GPU或CPU的速度慢上N倍,而且還會讓人感覺有些不切實際。但是自己拿紙和筆手工完成一次挖礦演算法的計算,確實可以讓你更加深入地了解整個演算法的工作機制。

下圖顯示的是我們用紙和筆手工計算的一輪SHA-256:



挖礦過程


挖礦是比特幣系統整體安全的一個關鍵部分,挖礦的思路如下:比特幣礦工將一系列比特幣交易組織到一個區塊中,然後重複執行N次加密散列計算(哈希計算),直到發現了某個特殊的哈希值為止。此時,區塊已經成功被「挖」出,並且成為了比特幣區塊鏈的一個部分。實際上,計算任務本身是沒有什麼意義的,但由於發現一個成功的區塊非常困難,這樣就可以確保他人無法接管比特幣系統了。更多關於挖礦的內容,請參考這篇文章【閱讀原文】。


一個加密散列函數可以接收大量輸入數據,並輸出一個不可預測的輸出值。對於比特幣來說,它所使用的哈希散列函數名叫SHA-256,為了提供額外的安全保護功能,比特幣使用了兩次SHA-256函數,也就是所謂的雙重SHA-256。


在比特幣系統中,一次成功的哈希是以足夠多的0開始的。就像你在日常生活中很少會見到以多個0結尾的手機號或者身份證號一樣,我們也很難找到哪個哈希值是以多個0起始的。但是在比特幣系統中,一切都是以指數倍形式增加的。

目前,一次成功的哈希必須以大約17個0起始,所以哈希計算的成功率大約為1/1.4x1020。換句話說,尋找到一個正確的哈希值其難度比大海撈針還要難。


下面這張圖片顯示了比特幣區塊鏈中的一個區塊以及相應的哈希。下圖中,黃色標註的哈希位元組用於生成區塊哈希。大家可以看到,計算出來的哈希是以足夠多的0開始的,而現在就已經挖礦成功了。


比特幣所使用的SHA-256哈希演算法


SHA-256哈希演算法的輸入數據塊為512位(64位元組),結合加密數據,並生成一個長度為256位(32位元組)的輸出值。SHA-256演算法由64次相對簡單的重複計算組成,下圖顯示的是其中一輪計算,其中以8個4位元組數據作為輸入,從A到H,執行一系列計算之後,並生成新的A-H的值。



具體的計算過程請參考中本聰的比特幣白皮書【閱讀原文】。


人肉挖礦


我們在下面這個視頻中給大家演示了如何使用紙和筆人肉計算剛才所描述的SHA-256哈希計算。我自己實現了挖礦過程中的一輪哈希計算,整個過程大約花費了16分鐘左右的時間。

視頻地址【閱讀原文】


下圖顯示的是比特幣區塊的最後一輪哈希計算,計算出來的結果用黃色部分標註出來了。末尾部分的多個0表示這是一次成功的哈希計算。


硬體挖礦


SHA-256散列計算中的每一個步驟都可以在數字邏輯(簡單的布林運算和32位求和)中輕鬆實現,因此自定義的ASIC晶元可以在硬體上高效地實現SHA-256演算法,並且能夠在一塊晶元上並行地進行數百輪哈希計算。下圖顯示的是一塊挖礦晶元,它的計算速度為2-3 Ghash/秒:



相比之下,萊特比、狗幣以及類似的山寨幣所使用的是scrypt哈希演算法,而這種哈希演算法是很難在硬體上實現的。它需要在內存中存儲1024個不同的哈希值,然後以一種不可預知的方式來進行組合計算,並生成最終的值。


因此,scrypt哈希演算法跟SHA-256相比,它將需要更多的電路板以及存儲器。你也可以從挖礦速度和硬體上了解到,畢竟挖這些山寨幣的速度(scrypt)可比挖比特幣(SHA-256)的速度要慢好幾千倍。


總結


SHA-256演算法其實是非常簡單的,簡單到足以手工計算出來。但是,用於對比特幣交易進行簽名的橢圓曲線演算法卻是很難手工進行計算的,因為它將會涉及到32位元組整數的乘法運算。進行一輪SHA-256哈希計算用掉了我16分45秒的時間,根據這個速度來看,對一個完整的比特幣區塊(128輪)進行哈希計算將需要連續計算1.49天,即每天計算0.67哈希。相比之下,當前的比特幣挖礦硬體每秒可以進行好幾兆的哈希計算,這可比手動計算要快好多好多。毫無疑問,比特幣人肉挖礦肯定是不切實際的。


後記


有一個Redit的讀者問了我關於體能消耗的問題。其實整個過程並不需要消耗太多的體力,假設人體靜息代謝率為1500大卡每天,手動計算哈希所消耗的能量大約為1000焦耳/hash。而硬體挖礦的平均消耗為1000兆哈希/焦耳。這也就意味著,人肉挖礦的能量成本是硬體挖礦成本的10^16倍左右。考慮到食物問題的話,一個普通的甜甜圈價格為0.23美金,能量為200卡路里。電費大概是0.15美金/千瓦時,因此每計算一個哈希的成本比硬體挖礦的成本要高出6.7x10^8倍。


很明顯,我並不打算依靠人肉挖礦來賺錢,而且我還沒把計算所需的紙和筆的成本算進去呢。


* 參考來源:

righto

,FB小編Alpha_h4ck編譯,轉載請註明來自FreeBuf.COM

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

如何使用Burp和Magisk在Android 7.0監測HTTPS流量
年度盤點 | 2017年安全事件的背後:比特幣的隱秘江湖
2017年安全事件的背後:比特幣的隱秘江湖

TAG:FreeBuf |