POW挖矿流程
POW挖礦具體流程
何為pow挖礦?礦工收益的多少,取決于礦工的貢獻(xiàn)值,也就是工作證明,挖礦的收益取決于自己的算力、全網(wǎng)算力和挖礦難度三要素。自己擁有的算力越高,全網(wǎng)算力越低,挖礦難度越小,能挖到的幣才越多。全網(wǎng)算力就是一種幣所有礦機(jī)算力之和。
主要有三個(gè)模塊,Block模塊、BlockChain模塊、POW模塊即挖礦模塊,從定義一個(gè)區(qū)塊開(kāi)始,一個(gè)區(qū)塊中包含的信息有區(qū)塊信息,時(shí)間戳,前區(qū)塊哈希值,現(xiàn)區(qū)塊哈希值,經(jīng)過(guò)挖礦后得到的哈希碰撞值等等
工作量證明( PoW )通過(guò)計(jì)算一個(gè)數(shù)值( nonce ),使得拼揍上交易數(shù)據(jù)后內(nèi)容的 Hash 值滿(mǎn)足規(guī)定的上限。在節(jié)點(diǎn)成功找到滿(mǎn)足的Hash值之后,會(huì)馬上對(duì)全網(wǎng)進(jìn)行廣播打包區(qū)塊,網(wǎng)絡(luò)的節(jié)點(diǎn)收到廣播打包區(qū)塊,會(huì)立刻對(duì)其進(jìn)行驗(yàn)證
為了實(shí)現(xiàn)對(duì)交易打時(shí)間戳,Hash交易數(shù)據(jù),通用工作量證明方法。網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)從事于解決一個(gè)適度困難的密碼難題。難題的解決方法是:把區(qū)塊中的所有數(shù)據(jù)做SHA256哈希運(yùn)算,并且得到哈希值小于給定的目標(biāo)值。區(qū)塊中還包含一個(gè)Nonce值,通過(guò)遞增Nonce來(lái)尋找正確的哈希值。這個(gè)密碼謎題被設(shè)計(jì)成,每隔一段時(shí)間會(huì)找到一個(gè)謎題答案。SHA256算法將根據(jù)給出的輸入數(shù)據(jù)計(jì)算出一個(gè)唯一的hash值,只要輸入值不變,永遠(yuǎn)返回相同的結(jié)果。區(qū)塊是不可逆的,達(dá)到去中心化的作用。
隨著礦工人數(shù)的增加,挖礦難度也在增加,以比特幣為例子,難度是nonce,nonce可以理解為一個(gè)隨機(jī)數(shù),就是挖礦中要找到一個(gè)符合條件的nonce值。nonce的值越來(lái)越大,算力也要求越來(lái)越高,Pow的過(guò)程,即為不斷調(diào)整Nonce值,對(duì)區(qū)塊頭做雙重SHA256哈希運(yùn)算,使得結(jié)果滿(mǎn)足給定數(shù)量前導(dǎo)0的哈希值的過(guò)程,Pow完成的區(qū)塊向全網(wǎng)廣播,其他節(jié)點(diǎn)將驗(yàn)證其是否符合規(guī)則,如果驗(yàn)證有效,其他節(jié)點(diǎn)將接收此區(qū)塊,并附加在已有區(qū)塊鏈之后。之后將進(jìn)入下一輪挖礦
?在PoW中,系統(tǒng)中的投票權(quán)與節(jié)點(diǎn)的計(jì)算能力成正比。每秒可以計(jì)算哈希函數(shù)次數(shù)越多,節(jié)點(diǎn)就越有可能贏得區(qū)塊鏈中下一個(gè)區(qū)塊的出塊權(quán)。每次創(chuàng)建區(qū)塊,都要去驗(yàn)證。新創(chuàng)建一個(gè)對(duì)象,專(zhuān)門(mén)處理挖礦驗(yàn)證。創(chuàng)建新的工作量證明,設(shè)置難度值原理:如果隨機(jī)生成的Hash(二進(jìn)制)小于難度值則挖礦成功。
POW共識(shí)算法主要是通過(guò)計(jì)算難度值來(lái)決定誰(shuí)來(lái)出塊。POW的工作量是指方程式求解,誰(shuí)先解出來(lái),誰(shuí)就有權(quán)利出塊。方程式是通過(guò)前一個(gè)區(qū)塊的哈希值和隨機(jī)值nonce來(lái)計(jì)算下一個(gè)區(qū)塊的哈希值,誰(shuí)先找到nonce,誰(shuí)就能最先計(jì)算出下一個(gè)區(qū)塊的哈希值,這種方式之所以被稱(chēng)為計(jì)算難度值是因?yàn)榉匠淌經(jīng)]有固定解法,只能不斷的嘗試,這種解方程式的方式稱(chēng)為哈希碰撞,是概率事件,碰撞的次數(shù)越多,方程式求解的難度就會(huì)越大功能代碼實(shí)現(xiàn)主要是 定義區(qū)塊挖礦難度初始值為4,然后逐漸遞增,創(chuàng)建區(qū)塊鏈,創(chuàng)建創(chuàng)世區(qū)塊,然后進(jìn)行pow挖礦,也就是創(chuàng)建新的區(qū)塊,要求,當(dāng)前區(qū)塊的hash值與前面的0的個(gè)數(shù)與難度洗漱相同,計(jì)算hash再校驗(yàn)區(qū)塊,校驗(yàn)新的區(qū)塊是否合法,成功后生成新的區(qū)塊
?
轉(zhuǎn)載于:https://www.cnblogs.com/yuxiazi/p/10390092.html
總結(jié)
- 上一篇: 如何自动判断域名是否被微信拦截 被微信屏
- 下一篇: poj 1006(中国剩余定理+模板题)