程 瑤,高麗芬,胡全貴
(1.中國(guó)礦業(yè)大學(xué)(北京),北京 100000;2.北京國(guó)網(wǎng)信通埃森哲信息技術(shù)有限公司,北京 100000)
POW是區(qū)塊鏈主流共識(shí)算法:工作量證明POW、權(quán)益POS、股份授權(quán)證明DPOS中一種,是由算力決定區(qū)塊的記賬權(quán)歸屬那個(gè)節(jié)點(diǎn)所有,那個(gè)節(jié)點(diǎn)先算出哈希函數(shù)的下一個(gè)隨機(jī)數(shù)數(shù)值,得到收益,即俗稱的“挖礦”。
例如以下的區(qū)塊鏈中一個(gè)區(qū)塊的基本結(jié)構(gòu):
以上區(qū)塊信息中“Nonce”就是這個(gè)隨機(jī)數(shù),各個(gè)節(jié)點(diǎn)通過算力計(jì)算出下一個(gè)區(qū)塊的Nonce,即擁有該區(qū)塊記賬打包的權(quán)利,并獲得Block Reward。
POW采用SHA256對(duì)區(qū)塊頭做雙重運(yùn)算,而SHA256是單向函數(shù),所以結(jié)果很難計(jì)算出來。節(jié)點(diǎn)在挖礦過程中,當(dāng)隨機(jī)生成的Hash值小于難度值則挖礦成功,例如以下節(jié)點(diǎn)挖礦的函數(shù):
在以上函數(shù)中,當(dāng)hashInt小于Block里面的target,則跳出循環(huán),輸出計(jì)算得出的nonce數(shù)值,即挖礦成功,得到挖礦的收益。
區(qū)塊作為區(qū)塊鏈存儲(chǔ)結(jié)構(gòu)中的數(shù)據(jù)元素,收尾相接促成單向鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),第一個(gè)元素為創(chuàng)始區(qū)塊,包塊共識(shí)機(jī)制的設(shè)置,出塊時(shí)間,礦工收益等初始參數(shù)設(shè)置。例如以下為一個(gè)區(qū)塊的創(chuàng)始區(qū)塊:
注釋:coinbaseTx 新建一鑄幣交易對(duì)象。
采用SHA256對(duì)區(qū)塊頭做雙重運(yùn)算,當(dāng)節(jié)點(diǎn)計(jì)算出的隨機(jī)數(shù)小于小于設(shè)置的難度值時(shí),則挖礦成功。