區塊鏈目前用到哪些共識機制?它們各自的優缺點和適用範圍是什麼?
目前主要有四大類共識機制:Pow、Pos、DPos、Pool
1、Pow工作量證明,就是大家熟悉的挖礦,通過與或運算,計算出一個滿足規則的隨機數,即獲得本次記賬權,發出本輪需要記錄的數據,全網其它節點驗證後一起存儲;優點:完全去中心化,節點自由進出;缺點:目前bitcoin已經吸引全球大部分的算力,其它再用Pow共識機制的區塊鏈應用很難獲得相同的算力來保障自身的安全;挖礦造成大量的資源浪費;共識達成的周期較長,不適合商業應用2、Pos權益證明,Pow的一種升級共識機制;根據每個節點所佔代幣的比例和時間;等比例的降低挖礦難度,從而加快找隨機數的速度。
優點:在一定程度上縮短了共識達成的時間缺點:還是需要挖礦,本質上沒有解決商業應用的痛點3、DPos股份授權證明機制,類似於董事會投票,持幣者投出一定數量的節點,代理他們進行驗證和記賬。
優點:大幅縮小參與驗證和記賬節點的數量,可以達到秒級的共識驗證缺點:整個共識機制還是依賴於代幣,很多商業應用是不需要代幣存在的4、Pool驗證池,基於傳統的分散式一致性技術,加上數據驗證機制;是目前行業鏈大範圍在使用的共識機制優點:不需要代幣也可以工作,在成熟的分散式一致性演算法(Pasox、Raft)基礎上,實現秒級共識驗證;缺點:去中心化程度不如bictoin;更適合多方參與的多中心商業模式我主要用簡單的例子說說什麼是POW、POS機制。
區塊鏈是去中心化的,沒有中心記賬節點,所以需要全網對賬本達成共識。目前有POW、POS、DPOS、POOL四種共識機制。
今天我們用通俗的例子來分析下其中的兩種:POW、POS。
POW:有一道數學題非常難算
POW(Proof of Work),工作量證明,引入了對一個特定值的計算工作。
比特幣採用的共識演算法就是POW,礦工們在挖一個新的區塊時,必須對SHA-256密碼散列函數進行運算,區塊中的隨機散列值以一個或多個0開始。隨著0數目的上升,找到這個解所需要的工作量將呈指數增長,礦工通過反覆嘗試找到這個解。
在這其中,如果想要對業已出現的區塊信息進行修改,攻擊者必須完成該區塊外加之後所有區塊的工作量,並最終趕上和超越誠實節點的工作量。
用一個通俗的例子來說:
你上學的時候,班級里發生的行為需要被記在班級的一個大家公用的賬本(區塊鏈)上。
老師或者同學們用這個公用的賬本進行記錄,並且有一種專門用來支付這個賬本上大家記錄的、需要支付的代幣,我們暫且把它叫做Good幣。這些幣可以兌換成錢。你們班級的公共賬本不是一個大本子,而是由很多個小本子中間連接一條線組合成的。
每個小本子的啟用需要進行一個數學運算,如果一個同學算出了某個小本子附帶的數學題,就開啟了一個新的小本子連著前面小本子,大家就會開始用新本子記賬。
每個小本子開頭都留一頁,寫上與其他小本子關聯的信息、小本子的啟用時間和開啟這個小本子時算的數學題的答案。
因為同學們學習都很忙,如果沒有報酬的話,就沒有人會花費大量時間去班級的小本子上幫大家記賬,因此老師做了一個規定:最先算出新的小本子附帶的數學難題、開啟小本子的人獲得Good幣,用幣來獎勵維持班級賬本正常運轉的同學。
一個期末,你得了獎,A同學算出了一個新小本子——第N個小本子帶著的數學難題的解,然後幫你得獎的信息記在了小本子上,A同學獲得了一筆獎勵。
B同學一直不喜歡你,他想把記錄在小本子上的信息修改成B同學得獎,這樣老師就會把獎金髮給他。
B同學開始計算第N個小本子上的數學難題,當他重新計算完第N個上面的數學題,其他同學已經計算出和第N個小本子連著線的第N+1個小本子的解了。因為b同學算的慢,其他同學只認最長鏈,所以b同學算的無效。
其他記賬的同學根據最長鏈原則都跟在了第N+1個小本子的後面,所以B同學除非計算的速度變得很快,跟上另一條並超過,否則沒辦法將自己修改的錯誤信息的區塊納入整個賬本系統中。
所以POW共識機制的優點之一:B在攻擊公共賬本的時要耗費大量的時間精力和腦力,但結果卻很難成功,所以如果他選擇攻擊,不僅得不到獎勵,還會對自己造成大量的消耗,就會得不償失——即降低不誠實節點的攻擊意圖。
但,不得不說的是,攻擊存在成功的可能性,如果B同學說服班上超過50%的同學一起承認錯誤他修改的錯誤的賬本,那麼被篡改的賬本就會被達成共識。當然,就攻擊這個公共賬本而言,除非,超過50%的同學用被B同學的一己私慾說服。
以這個例子來看,缺點也很明顯,為了維護這個公共賬本的運作,班級的同學花費了大量的時間來算這些哈希函數的難題,浪費了大量的時間和精力,表現在比特幣上就是:花費了大量的電力,浪費了大量的能源。
POS:擁有的幣越多,有記賬權的概率就越大?
POS(Proof of Stake),權益證明,試圖解決POW機制中大量資源被浪費的情況。這種機制通過計算你持有佔總幣數的百分比,包括你佔有幣數的時間來決定記賬權。
預告:在該處會引起不適的可能有1、2、3、4段,請大家稍作忍耐……
在POW機制中,由於想要找到符合條件的nonce值往往需要大量的電力和時間成本,為了避免這種浪費,PoS機制採用更快速的演算法:
SHA256(SHA256(Bprev),A ,t)≤balance(A)m
這其中,H為某個哈希函數;t為UTC時間戳;Bprev指的是上個區塊;balance(A)代表賬戶A額餘額。
唯一可以不斷調整得到參數是t,等式右邊m是某個固定的實數,因此,當balance(A)越大,找到合理t的概率越大,網路中,普遍對t的範圍有所限制,如可以嘗試的時間不能超過標準時間戳1小時,也就是一個節點可以嘗試7200次,來找到一個符合條件的t。因此在PoS中,一個賬戶的餘額越多,在同等算力下,就越容易發現下一個區塊。
這實在是太複雜了,不知道該怎麼理解……(哭臉)
我們還是用上一個「你上學的時候,班級里發生的行為需要被記在班級公用的賬本(區塊鏈)上,老師或者同學們用這個賬本進行記錄」例子來說,這個時候規則變了。
假設同學們經過前一階段都已經持有一定數量的Good幣,老師覺得大家為了爭奪記賬的機會,浪費的時間和精力都太多了,所以就修改了規定:
不採用之前那種特別難的數學題的方法。通俗的來說,根據你持有幣的多少和時間長短給你發利息。
幣齡(每個幣每天產生1幣齡)越高的人和持幣越多的人越有機會得到啟用小本子和幫別人記賬的權利,記賬又可以得到獎勵。
在期末的時候持有更多幣的人會有更多的獎勵,所以同學們都很勤奮地去爭奪記賬權。
假設班級Good幣的年利率是5%(不同的幣的年利率不一樣,點點幣的年利率是1%;)
現在你們班級的A同學擁有的幣最多,在POS機制下,每個幣每天產生1幣齡,A同學擁有100個Good幣,他已經持有這100個幣30天,此時A同學的幣齡為30?100=3000。每產生一個區塊,幣齡就會被清空為0,每被清空365個幣齡,就會從區塊中獲得0.05個幣的利息。
A同學擁有3000幣齡,他通過計算啟用了一個小本子,他得到的利息就是=3000??5%?365=0.41個Good幣。
通過持有幣的數量和時間長短來決定記賬的節點,這樣就省略了競爭記賬造成的資源浪費。如果在POS機制中想要發起攻擊,必須要收集全部幣量的50%以上,不僅成本會非常大,並且執行難度非常高。
通過這些機制,使得區塊鏈網路之間達成共識,以此來解決去中心化網路的信任問題。
就問題本身而言我感受到了套路。。
共識機制現在就哪幾種,但到底哪種更有優勢還未有定論
推薦閱讀:
※最近比特幣為什麼大跌?
※POS (Proof of Stake 權益證明) 與 POW(Proof of Work 工作量證明) 本質都是什麼?他們各有什麼優劣?
※如何看待自私挖礦法對比特幣帶來的威脅?
※BTC的實際價值和意義是什麼?
※技術上,中國真的可以阻斷比特幣的p2p交易么?
TAG:比特幣Bitcoin |