1.POW(工作量證明)
如上所述,為了鼓勵人們主動記賬,中本聰決定給記賬的人發獎勵,這就是“
比特幣”的由來。而記賬的人就是“礦工”。
由于不同的“礦工”都希望獲得記賬權,為了給每個區塊選擇一個全網認可的“礦工”,就需要 “礦工”給出一個證明,就是所謂“工作量證明”, 選出的礦工可以獲得12.5個比特幣作為獎勵。
獎勵以每四年減一半的速度遞減,礦工的收益的另一部分來自于每筆交易產生的手續費,到2140年無幣可獎勵的時候,礦工的獎勵將全部來自于交易的手續費。
現在關鍵來了,工作量證明是什么意思?
還是以乒乓球比賽為例。如果有一個人來計分,我們會希望他們不能太慢,但是也不能太快。太慢的話,會積累很多比分要記錄,最后大家都要等他們。太快的話,會干擾我們的正常比賽。大家比賽中間要停下來,跟他們談話,這個效率很低。
為了保證節點之間的同步,新區塊的添加速度不能太快。
區塊鏈的發明者中本聰故意讓添加新區塊變得很困難。只有通過極其大量的計算,才能找到一個隨機值,使得區塊的哈希值符合一定的條件。這個過程就叫做挖礦(Mining)。
“礦工” 的工作其實就是猜出這個隨機項的值,使得區塊的哈希值可以小于目標值,從而能夠寫入區塊鏈。這個隨機項的值,必須通過窮舉計算來獲得,也就是說,所有的礦工(計算機)必須反復不停地嘗試從0開始的所有整數,直到他們找到這個隨機值(nounce)。找到了,他們就發財了。
舉個簡單的比喻,“挖礦” 的過程其實類似于打麻將, 四方最后有一方湊出了胡牌的牌型,就當與生成了一個達到要求的區塊哈希值,胡牌的人就成了 “礦工”,得到相應的獎賞(比特幣)。胡完一牌,就是一個區塊生成,所以當前交易記錄在內。
然后大家接著下一局,繼續湊胡牌牌型。如果一局沒有人胡牌,也就是大家花了時間,但是沒有生成區塊,就重新開局。如果投入的時間/資源,小于獲得的獎賞,這個礦工就虧了。但是,如果有人摸了兩把就胡牌了,相當于很快就找到了這個哈希值, 這個礦工就大賺了。
這樣,全世界成千上萬臺“礦機”們,都在不眠不休地計算中本聰出的這道數學題,為獲得獎勵的比特幣而“廢寢忘食”,這就是工作量證明的原理。
具體來說,工作量證明(PoW) 或者說挖礦算法,目的就是尋找一個特殊的數字(nounce),使得哈希值(即SHA256 函數)的輸出字符串的前n位是零。
所以,通過POW,我們可以找到一個礦工。但是網絡上有那么多的節點,怎么確保所有節點都使用同一個區塊鏈呢?
中本聰為此提出了著名的一致性判別方法:如果一個節點的區塊鏈與另外一個節點的不同,這就意味著沖突。解決這個問題的辦法就是,“最長的有效的鏈”應當獲得認可。換句話說,網絡上最長的鏈就是事實上的標準鏈。
利用這種算法,我們可以在我們網絡中的所有節點中達成共識。PoW的本質,是選擇計算量最大的鏈條最為主鏈條。這樣,即使有人惡意破壞,也要付出大量的經濟成本,達到不可承受的程度。
舉個例子,如果你去一個醫院柜臺排隊,有好幾條隊,你應該選擇哪一條?按照中本聰的規則,你應該派最長的那條隊,因為里面的人排得最久,所以最不容易被保安驅散。
也就是說,這套機制會找出最長的一條隊伍是合法的,獎勵其中排得久的人,并讓不合法的分叉隊伍重新排隊。只要大部分人不傻,就會自覺在最長的隊伍上排隊。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。