想進一步了解區塊鏈技術和比特幣的小夥伴,就不得不翻越技術的圍牆,從技術的角度,「睜眼」看看區塊鏈世界裡第一個殺手級成功應用比特幣,看看中本聰為什麼能被稱為外星人,而提到區塊鏈的技術這就不得不提到,學習區塊鏈技術經常被使用到的一個知識——哈希函數。
雜湊函數是一種從任何一種資料中建立小的數字指紋的方法。雜湊函數把訊息或資料壓縮成摘要,使得資料量變小,將資料的格式固定下來。這個函數將資料打亂混合,重新建立一個叫做雜湊值的指紋。
百度百科和維基百科真有別稱的話,應該叫(專業到讓人)看不懂百科。給雜湊函數一個簡潔的白話定義:雜湊函數是一系列複雜的但輸出值位數固定的數學變換。
變換不能亂變換,要照著以下過程來:
1、任何長度的內容(資料)
2、經過這系列複雜但固定的數學變換後
3、會輸出一個固定長度和格式的資料(數值)
註腳:數學領域會用H() 表示這經過變更後輸出的數值,中文名叫訊息摘要或數位指紋。
例如,在比特幣中,公鑰產生位址時用到的雜湊函數 SHA256,後面的「256」的意思是輸出是固定 256 位元長度的資料。
這數學轉換不是任意變換都能稱為雜湊函數,數學變換要升級到雜湊函數必須符合三個條件:唯一性、單向性、暴力解:
1、雜湊函數的唯一性
直覺的理解就是:只有輸入X,才能得到H(X)。理解這個特性時,可以把哈希函數理解成你和你的指紋,你是輸入,你的指紋是輸出,唯一性就是指只有你才能有你的指紋,在比特幣裡就是指,你轉帳用的比特幣地址,只有你的公鑰才能生成,就像你的指紋是獨一無二的一樣,世界上沒有任何其他人能產生和你一樣的轉帳地址。
2、雜湊函數的單向性
雜湊函數的單向性是指H(X)是無法反向推導X。如果給你一個指紋,僅有一個指紋的你,是絕對想像不出指紋的主人到底是男是女,到底長什麼樣,只能知道這是個指紋。
雜湊函數的單向性可以用一個不準確但十分形象的類比來直觀地理解-來猜猜下巴的主人是誰?
這 Man 味十足的迷人下巴主人是白宇?是張震?還是趙又廷?謎底揭曉:是我們喜愛的坤坤,不是蔡徐坤,而是鄉村 F4 謝廣坤↓
##因為哈希函數的單向性,所以在比特幣裡,即使我們的收款地址是公開的,但沒人能知道我們產生收款地址的公鑰是什麼,更無法知道產生公鑰的私鑰是什麼。
市面上有一種言論說,量子電腦的出現會讓比特幣一文不值,但現在你應該知道,即使量子電腦出現可,目前也難以攻破哈希函數,哈希函數是中本聰為比特幣設置的安全鎖,希望比特幣有充足的時間升級到抗量子的加密演算法。
3、雜湊函數的暴力解
如果知道雜湊值H(X)真想找出輸入值X,只能從源頭出發,數一個數字去嘗試,每個數都套到雜湊函數裡,然後看看輸出的雜湊值是不是等於H(X)。
就像如果你真想知道某個指紋是誰的指紋,你只能全世界一個個人找過去,去對比每一個手裡的指紋和這個指紋,是不是完全相同,沒有絲毫偏差。 02
哈希函數因為這三個特性變成了中本聰手裡的利器,幫助他在設計比特幣的路上解決了多個難題,在在比特幣白皮書中,除了簡介和結論的10 個章節裡,幾乎每個章節都能看到哈希函數的使用。
· 用雜湊函數的唯一性用來防止作假-數位簽章
· 用雜湊函數的唯一性來提升效率-默克爾樹檢索交易記錄
· 用哈希函數的單向性用來保密——公鑰產生比特幣的地址
用哈希函數的暴力求解來設計比特幣的工作量證明——當範圍夠大的時候,拿著指紋去找指紋擁有人是不可能的事情,但如果把範圍縮小呢,比如在一個只有幾百萬人的城市裡找,難度就會小很多,這就是比特幣的mining難度調整機制,想要難度高一點那就把範圍擴大一點,想要難度低一點就把範圍縮小一點。
1953 年雜湊函數出現,1970 年雜湊函數蓬勃發展,2001 年SHA-256 出現,在2008 年時,雜湊函數卻在中本聰手裡被玩出了花,成為了區塊鏈技術裡不可撼動的基石。
從這個角度看,多少讓人理解了為什麼專家和大牛都忍不住誇讚中本聰天才,甚至懷疑中本聰是不是外星人。
至此,雖然比特幣白皮書中技術原理你只是懂了一個基礎知識哈希函數,但這一點都不妨礙你理解了比特幣白皮書裡 50%想要表達的內容。
以上是學習區塊鏈過程中的高頻概念:雜湊函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!