共識機制演算法有哪些?

買賣虛擬貨幣

在回答這個問題之前,鏈報小編認為投資者需要先了解什麼是共識機制演算法?共識機制演算法,也可以說是共識機制,其實就是以去中心化的方式就網路的狀態達成統一協議的過程,共識機制演算法有助於驗證和驗證資訊被新增到分類賬簿,確保只有真實的事務記錄在區塊鏈上,那麼,共識機制演算法有哪些呢?下面鏈報小編就給大家詳細說說共識機制演算法有哪些?

共識機制演算法有哪些?

1.POW:Proof of Work,工作量證明

比特幣系統設計了以每個節點的計算能力,即“算力”來競爭記賬權的機制。簡單說,POW就是一份確定工作端做過一定量工作的證明。舉個例子來說,就是我去面試的時候,招聘網站上寫的該崗位需要本科以上學歷。那我怎麼證明我是本科畢業生呢?把本科畢業證show給面試官看就可以了,就是這麼簡單。但是我要怎麼得到這個畢業證呢?需要上4年的大學,在此之前還要上高中,初中,小學,上大學時還不能天天玩樂,還要上課,考試,考試還不能掛科,這是一個艱辛的過程。對面試官而言,一張畢業證就足以證明我上過大學,而且還不笨。

所以,POW方式的主要特點就是計算的不對稱性。工作端需要做一定難度的工作才能得到一個結果,但驗證方卻很容易透過結果來檢查工作端是不是做了相應的工作。具體做法是透過對一個區塊鏈頭部中的父區塊雜湊,Merkle樹根和nonce值三個欄位進行雜湊運算,如果結果小於目標值,則計算成功,如果大於目標值,則改變nonce值,重複運算,直到結果小於目標值為止。

怎麼理解pow的工作方和驗證方呢?再舉個栗子。

工作方:假設輸入值是 Blockchain1,對它進行雜湊運算,尋找結果前3位為0的雜湊值,那麼計算過程是:

blockchain1 -> ef7797e13d3a75526946a3bcf00daec9fc9c9c4d51ddc7cc5df888f74dd434d1

blockchain2 -> db0b9c1cb5e9c680dfff7482f1a8efad0e786f41b6b89a758fb26d9e223e0a10

......

blockchain515 -> 0063e58fb6e3789fcb5eb64d05d7a9b909c5e9e1b60b18cb566a3326c1fd54c

......

blockchain2688 -> 0005f2ee930eafef21d06545c0058ddfcf2ac9dfa542b745021f51ceb9e9f43c

可以看出,經過2688次運算才能找到前三位為0的雜湊值。隨著0個數的增加,那麼計算難度是成指數級增加的。

驗證方:驗證方拿到工作方得到數值blockchain2688,只需要一次計算就可以知道工作方的工作有沒有做出來。

對於pow,如果要尋找特定字串後面的隨機nonce,滿足前n位均為0的SHA256值,需要進行多次雜湊值的運算。一般來說,由於雜湊值的偽隨機性,要尋找3個前導0的雜湊值,預期大概要進行2的12次方次嘗試,這個數學期望的計算次數,就是所謂的“工作量”。整個工作量證明活動,就是我們常說的“挖礦”所做的工作。

在上面的例子中,實際的比特幣系統中有幾個比較關鍵的地方,比如nonce值是怎麼改變的,目標值的0的個數是怎麼確定的等,可以參考比特幣挖礦一文。

比特幣網路中的任何一個節點,如果想生成一個新的區塊並寫入區塊鏈,必須解出比特幣網路出的POW問題。這道題有三個關鍵要素:工作量證明函式,區塊,難度值/目標值

比特幣系統中使用的工作量證明函式是SHA256,SHA是安全雜湊演算法(Secure Hash Algorithm)的縮寫,是一種密碼雜湊函式家族,SHA256是其中的一種,輸出256位的雜湊演算法。比特幣的區塊是由區塊頭和該區塊所包含的交易列表組成,區塊中包含了一個指向前一區塊的雜湊指標,使得記錄了不同交易的單個區塊被關聯起來,形成區塊鏈。難度值是比特幣系統中的節點在生成區塊時的重要參考指標,它決定了節點大概需要多少次雜湊運算才能產生一個哈法的區塊,難度值會隨著全網算力的變化進行調整,將產生區塊的速率保持在10分鐘一個。

因此,POW成功的決定因素就是算力大小,如果你的算力是n,全網算力是m,那麼你在一次工作量證明,也就是一次挖礦活動中能夠成功的概率是n/m ,經過 m/n 次挖礦中可以成功一次。比如我的筆記本演算法大概是1GH/s,現在全網算力是21EH/s,那麼我大概需要進行200億次工作量證明,每次大概10分鐘,有生之年肯定是挖不出來一個的。

2.POS:Proof of Stake,權益證明

現在我們知道如何對比特幣進行挖礦了,那就是需要購買挖礦裝置和支付電耗,以此來獲取新幣作為挖礦的獎勵。這基本上是一個很消耗資源的過程。而且有兩個明顯的弊端,一方面,pow的前提是,節點和算力是均勻分佈的,因為中本聰當初的設計是透過CPU挖礦,這樣節點數和算力值可以大致匹配,但是隨著GPU,FPGA直到礦機,使得節點數和算力值漸漸失配。另一方面,pow實在太浪費了,比特幣網路每秒可完成數百萬億次SHA256計算,這些計算除了使得惡意攻擊者不能輕易打垮比特幣網路外,好像並沒有更多的實際價值。當然相對於它所帶來的好處,這點浪費也許只是很小的代價。

但浪費總歸是不好的,有沒有辦法把挖礦裝置和能耗這一環節去掉呢?畢竟這個過程只是要選出一個記賬的節點,有沒有其他方式可以實現呢?於是,人們提出了一些工作量證明的替代者,其中有一種就叫做POS。

權益認證是由Quantum Mechanic 2011年在比特幣論壇講座上提出來的,然後由PPC(點點幣)和NXT(未來幣)以不同的思路實現。POW就是根據計算能力隨機,POS根據擁有財產隨機。這就是這兩個共識機制的本質。但是,另一個問題是,POW是一個在比特幣出現之前就有了的東西,而因為比特幣的成功,POW基本上特指比特幣的POW。但相反,POS是個新東西,目前並沒有成熟的POS應用,所以,當提到POS的時候,並不是指某一個演算法,而是一類,而且,這類演算法目前各有優劣。並且,目前為止,沒有一個演算法的可靠性透過了實踐的檢驗。所以,要對比POW和POS的優劣,我只能以POS這一大類為例。我們現在常說的POS,其實都在說PPCoin的POS,也就是最早的POS,那個東西是有根本缺陷的,例如幣齡攻擊(save-up attack),都僅僅是對PPC適用,而並不是POS的問題。

Quantum Mechanic提出POS概念的時候,說了下面這段話:

I'm wondering if as bitcoins become more widely distributed, whether a transition from a proof of work based system to a proof of stake one might happen. What I mean by proof of stake is that instead of your "vote" on the accepted transaction history being weighted by the share of computing resources you bring to the network, it's weighted by the number of bitcoins you can prove you own, using your private keys.

他的意思就是說,節點記賬權的獲得與節點持有的幣的數量,也就是權益有關。兩者成反比關係,持有幣數越多,獲得記賬權就越容易。這種決定由誰記賬的方式,去掉了POW中需要大量計算的過程,但是依然需要進行雜湊運算來獲取記賬權。

在POW中,一個使用者可能會拿1000美元來購買礦機並加入到網路中挖礦,從而得到獎勵,在POS中,使用者會拿1000美元來買等價的代幣,並把這些代幣當作押金放入POS機制中,這樣就有機會產生新區塊而得到獎勵。

簡單來說,就是這個系統中會存在一個持幣人的集合,他們把一定的代幣放pos機制中,於是他們就變成了驗證者,擁有了驗證交易和產生區塊的權利。然後pos演算法就會在這個集合中隨機選取一個節點,給他權利產生下一個區塊。如果在一定時間裡,這個節點沒有產生一個區塊,則選出第二個節點代替之。在這個過程中,被選中的概率和他們投入的代幣量有關,比如一個節點投入了10000代幣,那麼他被選擇的概率,是投入1000代幣節點的10倍。

3.點點幣(PPC)

PPC是最先採用權益證明演算法的數字資產,它在Quantum Mechanic提出的權益證明思想的基礎上,引入了幣齡的概念。幣齡是幣的數量和幣所擁有的天數的乘積。

簡單來說,就是一個根據你持有貨幣的量和時間,給你發利息的一個制度,在PPC的POS模式下,每個幣每天產生1幣齡,比如你持有100個幣,總共持有了30天,那麼,此時你的幣齡就為3000,這個時候,如果你發現了一個POS區塊,你的幣齡就會被清空為0。你每被清空365幣齡,你將會從區塊中獲得0.05個幣的利息(假定利息可理解為年利率5%,點點幣PPCoin是1%年利率),那麼在這個案例中,利息 = 3000 * 5% / 365 = 0.41個幣,這下就很有意思了,持幣有利息。

PPC其實是權益證明和工作量證明的一種結合體,因為它也需要挖礦。為了挖到區塊,點點幣的礦工也需要像比特幣礦工那樣去進行一個SHA256的解謎運算,只不過,這個解謎運算的難度會隨著他們想消耗多少幣齡而調整。當一些幣齡被消耗後,找到有效區塊會變得十分容易。這個運算解謎的效果主要是要保證,在兩個礦工嘗試消耗同樣大小幣齡的情況下,這個過程仍然是隨機的。

對於POS而言,除了PPC,還有其他不同形式的設計。在這些設計中,一定數量的幣被消耗用於使運算解謎變得極為簡單,這使得解謎運算不再是挖礦過程中最主要的挑戰。

4.POW和POS

兩者最直接的區別是,POW依賴算力,而POS依賴持有幣數。所以要想擁有記賬權,POW得買礦機,POS得買代幣。

工作量證明資源消耗大,可監管性差,共識機制強,需要全網算力共同參與效率低。優點也很明顯就是完全去中心化和節點自由進出。權益證明一定程度縮短了達成共識時間,但還是需要挖礦,只是不需要消耗大量的能源。兩種方案都沒有從本質上極大解決成本降低效率提升這個使用者痛點。只是最佳化方案,所以在這2種方式的邏輯裡面做專案必然有被替代的情況出現。比如說更最佳化的方案,或是徹底解決痛點的新機制出現。

5.DPOS:Delegated Proof of Stake,委任權益證明

POW和POS雖然都能解決記賬一致性的共識問題,但是POW太依賴算力,一是浪費資源,一是某些礦池巨大的算力儼然成為了一箇中心。而POS依據權益結餘來選擇,會導致首富賬戶的權力更大,有可能支配記賬權。於是,又有人提出了DPOS演算法。本質上來講,DPOS是對POS的一種改進,就像PPC是對POS的一種改進一樣,只不過PPC是一種具體的數字資產,而DPOS是一種思想。

BitShare是一種採用了DPOS機制的數字資產,它提出了見證人(也就是代理人,或者說代表)的概念,期望透過引入一個技術民主層來減少中心化的負面影響。類似董事會投票,持幣者投出一定數量的節點,進行代理驗證和記賬。

BitShare的DPOS工作原理是:每個持有位元股的節點都相當於一個股東,都有投票選出代表的權利,每個股東將其投票權授予一名代表。獲得票數最多的前N個(N通常是101)代表來生成區塊。當選成代理人需滿足,至少一半的股東參與了投票。

代理人的候選名單每個維護週期(1天)更新一次。代理人隨機排列,每個代理人按序有2秒的時間來生成區塊。如果在規定時間內不能生成區塊,則交由下一個時間片的代理人完成。

DPOS充分利用了持股人的投票,以公平公正的方式達成共識。他們選出的N個代理人,可以視為N個礦池,這N個礦池的權利是完全相等的。持股人可以隨時透過投票更換這些代理人,只要他們提供的算力不穩定,計算機宕機或者試圖作惡等。

DPOS的優點是可以大幅度縮小參與驗證和記賬節點的數量,可以達到秒級的共識驗證,但是缺點是整個共識機制還是依賴於代幣,而很多商業應用是不需要代幣的。

以上就是共識機制演算法有哪些的相關內容,眾所周知,目前主流共識演算法逐漸由PoW轉向PoS共識演算法,出現POW和POS混合的趨勢,POW的公平性和POS的效率得到融合補充,這些機制各有優劣,比如POW在安全性和公平性上比較有優勢,也依靠其先發優勢已經形成了成熟的挖礦產業鏈,但是其對能源的消耗令人詬病,新興的機制比如POS,DPOS等則更為環保和高效,但是在安全性和公平性方面比不上POW。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;