時間:2023-07-08|瀏覽:387
在比特幣網(wǎng)絡(luò)中,有很多挖礦節(jié)點和礦工參與創(chuàng)建比特幣新區(qū)塊。如果多個挖礦節(jié)點都創(chuàng)建了同一個高度的區(qū)塊,那么該確定哪個區(qū)塊更合法呢?比特幣引入了PoW(ProofofWork)共識機制,通過挖礦的方式來競爭新區(qū)塊的記賬權(quán)。誰獲得新區(qū)塊的記賬權(quán),誰就創(chuàng)建的新區(qū)塊就是合法的。挖礦的目的就是贏得記賬權(quán),并確認新區(qū)塊和交易。那么挖礦節(jié)點和礦工是如何協(xié)作完成挖礦的呢?
礦工破解挖礦任務(wù)。挖礦節(jié)點創(chuàng)建好預(yù)備區(qū)塊后,將預(yù)備區(qū)塊的區(qū)塊頭數(shù)據(jù)發(fā)送給礦工。礦工收到挖礦任務(wù)后,會遞增區(qū)塊頭中的隨機數(shù)。每次調(diào)整后,根據(jù)比特幣協(xié)議規(guī)定,用SHA256算法計算區(qū)塊頭的哈希值。如果區(qū)塊頭的哈希值大于目標哈希,就繼續(xù)改變隨機數(shù),直到區(qū)塊頭的哈希值小于或等于目標哈希為止(或者挖礦節(jié)點發(fā)現(xiàn)新區(qū)塊已經(jīng)被其他節(jié)點挖出,這時會放棄原來的挖礦任務(wù),構(gòu)造新的預(yù)備區(qū)塊,區(qū)塊頭是否合法(區(qū)塊頭哈?!躎argetHash);區(qū)塊頭的MerkleRoot哈希和區(qū)塊中交易數(shù)據(jù)的MerkleRoot哈希是否一致(驗證交易是否被篡改);交易數(shù)據(jù)中第一筆是否為Coinbase交易;區(qū)塊中每一筆交易是否合法等等。
挖礦節(jié)點向全網(wǎng)廣播新區(qū)塊。挖礦節(jié)點在本地保存新區(qū)塊后,會向比特幣網(wǎng)絡(luò)廣播挖礦結(jié)果。由于整個區(qū)塊的體積較大,一般會先廣播區(qū)塊頭。其他節(jié)點收到廣播后,會先驗證區(qū)塊頭信息,驗證通過后,在本地區(qū)塊索引庫中創(chuàng)建新區(qū)塊的索引。在接收到新區(qū)塊的全部信息后,節(jié)點會驗證交易信息和區(qū)塊頭的MerkleRoot哈希,驗證通過后,節(jié)點將這些交易信息錄入新區(qū)塊,并延長本地區(qū)塊鏈。至此,新區(qū)塊的廣播和驗證完成,挖礦節(jié)點開始下一個區(qū)塊的挖礦工作。