區(qū)塊鏈為了實現(xiàn)歷史數(shù)據(jù)的不可篡改,采用的方法是,讓每個參與者都保持有一個數(shù)據(jù)庫賬本,也就是說,全網(wǎng)只有一條鏈是大家公認的,然后讓每個人都保存一份,這樣就沒人可以抵賴了。
就好比在農(nóng)業(yè)社會的時候,在一個小村落里,誰干了什么好事或者壞事,誰欠了誰家?guī)字浑u幾頭牛,大家很快口口相傳,每家每戶每個人心里都有一個賬本,故事都在大家的記憶里,沒人可以抵賴。但是在信息時代,全網(wǎng)數(shù)據(jù)量和交易量激增,每秒鐘都有大量的交易產(chǎn)生,如何保證井然有序的記賬呢?如果交易信息隨時在網(wǎng)絡(luò)中蔓延,沒有一個機制去規(guī)范交易確認的過程,那么這種記賬方式將無法運轉(zhuǎn)。
如果可以每隔一段時間,比如說十分鐘,才能生成一個新的賬目頁,網(wǎng)絡(luò)中的節(jié)點就有時間去驗證這個賬目頁中的交易數(shù)據(jù)了。以比特幣網(wǎng)絡(luò)為例,每一條交易發(fā)生后,會發(fā)送到網(wǎng)絡(luò)中,參與記賬的節(jié)點將這些交易打包到區(qū)塊中,會逐個檢查這些交易記錄是否符合要求。當交易記錄填滿新區(qū)塊的時候,還需要做一個額外的工作,才能將交易打包,生成新區(qū)塊。區(qū)塊生成的過程也就是所謂的“挖礦過程”。那些貢獻算力去參與新區(qū)塊生成的朋友們被稱為“礦工”。
這個額外的工作分為兩步:
第一步:將新制作的區(qū)塊所包含的內(nèi)容 【 前一個區(qū)塊的哈希值(SHA256函數(shù)值) + 這個新區(qū)塊的基本信息 + 這個新區(qū)塊所包含的所有交易記錄 】組成一個字符串。這里的前一個區(qū)塊的哈希值是指,將前一個區(qū)塊的所有內(nèi)容輸入SHA256函數(shù)后所得到的結(jié)果值。由于每一個區(qū)塊和它所對應(yīng)的SHA256函數(shù)值一一對應(yīng),所以區(qū)塊的SHA256函數(shù)值就代表著這個區(qū)塊。
第二步:找一個隨機數(shù)(nounce),在第一步組成的字符串的末尾添加上這個隨機數(shù),組成新字符串。將這個新字符串輸入 SHA256 函數(shù),得到一個256位的二進制數(shù)。如果找到的這個隨機數(shù)能使得,本次SHA256函數(shù)運算得到的256位的二進制數(shù),滿足特定的挖礦難度(挖礦難度會不斷調(diào)整,我們在這里假設(shè),前70位都是0),才算成功完成了這個額外的工作。
挖礦難度(difficulty)的設(shè)置,讓這個額外工作的難度非常的高,高到整個比特幣網(wǎng)絡(luò)大概只有一個礦工能在10分鐘左右的時間找到這個隨機數(shù)。SHA256 函數(shù)的特點是,雖然每個輸入值對應(yīng)一個輸出值,而且每個輸出值都是一個256位的二進制數(shù),但每次運算的輸出值具體是什么完全是隨機的,而且無法預(yù)測,找到符合要求隨機數(shù)的唯一方法就是以最快的速度輸入不同的隨機數(shù),不斷地嘗試。按照我們目前假定的挖礦難度,前70位數(shù)字中,第一位為0的概率為二分之一,因為第一位可能為1,也可能為0。這里可以類比拋硬幣,拋一枚硬幣,可能是正面,也可能是反面,是正面的概率為1/2。前兩位都為0的概率為1/2乘以1/2。前70位都為0的概率為2的70次方分之一。也就是說,平均要嘗試2的70次方個隨機數(shù)(1180591620717411303424),才能找到那個符合要求的隨機數(shù)。也就是說,平均要進行2的70次方次的SHA256函數(shù)運算,才能得到符合要求的隨機數(shù)。
挖礦難度是隨著全網(wǎng)算力的提升不斷調(diào)整的,目的是為了保證每十分鐘只有一個新區(qū)快生成,即整個比特幣網(wǎng)絡(luò)上的所有礦工節(jié)點上的所有計算設(shè)備一起做運算,平均每十分鐘才能完成這個工作量。如果全網(wǎng)的算力提高了,挖礦難度可能會調(diào)整為:得到的256位二進制數(shù)的前71位都為0。因為找到這個隨機數(shù)完全靠運氣,有時候運氣好一些,可能三分鐘,四分鐘,就能找到這個隨機數(shù)。有時候運氣差一些,可能要十幾分鐘才能找到這個隨機數(shù)。但一般是平均十分鐘,才能找到一個滿足要求的隨機數(shù)。因為完全靠運氣,所以到底哪個礦工的計算設(shè)備先找到這個隨機數(shù)也完全是隨機的。
所以消耗了巨大的算力去挖礦,挖的不是幣,而是記賬權(quán)。這也是記錄全網(wǎng)記憶的權(quán)力,這個權(quán)力至高無上,需要代價,也會得到獎勵。最先找到符合要求的隨機數(shù)的礦工會得到系統(tǒng)一定數(shù)量的比特幣作為獎勵。隨著比特幣被越來越多的人所接受,比特幣的價格水漲船高,利益會激勵礦工去參與記賬和維護網(wǎng)絡(luò)正常運轉(zhuǎn)的積極性。