區塊鏈:沒有完美的共識

❖寫在前面❖


我們都知道,區塊鏈的核心是共識機制,或者叫共識算法。

因為區塊鏈是一個分佈式網絡,是一個由很多個服務器去存儲和處理事務的網絡。那麼這麼多服務器,如何一起工作呢?是某一個服務器說得算、其他聽從?服務器們輪流說得算?那麼如何輪流呢?還身高排隊?按考試成績?

所以呢,就需要一個這麼個機制,所有的服務器按照這個機制去工作。

從技術層上,共識機制,是一個寫在代碼裡的算法,區塊鏈上所有的服務器運行程序,執行代碼,按照共識算法來工作。按算法,輪到哪個服務器來記錄和處理信息,就由這個服務器率先來記錄和處理信息,其他的服務器負責驗證信息的正確性。

從關係層上,共識機制,是一個制度,所有的服務器按這個制度工作。按這個制度,輪到哪個服務器主導工作,它就主導工作,輪不到主導工作的服務器,負責監督和配合工作。

遺憾的是,現有的共識機制,沒有一種是完美的。



❖POW❖


POW具有一定的公平性。

每一輪記賬,所有的服務器會去計算數學題,計算的方法簡單的說,就是去嘗試尋找哈希值。所有的服務器計算的難度相同、但題目不同的數學題,所以誰會先計算出來哈希值,具有一定的隨機性。

長期來看,算力高的服務器,率先解出哈希值的概率更高一些。就像考試只有一道判斷題,憑運氣大家都有可能答對,但是如果考試很多次,肯定是掌握知識最好的人答對的情況最多。所以,POW是以算力為核心但兼有隨機性的,這一點體現出POW的公平性。

但是,POW有兩個問題:

一是浪費,太浪費。那麼多臺服務器,閒著沒事就解題,這個工作其實有點浪費,因為這個工作只是為了競爭記賬權,記賬才是真正的工作。除此以外,因為服務器太多,會出現同時計算出哈希值的兩個以上服務器,就會出時出現兩個塊,會發生軟分叉,這個事就更浪費效率了。

二是51%攻擊問題。只要獲得超過51%的算力,就可以攻擊POW區塊鏈。比如我是黑客,我用100個幣買了你的一個房子,然後我發起51%攻擊,賬目上記了我給你100個幣,但我在這筆賬之前重新記錄,新的記錄裡沒有我給你100個幣這件事,因為我算力高超過全網一半,我就能強行記下去。而POW是最長鏈原則(最長的賬本原則),我能強行記一個最長的賬本。於是,我得到了你的房子,還沒給你幣。

注:服務器即礦機



❖POS❖

POS不再以算力為核心,而是以幣齡為核心。幣齡=礦工抵押的幣*抵押時間(未出塊的時間,如果出塊了這個時間會被清零)。這時候,不需要為了競爭記賬權去計算哈希值了,這個省了很多時間。效率節省了。

另外,以幣齡為核心可以抗51%攻擊。如果想要攻擊POS區塊鏈,需要具有51%的幣齡,那需要抵押幣,這樣攻擊以後雖然獲得了收益,但幣價很可能降低了,原來抵押的那些幣也貶值了。所以POS共識中,發生51%攻擊的可能性不大。

但是,POS也有問題。

第一,POS仍然是全節點,上萬、十萬甚至更多的礦工共同記賬,這個工作量很大,所以POS區塊鏈性能仍然有待提高。

第二,POS共識中,以錢為根本了。這確實像資本主義了,雖然POW所謂的算力也是用錢買的,但沒有像POS這樣赤裸裸。

第三,POS對礦工性能的激勵不足。在POW共識中,激勵礦工用高算力的服務器,這樣相對能激勵服礦工使用高性能的服務器,從而提高POW區塊鏈網絡的性能。但是POS共識中,激勵著礦工 抵押幣、而不是搞服務器性能,這樣不利於POS區塊鏈的網絡性能提升。

注:礦工是服務器(礦工)的所有者與運營者



❖DPOS❖

DPOS可以說是爭議最大的共識機制。

DPOS共識在POS共識的基礎上,將記賬節點的數量大大的減少了。EOS的記賬節點數量變成了21個,所以有人認為DPOS共識這不算區塊鏈了,但另一部分人認為節點數量少,但是互相制衡仍然是區塊鏈。

DPOS共識,因為參與記賬的節點變少了,肯定是效率變高了。

另外,由於DPOS如果想要發起51%攻擊,那需要超過三分之二的超級節點共同作惡才可以。DPOS雖然不要求超級節點抵押幣,靠的是用戶持幣給他們投票。但事實上,DPOS共識下,大部分超級節點都會自己抵押幣給自己投票的。所以這時候和POS一樣,如果攻擊區塊鏈會導致幣價下降,所以DPOS區塊鏈上,一般也不會發生51%攻擊的。

DPOS共識的問題是中心化。在記賬上問題不大,超級節點相互制衡,並且前面說過,超級節點實際也有抵押幣,所以很難出現聯合作惡的情況。

第一,DPOS中心化表現在治理上,區塊鏈的治理,比如代碼更新、事務決策等,是由超級節點投票,而超級節點存在共同利益,並且數量較少,這就形成了中心化的決策。如果B1提出一個影響超級節點利益的新版EOSIO,超級節點投票恐怕不會通過運行這個新版的EOSIO。

第二,DPOS中心化的另一個表現就是財富分配。DPOS共識中新生成的幣,更多的幣屬於超級節點。

注:節點是服務器(礦機)的運營方,因為運營方是團隊而非個人,故稱之為節點

超級節點是負責記賬的那些節點



❖SPOS❖


SPOS是以staking經濟為關鍵的一種權益證明。

SPOS將POS中的礦工改成了只需要抵押幣和staking,而不需要記賬。記賬的只有超級節點。

SPOS優點之一是提升的效率,和DPOS一樣,只有少量節點參與記賬。

SPOS優點之二是保持了財富的去中心化,新發行的幣同時分給記賬節點和普通礦工。

但是,SPOS也有缺點。

第一,礦工在staking時,和dpos相似,抵押幣給超級節點投票。但是dpos中投票是沒有收益的(共識算法中是沒有的,超級節點私下給投票者分紅這是另一回事),而dpos中投票是有收益的。那麼,在spos區塊鏈中,礦工只會支持那些給自己分錢多的超級節點,而不是真的看哪些超級節點對區塊鏈的貢獻更大。

第二,同樣的道理。在dpos共識中,為了獲得更大的支持,超級節點了除了給用戶福利以外,還會在區塊鏈的應用層、甚至代碼層作出貢獻,從而爭取更多的投票。而在spos共識中,超級節點得到的激勵就是給投票者發幣,而不是為區塊鏈生態做更多貢獻。

注:staking是一種行為,礦工或用戶抵押幣,然後以抵押幣的數量為權重,支持或者說給超級節點投票或者叫借幣給超級節點,這種行為叫staking,這種經濟形式叫staking經濟。



❖寫在最後❖


每一種共識都有優點,但同時有缺點。

沒有一種算法可以既公平、又安全、又有效率,又可以激勵礦工、節節等為區塊鏈做出巨大貢獻。

沒有算法可以完美的解決人性問題,人性問題需要算法+人治來解決。

去中心化的問題,需要適度的中心化來解決。


分享到:


相關文章: