區(qū)塊鏈中的共識算法目前具有工業(yè)成熟度的是PoW德迹、PoS和DPoS芽卿,其次還有一些基于這些算法的變種和單一幣種使用的共識算法,例如:Ripple共識(瑞波幣共識證明)胳搞、PoC共識(容量證明)卸例、PoE共識(運(yùn)動量證明)。
PoX類的算法肌毅,容錯閥值是50%筷转,而分布式一致算法PBFT(拜占庭容錯)及其變種的容錯閥值是33%左右,這里的百分比是指網(wǎng)絡(luò)延遲悬而、網(wǎng)絡(luò)故障呜舒、作弊節(jié)點(diǎn)等占全網(wǎng)的比例。
與經(jīng)典的分布式一致算法相比笨奠,區(qū)塊鏈領(lǐng)域里的分布式一致算法(PoX類)通過概率選擇記賬者降低了潛在的提案者袭蝗,提高了可用性,但同時也延長了達(dá)成最終一致性的時間般婆。
PoW工作量證明
工作量證明(Proof-of-Work, PoW)是一種對應(yīng)服務(wù)與資源濫用到腥、或是阻斷服務(wù)攻擊的經(jīng)濟(jì)對策。一般是要求用戶進(jìn)行一些耗時適當(dāng)?shù)膹?fù)雜運(yùn)算蔚袍,并且答案能被服務(wù)方快速驗(yàn)算左电,以此耗用的時間、設(shè)備與能源做為擔(dān)保成本页响,以確保服務(wù)與資源是被真正的需求所使用篓足。...現(xiàn)時此一技術(shù)成為了加密貨幣的主流共識機(jī)制之一,如比特幣所采用的技術(shù) -- 維基百科
理解起來很容易闰蚕,就是為了選取有效的節(jié)點(diǎn)來記賬栈拖,首先要證明你是真正的工作者(礦工),先交給你一個有適當(dāng)難度的工作没陡,如果快速的完成了涩哟,那么說明你有能力做這個工作,然后才把記賬的工作交給你盼玄,并且在記賬完成時贴彼,給到一定的獎勵。
這個機(jī)制最早用于抵抗垃圾郵件埃儿,也就是發(fā)送一封郵件前器仗,要計(jì)算一道有難度的數(shù)學(xué)題,其中要消耗掉一部分算力。如果我們是正常的發(fā)送一封郵件精钮,這部分算力不會占用過多時間威鹿;但是如果要發(fā)送大量郵件(比如垃圾郵件),那么需要消耗的計(jì)算能力則會呈幾何級增長轨香,對垃圾郵件發(fā)送者來說忽你,這是個不劃算的事情。因此臂容,使用PoW機(jī)制科雳,能有效的防止垃圾郵件。
在區(qū)塊鏈中脓杉,最常用的運(yùn)算是哈希函數(shù)運(yùn)算(比特幣使用 SHA-256哈希函數(shù))炸渡,哈希函數(shù)的原理是,當(dāng)你輸入任意一個原始字符串(文本)丽已,經(jīng)過哈希運(yùn)算蚌堵,都能得到一個固定長度的哈希值;當(dāng)原始字符串改變時哪怕僅僅只有一個字符沛婴,運(yùn)算結(jié)果(哈希值)都會大大不同吼畏。因此,為了得到特定的哈希值嘁灯,只能通過窮舉運(yùn)算(暴力破解)的方式來運(yùn)算泻蚊,這個過程需要進(jìn)行大量的算力。
在比特幣中丑婿,一個交易要想被確認(rèn):(1)它存在于最長的分支的區(qū)塊里(block)性雄,(2)至少有5個驗(yàn)證過的(PoW共識算法驗(yàn)證)區(qū)塊在其后面得到驗(yàn)證。一個攻擊者(作弊者)要想發(fā)出雙重支付攻擊羹奉,那么必須投入超過總體一半以上的運(yùn)算量(51%攻擊)秒旋,才能篡改結(jié)果,這使得攻擊的成本變得高昂诀拭,難以實(shí)現(xiàn)迁筛。
PoS權(quán)益證明
權(quán)益證明是一種投票機(jī)制,通過固定時間協(xié)調(diào)所有節(jié)點(diǎn)參與投票(這個投票機(jī)制有點(diǎn)類似于傳統(tǒng)的分布式一致算法)耕挨,根據(jù)某種規(guī)則(例如持有代幣數(shù)量细卧、占有幣數(shù)的時間或提供存儲空間大小等)判斷每個節(jié)點(diǎn)的權(quán)重,最后選取權(quán)重最高的節(jié)點(diǎn)作為檢查節(jié)點(diǎn)筒占,獲得記賬權(quán)和獎勵(利息)贪庙。
在現(xiàn)實(shí)世界中,PoS很普遍翰苫,最為熟知的例子就是股票止邮,股票是用來記錄股權(quán)的證明,股票持有量最多的,擁有更多的投票權(quán)和收益權(quán)(利息)农尖。
PoS的防作弊機(jī)制是利益捆綁,股東自己保證安全良哲,擁有投票權(quán)多的人獲取的收益大盛卡,如果該投票權(quán)最多的人作弊的話,損失最大的也是他自己筑凫。
和PoW算法相比較滑沧,不需要礦工繼續(xù)的進(jìn)行挖礦消耗算力記賬,更節(jié)省能源巍实。
不過PoS算法對多節(jié)點(diǎn)一致性驗(yàn)證滓技、防偽等要求很高,而且隨著節(jié)點(diǎn)的增多棚潦,效率會越來越慢令漂,因?yàn)楣?jié)點(diǎn)越多,一致性越難丸边。
另外一點(diǎn)是叠必,擁有大量代幣的節(jié)點(diǎn)可以坐享其成,無法做到公平競爭妹窖,有形成中心化的風(fēng)險(大股東就是中心)纬朝。而且,在選舉的環(huán)節(jié)中骄呼,步驟較多共苛,容易產(chǎn)生安全漏洞(常見的有權(quán)益粉碎攻擊)。
權(quán)益粉碎攻擊(nothing-at-the-stake attack)蜓萄,由于PoS中隅茎,代幣越少,權(quán)益也越少嫉沽,而且很難改變現(xiàn)狀(如果持幣大戶不出售代幣的情況下)患膛。為了獲取更多權(quán)益,持幣少的節(jié)點(diǎn)耻蛇,就有可能去不斷的嘗試分叉踪蹬,在PoS共識機(jī)制里,即是嘗試失敗了臣咖,也不會消耗太多資源跃捣;但如果成功了,那么就會使整個幣的價值降低夺蛇,但由于他們的錢很少疚漆,也不會太在乎;這是人性里的惡,我不好娶聘,也不讓你好闻镶。
DPoS委托權(quán)益證明
委托權(quán)益證明(Delegated Proof of Stake)機(jī)制是PoS機(jī)制的優(yōu)化版本,DPoS選擇一些節(jié)點(diǎn)代表來參與交易驗(yàn)證和記賬丸升。例如:EOS選擇了21個超級節(jié)點(diǎn)铆农,100個備用節(jié)點(diǎn)來維護(hù)整個平臺的正常運(yùn)行。
我們知道區(qū)塊鏈作為一個分布式網(wǎng)絡(luò)狡耻,它也具有分布式系統(tǒng)的特性墩剖,若使用PoS機(jī)制在成千上萬的網(wǎng)絡(luò)節(jié)點(diǎn)中達(dá)到一致性,效率將會很低夷狰,也是一個十分漫長的過程岭皂。
使用DPoS機(jī)制能夠大幅度的提升選舉效率,在幾十個最多上百個節(jié)點(diǎn)之間進(jìn)行一致性投票一般可以在秒級完成并達(dá)成共識沼头。
DPoS委托權(quán)益證明的缺點(diǎn)是嚴(yán)重依賴于節(jié)點(diǎn)所持有的代幣爷绘,但是代幣在很多國家都是被禁止的。
三者之間的對比
PoW采用簡單粗暴但極為有效的方式进倍,通過節(jié)點(diǎn)首先自證其資質(zhì)后才進(jìn)行廣播的方式揉阎,大幅度減少了網(wǎng)絡(luò)間的通訊壓力,但與之帶來的問題則在于自證資質(zhì)的計(jì)算資源消耗極大背捌。
PoS采用與傳統(tǒng)分布式一致性驗(yàn)證類似的機(jī)制毙籽,通過代幣數(shù)量(或存儲容量等指標(biāo))作為權(quán)重依據(jù),使用某種分布式算法選舉出每次的檢查點(diǎn)節(jié)點(diǎn)毡庆。這種機(jī)制的好處在于沒有消耗計(jì)算資源的自證資質(zhì)過程坑赡,但是帶來的問題在于每次選舉時在大量節(jié)點(diǎn)的網(wǎng)絡(luò)中對網(wǎng)絡(luò)壓力極大。同時PoS也沒有防御惡意分叉的能力么抗。
DPoS作為PoS的優(yōu)化變形毅否,通過縮小選舉節(jié)點(diǎn)的數(shù)量以減少網(wǎng)絡(luò)壓力,是一種典型的分治策略:將所有節(jié)點(diǎn)分為領(lǐng)導(dǎo)者與跟隨者蝇刀,只有領(lǐng)導(dǎo)者之間達(dá)成共識后才會通知跟隨者螟加。該機(jī)制能夠在不增加計(jì)算資源的前提下有效減少網(wǎng)絡(luò)壓力,在優(yōu)秀的軟件實(shí)現(xiàn)中將會具有較強(qiáng)的應(yīng)用價值吞琐。