POW共識機制原理及優缺點

2022-09-02 21:03:12 字數 3593 閱讀 2503

pow工作量證明(英文全稱為proof of work)在位元幣之前就已經出現,中本聰在設計區塊鏈的共識機制的時候就是借鑑了pow工作量證明。常見的是利用hash運算的複雜度進行cpu運算實現工作量確定。

工作量證明(proof-of-work,pow)是一種對應服務與資源濫用、或是阻斷服務攻擊的經濟對策。一般是要求使用者進行一些耗時適當的複雜運算,並且答案能被服務方快速驗算,以此耗用的時間、裝置與能源做為擔保成本,以確保服務與資源是被真正的需求所使用。

在乙個pow系統中, 一定會有兩個角色, 乙個是工作者, 乙個是驗證者

對於工作者

對於驗證者

區塊鏈的pow共識機制, 借鑑了很多hashcash方面的東西, 所以先講hashcash。

hashcash 最早是用來處理垃圾郵件的,乙個垃圾郵件的傳送者發乙個郵件出去不能花費很多時間, 如果花太多時間,那麼和人發郵件就沒什麼區別, 而要遮蔽這些垃圾郵件, 乙個核心的想法就是正確的傳送方發的郵件一定要經過一段時間的處理, 而且這個處理是不能很快, 也不能找到捷徑, 也就是要有一定的工作量,這樣垃圾郵件沒有工作量,所以會被拋棄。

那麼問題又來了

首先如何產生工作量的方法是什麼?, 傳送方如何在郵件裡新增我已經完成很多任務作(也就是工作量證明),第三個就是接收方如何驗證工作量

下面以乙個垃圾郵件處理的例子來回答三個問題

利用sha-1雜湊演算法對郵件簽名生成乙個160-bit長度的雜湊值,該雜湊值前20位全為0 。此演算法利用了雜湊演算法的不可**性,sha-1的碰撞概率決定了演算法的安全性。

在目前的認知中,發件方除了窮舉嘗試,無法很快的找到滿足條件的簽名串。於是發件方在傳送郵件之前的工作就是不斷地counter++生成新的郵件簽名,然後獲取sha-1雜湊值判斷前20位是否全為0,如果不是的話重新生成。而對於郵件伺服器而言,只需要做一次sha-1判斷生成的簽名是否滿足條件即可,完全符合pow易於驗證的定義。

演算法簡介

傳送方簽名

counter =0;

while(1

)

counter++;}

sig = mailadress + time + counter;

服務端驗籤

if

(sha1

(sig)

.substring(0

,20)==

"00000000000000000000"

)

由於雜湊函式的隨機性, 每一次hash得到的160位中的每一位是0 或1 的概率相同, 那麼要得到這樣乙個正確的hash值每次雜湊成功的概率為1/2^20次方

當雜湊成功後把雜湊前的值 當做sig 放到郵件裡, 接收方通過對sig再做sha-1雜湊,如果前20位為0, 說明是有工作量證明的。

產生工作量的方法是什麼?

不斷雜湊不同的值, 直到雜湊值符合一定的條件

如何新增工作量證明?

得到符合要求雜湊值 的雜湊前的值是證明

如何驗證?

接收方對證明進行雜湊, 看是否符合上述條件

剛才說區塊鏈的共識機制就是pow共識,而且借鑑了很多的hashcash的處理方法, 下面我們就來說說區塊鏈如何進行pow共識的。

在此之前需要先了解一下區塊的構成,

由上圖可知區塊分為區塊頭和區塊體, 其中區塊之間的聯絡是通過儲存父區塊雜湊聯絡在一起的。

區塊頭的各個組成要素:

這也就是俗稱的挖礦過程, 找到合適的雜湊值

這裡不詳細說明區塊打包過程, 區塊通過一定的演算法被生成, 當然生成是需要一定的代價的。

區塊頭里的各個值並不是隨機的, 而是由固定的演算法得出, merkle根雜湊值就是把交易打包變成一顆merkle樹, 最後得出根的雜湊值,難度值是根據演算法不斷調整, 要維持出塊速率是10分鐘出乙個塊

下面將給出挖礦過程

首先我們把所有交易打包 生成merkle樹, 計算merkle根的雜湊值, 然後組裝區塊頭, 把區塊頭不斷進行sha256(sha256(區塊頭))操作, 然後判斷是否小於網路目標值這裡其實就是把它變成2進製, 二進位制前面有多少位是沒有0的, 因為有1的話, 這個十進位制的值肯定是很大的, 就不會符合條件。如果大於這個目標值, 說明前面的位數 沒有滿足 前多少位為0的條件雜湊不成功, 那麼就改變隨機數值,組成新的區塊頭,繼續雜湊。

這是就是是挖到曠了,其他節點驗證的話也簡單 只要做一次sha256(sha256(驗證區塊頭))來判斷。

這是區塊鏈的pow證明。

優點:缺點

參考**

無人控制的公司發行股份,產生利潤,並將利潤分配給股東。實現這一切不需要信任任何人,因為每件事都是被硬編碼到軟體中的。通俗點講就是:公司股份制,股東持有這些公司的股份,公司為股東產生回報,無需挖礦。

拜占庭共識演算法(practical byzantine fault tolerance- pbft)也是一種常見的共識證明。它與之前兩種都不相同,pbft以計算為基礎,也沒有代幣獎勵。由鏈上所有人參與投票,少於(n-1)/3個節點反對時就獲得公示資訊的權利

poi(proof of importance)重要度證明共識演算法引了賬戶重要程度的概念,使用賬戶重要性評分來分配記賬權的概率。

這是標準鏈(czr)的創新,基於賬戶參與度的 pop(proofofparticipation)演算法,pop 將poi 和dpos 的思想結合,既能確保對裝置的公平性,又擁有社群的共識。

在傳統的區塊鏈技術裡面, 共識需要計算雜湊值沒有什麼意義,核心想法就是把計算沒有意義的雜湊,變成有價值的計算, 其實數學上有一些問題需要大算力才能得到結果, 有乙個聽過的方案就是不求雜湊, 而是把問題變成求最大的素數,或者想很多模擬問題需要大量的計算而且對科學發展有幫助,比如模擬黑洞,模擬銀河系,模擬宇宙早期形態,把這些問題當做挖礦指標。

或者其他大算力的問題

大素數分解, 密集線性代數。

或者通過競標, 向區塊鏈發出問題,以解決此問題當做工作量證明,然後用其算力解決問題,這也是有幫助的。

以上都是單考慮如何讓這些算力不浪費這個方面, 還有其他類似於pos等不用大量算力的方法值得去發現。

POW共識機制

因為記賬有一定的獎勵和手續費,所以自然會有競爭,pow proof of work 工作量證明共識機制就是用來在 誰有權記賬 這一問題上達成共識。簡單來說,就是爭奪記賬權的多方通過付出計算資源解決乙個數學難題,誰先解決誰就獲得記賬權,這個爭奪的過程就是 挖礦 也是位元幣發行的過程。具體的計算問題是,...

區塊鏈共識機制優缺點對比

鏈客,有問必答!區塊鏈就是執行在p2p網路上的去中心化賬本。在公有鏈區塊鏈專案例如位元幣,成千上萬的使用者在使用這個區塊鏈。我們怎麼去在這樣的系統中獲得信任呢,並且在私有區塊鏈中也是一樣的情況。這就是共識機制的 共識保證了區塊鏈上的參與者可以互相信任,並且對下個區塊進行驗證。共識也確保了網路中的規則...

區塊鏈 PoW 共識機制的原理與認識

有效可靠 因為雜湊函式具有免碰撞 隱匿性以及不存在比窮舉更好地方法來使得雜湊值落在特定的範圍。利用時間戳 非對稱加密 雜湊函式以及共識機制解決了拜占庭將軍的問題。實現了去中心化 pow 的共識機制解決了去中心化結構中各個節點間資料不一致的問題。同時這一機制保證了在這個系統中每乙個節點的公平性,即每乙...