比特币是世界上第一種成功的加密貨币,之前的嘗試都沒有像比特币這樣有效解決有關貨币的各種問題。
比特币本身是密碼學發展的産物,利用了密碼學中的很重要的“單向散列函數”以及數字簽名兩大技術來構建,今天我們來集中精力講解單向散列函數的5種重要的特性,以及比特币挖礦相關的技術原理。
下面我們先講哈希函數的特性:
單向散列函數(one-wayhash function),也就是通俗叫的哈希函數。
第一個特點:輸入可以任意長度,輸出是固定長度
哈希函數不用知道輸入信息代表的是什麼意思,也無所謂信息的長度有多長,隻要輸入hash函數出來的都是固定長度的比特值。比如非常有名的SHA256 哈希函數,輸入任何值出來的都是256比特的0和1. 輸入一本《三國演義》或者僅僅輸入一個字母a,出來的都是256位比特長度的數據。
第二個特點:計算hash值的速度比較快
這一點經常被大家所忽略,似乎是習以為常的東西就不去在意,其實這一點同樣重要,因為單向哈希的計算很快,才能保證加密或者驗證的速度。
你要得到一個hash值前面K位是0。你無法知道怎麼得到前面是這麼多0的x。
挖礦就是找nonce,就是這個随機數。
H(block header nonce)≤target
這就是比特币挖礦的基本原理,就是哈希碰撞去找到這個nonce,讓他小于一個target(比如32個0等等)。Block header(或者block head)就是區塊頭包括的信息都是所有礦工都知道的信息(比如version,prehash,merkle root,ntimenbits等等信息),所以大家競争的是誰先猜出來nonce。
備注:在二進制的世界裡,因為每一位比特都是0或者1,所以比大小,就是比前面的0的數量,前面32位是0,自然小于前面31位是0(第32位是1),這個target的所謂比大小也就是限定個範圍,因為sha256出來的數字都是256位的二進制數字(哈希函數輸出值長短固定的特性),比誰前面的0多是很方便的劃定結果值的區域的方式。這一點大家忽略的人很多,其實是一個很基礎的數學知識,值得注意。
挖礦的基本思想就是來自上述的信息。在比特币中的挖礦的過程裡實際上就是去找nonce也就是确定了輸出範圍後,去找輸入的值。H(block header nonce)≤target
當輸入的值(各種信息 nonce)進行hash運算後得到的值符合target的範圍,比如說前面35個0就可以了,你猜出來的值輸入後得到hash值前面40個都是零,那麼肯定符合要求,實際上前面35個0就滿足條件了嘛。
然後你把這個信息公布出去,别的礦工看到你的nonce值,也去hash一下,很快就知道你這個nonce是合适的,可以滿足target的要求。這裡就用到了哈希函數的計算速度快的特性(第二個特性)。
本文總結了單數散列函數也就是哈希函數的特性,這就是很多區塊鍊應用的基礎以及比特币加密挖礦的基本原理。文章開頭說過,比特币運用的密碼學除了函數函數,還有一個非常重要的内容是:數字簽名。這個我們很快就會講到。
目前世界上所謂的區塊鍊落地應用,其實有時候用的是比特币的數據結構(默克爾樹等),有時候用的是UTXO模型來結算。有的時候說是溯源,有的時候說是合約。很多的應用出來,不管是什麼樣的概念,多數都要用到哈希函數,利用哈希函數5種特性中的一部分。
随着文章講解的深入,關于比特币,關于行業的信息都在展開,慢慢的大家更能明白,為什麼說哈希函數是比特币和區塊鍊行業的基礎了。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!