日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PoW共识机制原理

發(fā)布時間:2024/3/7 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PoW共识机制原理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1 PoW機(jī)制

工作量證明(Proof-of-Work,PoW)是一種對應(yīng)服務(wù)與資源濫用、或是阻斷服務(wù)攻擊的經(jīng)濟(jì)對策。一般是要求用戶進(jìn)行一些耗時適當(dāng)?shù)膹?fù)雜運(yùn)算,并且答案能被服務(wù)方快速驗算,以此耗用的時間、設(shè)備與能源做為擔(dān)保成本,以確保服務(wù)與資源是被真正的需求所使用。

  • 工作量證明的特點是什么?
    即是難于計算,卻易于驗證。
  • 產(chǎn)生工作量的方法是什么?
    不斷哈希不同的值, 直到哈希值符合一定的條件。
  • 工作量證明如何驗證?
    接收方對證明進(jìn)行哈希, 看是否符合上述條件,可以快速驗證。

2 比特幣如何使用PoW共識機(jī)制

比特幣的共識機(jī)制就是PoW共識,借鑒了HashCash的處理方法, 下面就來說說比特幣如何進(jìn)行PoW共識的。

從區(qū)塊頭的結(jié)構(gòu)中可以看到一個4 bytes的Nonce值,Nonce值的變動會影響整個區(qū)塊頭的哈希值,挖礦節(jié)點即是通過嘗試不同的Nonce值(通常從0開始每次加1),尋找一個哈希值小于Difficulty Target指定的難度值。

SizeFieldDescription
4 bytesVersion區(qū)塊版本號,目前為2
32 bytesPrevious Block Hash前置區(qū)塊(父區(qū)塊)的區(qū)塊頭Hash,Hash算法為double-SHA256
32 bytesMerkle Root區(qū)塊中交易Merkle樹根
4 bytesTimestamp區(qū)塊創(chuàng)建UNIX時間戳
4 bytesDifficulty Target工作量證明算法難度
4 bytesNonce通過變動該計數(shù)器來達(dá)成工作量證明要求的結(jié)果

3 PoW證明過程

PoW證明過程,這也就是俗稱的挖礦過程, 找到合適的哈希值。
這里不詳細(xì)說明區(qū)塊打包過程, 區(qū)塊通過一定的算法被生成, 當(dāng)然生成是需要一定的代價的。
區(qū)塊頭里的各個值并不是隨機(jī)的, 而是由固定的算法得出, Merkle根哈希值就是把交易打包變成一顆Merkle樹, 最后得出根的哈希值, 難度值是根據(jù)算法不斷調(diào)整, 要維持出塊速率是10分鐘出一個塊。

首先我們把所有交易打包生成Merkle樹, 計算Merkle根的哈希值, 然后組裝區(qū)塊頭, 把區(qū)塊頭不斷進(jìn)行SHA256(SHA256(區(qū)塊頭))雙重哈希操作, 然后判斷是否小于網(wǎng)絡(luò)目標(biāo)值, 這里其實就是把它變成2進(jìn)制, 二進(jìn)制前面有多少位是沒有0的, 因為有1的話, 這個十進(jìn)制的值肯定是很大的, 就不會符合條件。 如果大于這個目標(biāo)值, 說明前面的位數(shù)沒有滿足前多少位為0的條件 哈希不成功, 那么就改變隨機(jī)數(shù)值,組成新的區(qū)塊頭,繼續(xù)哈希。
這是就是是挖到礦了,其他節(jié)點驗證的話也簡單,只要做一次SHA256(SHA256(驗證區(qū)塊頭))來判斷。

挖礦難度

比特幣挖礦難度調(diào)整方式非常簡單,難度目標(biāo)調(diào)整即不斷將256位的難度值減小,如277315號區(qū)塊的難度值十六進(jìn)制表示為:0x0000000000000003A30C00000000000000000000000000000000000000000000
這個數(shù)字在二進(jìn)制表示下前60位均是0,如果要增加難度只需要減小這個值,隨著難度值的減小,起始0的個數(shù)增多,可尋找的哈希值范圍減小,挖礦難度就越大。

難度調(diào)整

難度的調(diào)整是在每個完整節(jié)點中獨立自動發(fā)生的。每2016個區(qū)塊,所有節(jié)點都會按統(tǒng)一的公式自動調(diào)整難度。如果區(qū)塊產(chǎn)生的速率比10分鐘快則增加難度,比10分鐘慢則降低難度。
公式可以總結(jié)為:新難度值=舊難度值×(過去2016個區(qū)塊花費(fèi)時長/20160分鐘)

4 POW的優(yōu)缺點

優(yōu)點

  • 去中心化,將記賬權(quán)公平的分派到其他節(jié)點
    記賬權(quán)是通過看節(jié)點的PoW, 誰挖礦最快, 誰就能拿到這個礦
  • 安全性高,破壞系統(tǒng)需要投入極大的成本
    因為獲得正確哈希值的概率和算力成正比, 如果沒有掌握51%的算力就不能作弊。這樣代價要高于誠實挖礦,所以安全性高

缺點

  • 會造成資源浪費(fèi)
    因為挖礦需要大量的哈希運(yùn)算,需要電力和各種算力資源,而且找到合適的哈希值實際上并沒有其他的作用
  • 網(wǎng)絡(luò)性能太低
    因為比特幣出塊的時間是10分鐘, 所以交易確認(rèn)至少需要10分鐘,而且目前支持支持每秒7筆交易的速度,不適合商業(yè)用處。
  • PoW共識算法算力集中化。
    目前挖礦礦池是主力, 算力高的礦池有選擇權(quán), 持本人么有參與決定的權(quán)利

思考

1:挖礦過程為什么要計算兩次哈希值?
中本聰在設(shè)計比特幣的挖礦算法的時候,考慮到SHA2-256算法存在被破解的可能,雖然在理論上并未出現(xiàn)對SHA2-256算法的攻擊。為了減弱攻擊的威脅,區(qū)塊頭數(shù)據(jù)要對SHA2-256算法運(yùn)算兩次。

2:如果所有節(jié)點都從0開始嘗試Nonce值,那不就永遠(yuǎn)都是算力高的節(jié)點先計算出有效的結(jié)果,算力低的節(jié)點永遠(yuǎn)沒希望挖礦成功?
區(qū)塊頭大部分信息都是一樣的,但是Merkle Root對于每個節(jié)點必然是不同的,因為每個節(jié)點都會有自己的Coinbase交易,該交易中存在節(jié)點礦工的地址,此地址對于每個獨立挖礦節(jié)點都是不同的,根據(jù)哈希函數(shù)的雪崩效應(yīng)可知每個獨立節(jié)點的Merkle Root必定有顯著的區(qū)別。

3:如何解決拜占庭問題?
通過工作量證明就增加了發(fā)送信息的成本,降低節(jié)點發(fā)送消息速率,這樣就以保證在一個時間只有一個節(jié)點在進(jìn)行廣播,同時在廣播時會附上自己的簽名。工作量證明其實相當(dāng)于提高了做叛徒(發(fā)布虛假區(qū)塊)的成本,只有第一個完成證明的節(jié)點才能廣播區(qū)塊,競爭難度非常大,需要很高的算力,如果不成功其算力就白白的耗費(fèi)了,整個系統(tǒng)也因此而更穩(wěn)定。

總結(jié)

以上是生活随笔為你收集整理的PoW共识机制原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。