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