【微雜志】挖礦的七個步驟
挖礦的七個步驟
很多人都想知道在區(qū)塊鏈上是如何挖礦的?簡單而言,有下面七個步驟:
步驟一:
用戶進入錢包,執(zhí)行一個交易操作,他將一個加密貨幣或者一個代幣發(fā)送給另一個用戶。
步驟二:
現(xiàn)在這個交易被錢包廣播,等待區(qū)塊鏈上的礦工們來拾取它。在被拾取前,它會一直在“未確認交易池”中 等待。
所有等待被處理的交易都會在未確認交易池中。未確認交易池不是網(wǎng)絡上的一個巨大的池,而是很多小的分散的本地池。
步驟三:
區(qū)塊鏈網(wǎng)絡上的礦工(有時叫節(jié)點)從未確認交易池中選擇交易打包成數(shù)據(jù)塊。除了一些額外的元數(shù)據(jù)外,數(shù)據(jù)塊基本上就是交易數(shù)據(jù)(此時仍然是未確認交易)。每個礦工打包它們拾取的交易數(shù)據(jù)塊,多個礦工可以選擇同樣的交易數(shù)據(jù)打包。例如,兩個礦工,礦工A和礦工B都決定打包交易X。
每個區(qū)塊鏈對數(shù)據(jù)塊都有最大限制。在比特幣區(qū)塊鏈上,這個最大值是1兆字節(jié)(MB)。
在打包交易前,礦工需要先根據(jù)區(qū)塊鏈的歷史數(shù)據(jù)檢查這個交易是否有資格被打包。根據(jù)區(qū)塊鏈歷史數(shù)據(jù)記錄,如果支付者的錢包里有足夠的余額,這筆交易被認為是有效的,并且可以被打包上鏈。
假如一個比特幣持有者想要加速他的交易進度,他可以選擇支付更高的挖礦獎勵。礦工通常會優(yōu)先打包這些支付更高挖礦獎勵的交易。
步驟四:
礦工的工作就是選擇交易數(shù)據(jù)并打包成塊。要把這些塊添加到區(qū)塊鏈上(這意味著讓區(qū)塊鏈上所有節(jié)點都接受這個塊的數(shù)據(jù)),這個數(shù)據(jù)塊首先需要簽名(也叫“工作證明”)。這個簽名是在解決了一個非常復雜的數(shù)學問題后得到的,這個簽名是獨一無二的。每個區(qū)塊需要解決的數(shù)學問題難度是一樣的。為了解決這個數(shù)學問題,需要耗費相當多的算力(所以,要消耗相當多的電力)。這個過程就被叫做挖礦。
挖礦即哈希(工作量證明)
礦工在打包塊時需要解決的數(shù)學問題實際上就是找到一個以一定量的零開頭的哈希函數(shù)輸出結果(就是簽名)。
開始之前,我們需要先了解一下什么是哈希函數(shù)。哈希函數(shù)的輸入值可以是任意字符串,隨機輸出一個32位字母和數(shù)字的字符串。如果輸入中有任何一點小小的變動, 輸出也將會隨機改變。
礦工要打包的交易數(shù)據(jù)就是一個字符串,將它進行哈希計算, 就會得到一個32位的輸出值。比特幣區(qū)塊鏈有一個規(guī)則,要求打包的數(shù)據(jù)塊簽名必須以一定數(shù)量的零開頭。然而哈希計算的輸出值是對它的每個輸入值都是隨機的,那么, 輸入的字符串哈希后沒有得到這么多零開頭的值怎么辦呢?這就是為什么礦工需要不斷的去改變塊里面一個叫“nonce”的值,每改變一次nonce的值,就會改變塊的數(shù)據(jù),哈希運算后得到的簽名也會不一樣,也就是,每改變一次nonce的值,就會得到一個全新的簽名。
礦工無限次重復改變nonce的值,直到得到一個符合要求的簽名。
這就是礦工們?yōu)槭裁葱枰獮樗鼈兇虬臄?shù)據(jù)塊找到一個合格的簽名,也是需要那么多算力來解決這個數(shù)學問題的原因。試想一下需要這么多次更改nonce值并計算需要多少時間和算力呀。此外,當更多的礦工加入到區(qū)塊鏈,哈希運算的難度也將增加并且會導致更高的電費支出。現(xiàn)在我們繼續(xù)第五步。
步驟五:
礦工找到了一個合格的簽名, 他就可以向其他所有礦工廣播他的數(shù)據(jù)塊和簽名。
步驟六:
其他礦工現(xiàn)在要確認通過廣播收到的數(shù)據(jù)塊簽名的合法性,他們要對這個數(shù)據(jù)塊進行哈希運算,檢查它是否輸出一個以這么多零開頭的簽名。如果可以,其他礦工就會認為這個數(shù)據(jù)塊有效,并且同意將它添加到區(qū)塊鏈上(他們達成了共識,即他們所有礦工都同意彼此, 所以術語叫共識算法)。這也是“工作量證明”的來源。簽名就是礦工工作的證明(已花費的算力)。現(xiàn)在, 數(shù)據(jù)塊可以加到區(qū)塊鏈上了,并且分發(fā)到網(wǎng)絡上所有其他節(jié)點。只要這個數(shù)據(jù)塊中的所有交易數(shù)據(jù)都跟區(qū)塊鏈上的歷史數(shù)據(jù)符合,其他節(jié)點將接收這個數(shù)據(jù)塊并將其保存。
步驟七:
當一個數(shù)據(jù)塊被添加到區(qū)塊鏈上后,這條區(qū)塊鏈上的所有塊都認為它是正確的。例如,我的交易包含在第502號塊中,并且這條區(qū)塊鏈現(xiàn)在最長是第507號塊,它的意思就是說我的交易數(shù)據(jù)被確認過5次(507-502)。它被認為是正確的,因為每次有其他塊上鏈的時候,區(qū)塊鏈都會就所有交易記錄達成共識, 包括你的交易和你的塊。到這個時候,你交易已經被確認了5次。這也是區(qū)塊鏈導航在顯示交易詳細信息時所指的。你的交易被確認的次數(shù)越多(即嵌入?yún)^(qū)塊鏈越深),攻擊者就越難更改它。每當新的塊加入到 區(qū)塊鏈,所有礦工都需要從第三步 重新開始,打包一個新的交易數(shù)據(jù)塊。至此,整個挖礦步驟就完成了。
需要注意的是,在完成一個塊上鏈前,礦工們不能繼續(xù)挖礦。
1. 它可能包含添加到區(qū)塊鏈上已經確認過的交易(請記住,多個礦工可以選擇同一個交易數(shù)據(jù)處理),任何重新發(fā)起的交易都可能導致它們無效,因為支付者的余額可能已經不足。
2. 每個塊都需要將區(qū)塊鏈上的最后一個塊的哈希簽名添加到到他們自己的元數(shù)據(jù)中。這也是讓數(shù)據(jù)塊鏈起來的原因。假如一個礦工打包的是已經上鏈的塊,其他礦工會注意到它的簽名和區(qū)塊鏈上最后一個數(shù)據(jù)塊對不上,并且拒絕這個塊。
轉載請在文章開頭和結尾顯眼處標注:作者、出處和鏈接。不按規(guī)范轉載侵權必究。
未經授權嚴禁轉載,授權事宜請聯(lián)系作者本人,侵權必究。
本文禁止轉載,侵權必究。
授權事宜請至數(shù)英微信公眾號(ID: digitaling) 后臺授權,侵權必究。
評論
評論
推薦評論
暫無評論哦,快來評論一下吧!
全部評論(0條)