八、區塊、hash、挖礦
好了,明白了轉賬過程,我們要進一步講解區塊、區塊鏈,只有這樣我們才能真正明白“挖礦”的原理,了解比特幣是如何創造出來的。
我們先前是這樣簡單描繪的:在比特幣的世界里,每時每刻都會發生很多類似Alice轉賬Bob的交易,我們把每十分鐘內的交易記錄,就叫做區塊。把比特幣一誕生就開始的所有交易記錄都鏈接起來,也就是把這些區塊連接起來,就構成了區塊鏈——Block chain。整個網絡上的電腦都在搶奪新生區塊的記賬權利,誰搶到這個記賬的權利,誰就可以獲得這個區塊創造出來的比特幣。現在要對此深入解讀。
我們可以這樣想象,每一個區塊就是一個塊、一個方方的區塊;每個區塊都有自己的標記、也就是有自己ID。這個ID可不是隨便定的,而是整個區塊的hash值,也就是將這個區塊的所有信息hash之后所得的那個數字,這個hash值是唯一的,并且與此區塊綁定;
每個區塊的第一層是上一個區塊的hash值,表明這個區塊排在上個區塊后面,然后中間層是這一個區塊的交易記錄,底層是一個隨機數。一到三層的內容會生成區塊的hash值,即本區塊的id。所謂挖礦,就是去猜底層的隨機數,一旦才對了隨機數,也就解出來這個區塊的hash值。為什么呢?因為本區塊的前兩層信息是公開已知的,而只有底層隨機數是不公開的,所以誰猜到了隨機數,也就可以解出本層的hash值。
那這個隨機數又是怎么猜的呢?是用暴傻方式猜的,又暴力又傻逼的方式,此所謂窮舉暴力嘗試法。就是各位礦工一個數字一個數字地試,直到有人到率先找到第一個符合這個規則的hash值。簡單地說,就是新區塊的hash值已被網絡所確定,而礦工在不斷計算、并核對,一旦哪位算對了,網絡就給予確認,然后獎勵他比特幣。更確切地說,是網絡事先定下了一個規則、一個公開的規則,比如說:要求這個hash值前面有15個0開頭,哪個礦工率先找到第一個符合這個規則的隨機數、就算猜出了這個hash值,他就會向全網廣播“各位挖礦的labor們,你們不用算了,我算出來了,這個隨機數是xx,這個hash值是xxx”,正在埋頭苦干的礦工們一驗算,發現這貨算出來的hash值果然滿足規則,嘴里嘟囔了一句shit,趕緊把這個hash值作為本區塊的表示,并在這個區塊的基礎上繼續計算下一個區塊的hash值,心中默念:下回就該我搶先一次了。
由于hash值是這個區塊的唯一標識,而且隨意更改一點信息就會顯著改變這個hash值,所以比特幣世界的歷史交易記錄是不可能被篡改的。具體來說,每一個區塊的hash值=上一個區塊hash值 本區塊的交易記錄+本區塊的隨機數。如果我們篡改了交易記錄,這個hash值就會改變,這就不被認證,就不允許了。所以一旦生成一個區塊,其配套的hash值成為唯一標識,且不可更改。
估計很多朋友更關心區塊底層的隨機數,那到底起了一個什么作用。首先當然是讓礦工去猜去計算、去暴力嘗試,另外它還起到一個作用,就是去平衡算力,從而保證是平均每10分鐘產生一個區塊。如果礦工的設備變得先進了,引進了什么阿爾法狗呀、貓呀的都來了,那全網算力就提高了;那怎么辦?很簡單,就會增大隨機數的難度,還是能平衡在每10分鐘左右產生一個區塊。比如,本來系統要求hash值前面有15個0開頭,但如果算力上升,系統就要求尋找hash值開頭必須有20個0,難度就陡然加大了;反正是不能讓你上房揭瓦,好好挖礦,就是10分鐘一個區塊。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。