POW與POS的安全性與優(yōu)劣勢分析
· 支撐POW安全性的不是算力,而是信仰;
· 人們嚴(yán)重高估了POW的安全性;
· POS的存在只需要一個(gè)理由:它能解決POW 51%攻擊的隱患;
· Staking Economy 對POS是有害的,它會(huì)降低POS系統(tǒng)的安全性;
· POS真正無解的問題是無利益攻擊
這篇文章系統(tǒng)性地分析了POW與POS的安全性優(yōu)劣之處,得出了很多不同的結(jié)論。文本信息密度很大,讀下來需要不少耐心,推薦各位收藏后閱讀。大多數(shù)人用經(jīng)驗(yàn)理解POW和POS,而經(jīng)驗(yàn)往往是錯(cuò)的。
本文作者:Maxdeath,任之劼博士,唯鏈區(qū)塊鏈高級(jí)研究員,主要研究方向包括區(qū)塊鏈共識(shí)算法、擴(kuò)容、應(yīng)用,曾在國際學(xué)術(shù)會(huì)議上發(fā)表多篇區(qū)塊鏈論文。
最近正好是一些明星POW和POS項(xiàng)目準(zhǔn)備主網(wǎng)上線的高峰期,于是,關(guān)于POW和POS優(yōu)劣的比較又甚囂塵上。我之前看過了很多的這方面的文章,不知道為什么,總是有種如鯁在喉,有些東西不吐不快的感覺——大部分人比較的POW和POS并不是一個(gè)層面上的東西。
POW是一個(gè)在現(xiàn)實(shí)中采用更多的算法,而POS,尤其是現(xiàn)在意義中的POS(而非之前peercoin那類早期半成品)是一個(gè)目前僅存在于理論中的東西;同時(shí),POW是一類算法,POS也是一類算法。因此,我們不能在考慮簡潔、考慮實(shí)用、考慮安全的時(shí)候,就拿比特幣的POW出來比,然后在考慮效率、考慮去中心化的時(shí)候,又拿出另一個(gè)不同的POW出來。
所以,在這里,我想要從更根本性的角度來比較這兩者。換句話說,我們想要比較的不是比特幣的POW與以太坊的casper,也不是目前階段的POW和POS,而是POW和POS這兩種思路的未來和前景,哪個(gè)更加適用于區(qū)塊鏈的治理和運(yùn)行。
因此,我們必須拋開現(xiàn)有的POW和現(xiàn)有的POS的一切限制,從本質(zhì)上,或者說,從一個(gè)理想的狀態(tài)下探討,兩者根本的區(qū)別和局限在哪里。
1. POW與POS的本質(zhì)
那么首先,我們需要定義一下POW和POS。
首先,兩者都試圖達(dá)到一種“隨機(jī)選節(jié)點(diǎn)出塊,選中概率正比于節(jié)點(diǎn)的某種可驗(yàn)證的資源,然后,由于我們采用最長鏈共識(shí),于是想要推翻已經(jīng)得到確認(rèn)的塊需要掌握50%以上的資源”的狀態(tài),只不過兩者的資源一個(gè)是工作量,一個(gè)是擁有的幣。
從這個(gè)角度,我們來看看兩者究竟有什么是不可或缺的:
POW:能夠提供進(jìn)行了某些工作量的證據(jù)的節(jié)點(diǎn)獲得出塊權(quán)。
POS:在某個(gè)時(shí)間之前提供自己擁有某些幣的證明的人獲得出塊權(quán)。
僅此而已。
在這篇文章中,我們進(jìn)行的一切比較都僅僅基于以上這個(gè)定義,以及兩者的這一個(gè)不同點(diǎn),然后通過邏輯推理來進(jìn)行。
當(dāng)然,我也無意于純從理論的角度來進(jìn)行比較,因?yàn)槠鋵?shí)兩者都有所謂的理論“安全性”、但實(shí)際上都建立在某些不那么現(xiàn)實(shí)的假設(shè)之上。因此,我們也需要考慮兩者在現(xiàn)實(shí),也就是我們所在的這個(gè)社會(huì)中,在目前以及不太遠(yuǎn)的將來,應(yīng)用于區(qū)塊鏈的優(yōu)劣。
也就是說,我們假設(shè),從功能上,我們可以在近幾年找到這樣兩個(gè)理想的算法。如果我們希望用于一條公鏈,那么,二者孰優(yōu)孰劣?
2. POW與POS的安全性
POS最經(jīng)常被人詬病的一點(diǎn),是POS還沒有經(jīng)過實(shí)踐的檢驗(yàn),而POW則已經(jīng)在實(shí)踐中被證明是安全的了。
然而,正相反。
事實(shí)是——POS還沒有在實(shí)踐中被證明是不安全的,而POW則已經(jīng)在實(shí)踐中暴露了極大的安全隱患——51%攻擊。
這不是天方夜譚,也不是杞人憂天,51%攻擊對于幾乎所有采用POW算法的數(shù)字貨幣的威脅都是實(shí)實(shí)在在的。這也是為什么我們在談?wù)揚(yáng)OS的最大原因——不是因?yàn)镻OW浪費(fèi)電力,不是因?yàn)镻OS的經(jīng)濟(jì)模型更加公平,不是因?yàn)镻OS聽起來更加炫酷,而是因?yàn)椤?/p>
POW已經(jīng)暴露出極大的安全隱患和問題,而POS可以解決這個(gè)問題。盡管在其他方面POS也許都并不一定優(yōu)于POW,但是這一點(diǎn)就足以成為我們需要POS的理由。
51%攻擊的核心問題描述起來是這樣的:
在一個(gè)理想的區(qū)塊鏈中,從安全的角度考量,共識(shí)的參與者的利益應(yīng)當(dāng)與區(qū)塊鏈本身的利益一致。于是,51%攻擊才是不可行的,因?yàn)槟軌蛟诠沧R(shí)中占有主導(dǎo)地位的參與者不會(huì)愿意去攻擊這個(gè)區(qū)塊鏈,否則他們會(huì)損失自己的利益。
然而,這點(diǎn)對于POS成立,對于POW不成立。因?yàn)榈V工在系統(tǒng)中所占的利益實(shí)際上遠(yuǎn)小于整個(gè)系統(tǒng)的價(jià)值。換句話說,當(dāng)兩者有沖突的時(shí)候,POW礦工完全有可能因?yàn)樽约旱睦娑M(jìn)行惡意行為,這里,“自己的利益”也許是對于區(qū)塊鏈的主導(dǎo)權(quán)控制,也許是對于區(qū)塊鏈發(fā)展未來的理念,也許,是雙重支付攻擊的獲益。
如果你認(rèn)同這一點(diǎn),你可以不用看以下的長篇大論。如果你不同意,下面我將對POW的這種安全性風(fēng)險(xiǎn)做一些詳細(xì)的分析。
2.1POW的安全性
實(shí)際上,POW的安全性遠(yuǎn)小于大眾認(rèn)知中的POW安全性。
在大眾認(rèn)知之中,只要大多數(shù)算力是誠實(shí)的,比特幣就是安全的,而控制大部分算力是不可能的。
實(shí)際上,這個(gè)假設(shè)也被廣泛應(yīng)用于幾乎所有共識(shí)算法中——無論是POW,POS,BFT,還是其他的各種POx,我們都在采用類似這種假設(shè)——即,如果大部分節(jié)點(diǎn)或者資源,也許是1/2,也許是2/3,也許是算力,也許是權(quán)益,或者是別的什么東西,是誠實(shí)的,那么,系統(tǒng)就是安全的。
然而,這個(gè)假設(shè)本身并不天然成立——所以,在比特幣白皮書之中,中本聰并不是直接就說“我們假設(shè)50%以上的算力誠實(shí)”,而是說:
“如果有人能夠控制51%的算力,那么他完全沒有必要進(jìn)行51%攻擊,因?yàn)樗軌蛲ㄟ^挖礦來獲得更好的收益,而51%攻擊會(huì)讓他之前所挖出的幣和他的礦機(jī)變得一文不值?!?/p>
也就是說,并不是POW不會(huì)被51%攻擊,而是對POW進(jìn)行51%攻擊不劃算。
那么,對POW進(jìn)行51%攻擊真的不劃算嗎?
有人可能會(huì)說當(dāng)然——“比特幣從沒受過攻擊,這是因?yàn)楣舯忍貛诺拇鷥r(jià)高昂到你無法想象?!?/p>
然而,實(shí)際上稍微關(guān)注一些區(qū)塊鏈安全的都清楚,關(guān)于POW的51%攻擊已經(jīng)不勝枚舉——比較近的有Verge,BTG,ETC……這些都遭受過51%攻擊,并且他們都采用POW算法,而且,是采用的跟比特幣和以太坊一樣的算法。
從這個(gè)角度講,安全的究竟的是比特幣,還是POW?
有人會(huì)說我偷換概念:這些山寨幣能和比特幣(以太坊)一樣嗎?這些山寨幣價(jià)格本身就沒夠得上51%攻擊的門檻——我隨便自己做一個(gè)xx幣采用比特幣POW進(jìn)行挖礦,然后被51%攻擊了,這也能說明POW不安全?
但這個(gè)解釋并不足夠——因?yàn)樵谥暗倪壿嬛?,我們并不是說POW不會(huì)被51%攻擊,而是說51%攻擊不劃算。如果我自己造了一個(gè)xx幣然后被51%攻擊了,攻擊者沒法從中獲益。但是之前的那些例子中,攻擊者可是實(shí)實(shí)在在地在攻擊中獲益了。
那么這條邏輯哪里出了問題?
難道Verge,BTG,ETC的礦工們,不知道自己可以通過挖礦賺更多的錢嗎?他們不知道如果攻擊了這些幣,會(huì)導(dǎo)致幣價(jià)降低,于是自己之前挖的礦會(huì)一錢不值嗎?
究竟比特幣和這些幣種之間的差別在哪?難道只有價(jià)格嗎?
2.2 POW的51%攻擊分析
“POW的安全支撐不是算力,而是信仰”
讓我們來分析一下這幾次攻擊真實(shí)的情況:
通過挖礦賺更多的錢是不存在的,51%攻擊會(huì)導(dǎo)致他們手中的幣值貶值也是不存在的,因?yàn)樗麄儽旧碓诠糁熬筒恍枰瓦@個(gè)區(qū)塊鏈有任何瓜葛——他們的算力是從比特幣的礦池切過來的,而他們本身也并不持幣,只是需要從交易所購買一些幣,賣掉,然后在交易所還沒有察覺的時(shí)候進(jìn)行雙重支付攻擊再賣一次而已。
所以,歸根結(jié)底,POW的邏輯問題在于,理想中擁有超過50%算力的礦工應(yīng)該是和系統(tǒng)利益保持一致的。例如,對于數(shù)字貨幣而言,系統(tǒng)的利益就是安全性,而礦工的利益是挖礦收入,那么挖礦的預(yù)期回報(bào)應(yīng)該十分豐厚,使得礦工愿意維護(hù)系統(tǒng)的安全性,所以不愿意進(jìn)行雙重支付攻擊。
然而,挖礦的回報(bào)要豐厚到什么程度才能夠完全抵御雙重支付攻擊呢?
我們來仔細(xì)分析一下挖礦的投入和收益,以及雙重支付的投入和收益。這里,我們假設(shè)第一個(gè)條件已經(jīng)成立,即礦機(jī)除了挖這種幣之外沒有其他用途。
· 挖礦投入:礦機(jī)費(fèi)用+電費(fèi)*時(shí)間。
· 挖礦收益:算力單位算力挖礦獲得的幣數(shù)幣價(jià)+收益帶來的利息(現(xiàn)實(shí)貨幣或者虛擬貨幣)
· 雙重支付投入:礦機(jī)費(fèi)用(購買或者租用)+交易手續(xù)費(fèi)+獲得算力和雙重支付期間造成的幣價(jià)波動(dòng)
· 雙重支付收益:雙重支付獲利+利息-風(fēng)險(xiǎn)
首先,我們先把所有一次性的成本放在一旁——礦機(jī)費(fèi)用,獲得算力和雙重支付攻擊期間幣價(jià)波動(dòng),以及雙重支付攻擊的風(fēng)險(xiǎn)。
兩者相比我們發(fā)現(xiàn),考慮長期收入的話,當(dāng)有礦工已經(jīng)擁有超過50%算力的時(shí)候,幣價(jià)或者投資幣的收益并不是阻礙他進(jìn)行51%攻擊的理由——因?yàn)樗耆梢园堰M(jìn)行51%攻擊的得利來進(jìn)行別的投資。
于是,“幣價(jià)高”是不足以抵御雙重支付攻擊的,“幣價(jià)持續(xù)走高”也不足以抵御雙重支付攻擊,因?yàn)閱挝凰懔Φ莫?jiǎng)勵(lì)幣數(shù)還會(huì)隨著總算力的提高而減少,甚至,“單位算力獲益持續(xù)提高”都不足夠,因?yàn)楸仨毜檬恰皢挝凰懔Φ膸艃r(jià)走高的程度要超過其他投資品,即:攻擊者找不到比投資算力更合算的投資了”才能完全抵御雙重支付攻擊。否則的話,從理論上講,總有某個(gè)程度的獲益足以誘使51%的算力鋌而走險(xiǎn)進(jìn)行雙重支付攻擊。
然而,如果預(yù)期挖礦收益能夠跑贏其他投資品,如果這個(gè)系統(tǒng)足夠去中心化,那么應(yīng)該會(huì)有更多的人來挖礦,導(dǎo)致單位算力的收益降低。除非正在挖礦的人對于挖礦收益的預(yù)期和沒有加入挖礦的人不一樣——也就是“信仰”。
由于有信仰加持,再加上沒有加入的人獲得了“沒有信仰”的減持,因此礦工認(rèn)為投資算力是劃算的,而沒加入的人認(rèn)為投資算力是不劃算的,在這樣的場景中,擁有了50%以上算力的礦工才不去進(jìn)行雙重支付攻擊。
而相反,如果加密貨幣變得足夠主流而算力變成了正常投資品中的一種,那么,正如大家在看到幣價(jià)高漲的時(shí)候把自己從銀行、股市、基金、理財(cái)中的錢拿出來投資虛擬貨幣一樣,當(dāng)挖礦的回報(bào)不佳的時(shí)候,還有什么可以驅(qū)使擁有51%的礦工不把自己的錢從算力市場抽出來投入別的行業(yè)呢?如果這個(gè)時(shí)候,他發(fā)現(xiàn)可以進(jìn)行一次51%攻擊,而攻擊的獲利會(huì)超過自己把算力賣掉能夠抽出的錢,那么,他有什么理由不這么做?
這個(gè)結(jié)論本身就已經(jīng)足夠令人警醒了,但是它揭露出來的意義其實(shí)更加深遠(yuǎn):當(dāng)?shù)V工擁有51%算力的時(shí)候,我們一廂情愿地認(rèn)為他們的利益已經(jīng)綁在這個(gè)區(qū)塊鏈上了。然而事實(shí)是,支持著他們繼續(xù)挖礦的理由和支持他們進(jìn)行任何一個(gè)投資的理由的唯一區(qū)別,大概就只有信仰。
而這個(gè)“信仰”,其實(shí)也無非只是“挖礦能賺錢”,無論加密貨幣以后變得主流,還是最終變得式微,這個(gè)信仰都會(huì)慢慢褪掉。到了那個(gè)時(shí)候,只要當(dāng)他們發(fā)現(xiàn)挖礦不劃算的時(shí)候,撈一筆下車才是他們的最佳選擇,唯一的問題只是這一筆他們能撈多少。
“礦機(jī)成本不是攻擊成本的一部分”
那么,問題來了——我們能通過一筆雙重支付撈多少呢?這個(gè)值不能太大,因?yàn)椋?)你需要能夠從市場上收購到這么多幣;2)賣掉這么多幣不足以引起市場立刻的警覺。
于是,之前很多我們忽略掉的東西變得不可忽略了,例如——礦機(jī)費(fèi)用,交易費(fèi),幣價(jià)波動(dòng),以及其他的風(fēng)險(xiǎn)……
而這里,礦機(jī)費(fèi)用實(shí)際上是直觀上最容易看到的門檻,也是很多人對于POW信心的根源——獲得50%的算力哪有那么容易?你去看看現(xiàn)在這些POW鏈的算力然后去根據(jù)相應(yīng)礦機(jī)的市場價(jià)格算一算就知道了。
但我們其實(shí)并不需要購買礦機(jī),我們只要收購算力就夠了。換句話說,我們只要買通控制算力的人。而對于擁有算力的人來說,別忘了我們之前的分析——從利益的角度講,他們可并不是被綁在鏈上的,只要有足夠的回報(bào),他們隨時(shí)可以下車。
這里又有兩種情況:
1、他們的礦機(jī)除了挖這條鏈還有其他用途。
2、他們的礦機(jī)除了挖這條鏈沒有其他用途。
通常,我們認(rèn)為后者是更安全的。用實(shí)際中的例子來說就是,如果我們要發(fā)個(gè)POW的新幣,那么采用和主流貨幣一樣的算法是不安全的,而采用特殊的POW算法要更安全。
然而,實(shí)際上兩者同樣不安全——
首先,“有沒有其他用途”的判斷是完全主觀的,因?yàn)楸旧怼肮粽呤欠癫捎霉簟钡呐袛嗑褪侵饔^的。如果我們判斷這個(gè)礦機(jī)在攻擊之后還有其他用途,那么礦機(jī)的成本不需要計(jì)入攻擊成本之中。如果他們判斷礦機(jī)在攻擊之后沒有其他用途,那么,既然攻擊的前提條件是他們判斷礦機(jī)的投資從長期看不劃算了準(zhǔn)備下車,那這個(gè)時(shí)候,礦機(jī)已經(jīng)是沉沒成本,并不需要計(jì)入攻擊成本之中。
有人可能會(huì)說我在偷換概念——即便是繼續(xù)挖礦不賺錢,也不代表礦工會(huì)把算力賣給攻擊者??!
但事實(shí)是,本來礦工就在把他們的算力賣給礦池,那么,誰能知道那些給你的獎(jiǎng)勵(lì)比別的礦池多的礦池不是攻擊者呢?這點(diǎn),我們會(huì)在后文中展開說。
“POW中,51%攻擊的成本僅相當(dāng)于其市值的1/100,000”
現(xiàn)在,我們回到之前的結(jié)論——我們嚴(yán)重高估了POW的安全性。
1、首先,人們認(rèn)為51%攻擊需要購買能夠提供這些算力的礦機(jī),實(shí)際上并不用,只需要從算力所有者手中收購相應(yīng)的算力即可,而收購算力的成本和礦機(jī)本身的成本無關(guān),只和算力所有者的預(yù)期回報(bào)有關(guān)。這個(gè)收購可能會(huì)相當(dāng)容易,因?yàn)橹恍枰?u>制造一個(gè)回報(bào)比別的礦池略高的礦池就好了。
2、其次,人們認(rèn)為采取51%攻擊不劃算因?yàn)橥诘V也可以獲得更豐厚的回報(bào),實(shí)際上也不是,因?yàn)楣糁竽憧梢砸淮涡垣@得現(xiàn)金,而那這些現(xiàn)金你可以去進(jìn)行其他投資,同樣可以獲得豐厚的回報(bào)。于是,不要說幣價(jià)下跌或者不漲這種事了,只要投資挖礦跑不贏其他投資,它的安全性就會(huì)下降。同時(shí),無論是熊市導(dǎo)致礦工群體的信仰值下降,還是牛市導(dǎo)致民眾對于挖礦投資的信仰值上升,它的安全性都會(huì)下降——只有當(dāng)挖礦的人覺得特別賺錢而不挖礦的人不愿意進(jìn)來的時(shí)候,挖礦獲益是最大的,而安全性也是最高的。
3、再次,POW剩下的唯一安全性,就在于幣價(jià)的波動(dòng),手續(xù)費(fèi)和安全風(fēng)險(xiǎn)了——換言之,就是在將這些貨幣兌換出去的風(fēng)險(xiǎn),然而,這些風(fēng)險(xiǎn)實(shí)際上都被交易所承擔(dān)了。因?yàn)榻灰姿鶠榱嘶ハ喔偁?,?huì)盡可能提供更低的手續(xù)費(fèi),更好的流動(dòng)性,以及更快捷的轉(zhuǎn)賬,也就是,削減雙重支付攻擊的成本,也削減了POW的安全性。
于是,再減去這些,我們得出了一個(gè)結(jié)論:其實(shí)POW的安全性,基本上約等于獲得50%算力的成本,而這個(gè)成本只和收益相關(guān),而和算力本身的成本無關(guān)。
如果算力有一個(gè)相對公開透明和自由的市場,那么,只要你去crypto51.app上去看一下,租賃一小時(shí)算力的成本,幾乎就是攻擊每個(gè)貨幣的成本。如果算力無法通過公開的市場得到而需要從算力控制者手中收購的話,那么考慮到需要支付給所有者的溢價(jià),這個(gè)值可能會(huì)高于crypto51上的估計(jì)。但無論如何,它和這個(gè)貨幣的總市值相比非常微不足道,大概在1/100,000這個(gè)級(jí)別。而這么小的交易額造成的波動(dòng)幾乎可以忽略不計(jì)。
根據(jù)這些分析,我們不難理解為什么Verge,BTG和ETC會(huì)受到攻擊,我們甚至可以總結(jié)出什么樣的幣種更加容易受到攻擊:
1. 算力易于獲得并且獲得成本低:這三種貨幣都采用和主流貨幣一樣的POW,從算力租賃的網(wǎng)站上就能簡單獲得足夠攻擊的算力。
2. 幣值漲勢不佳。
3. 被許多交易所接收。
2.3 POS的安全性
那么,為什么POS能夠抵御51%攻擊呢?
其實(shí)說起來非常容易——我們根本不用進(jìn)行類似于POW這么詳盡的分析,POS也天然免疫類似于POW這種形態(tài)的51%攻擊,因?yàn)?1%攻擊無論如何繞不開的成本是50%以上的持幣,而任何對于這個(gè)幣的攻擊導(dǎo)致的幣價(jià)下降,損失最大的都只會(huì)是50%以上的持幣者本人。
但這里我們沒有考慮的一點(diǎn)是Staking Economy,也就是未來POS也會(huì)形成和POW一樣的“權(quán)益礦池”,即不愿意花精力參與共識(shí)的持幣者把出塊權(quán)委托給某些更大的持幣者或者比較有聲望的機(jī)構(gòu),然后只收取挖礦獎(jiǎng)勵(lì)(當(dāng)然委托人會(huì)獲得一部分獎(jiǎng)勵(lì))。于是,對于POS進(jìn)行51%攻擊就不再需要收購這些幣,而只需要暫時(shí)控制超過50%概率出塊的礦池就行了。
不過,即便是這樣,POS攻擊的成本也會(huì)遠(yuǎn)高于POW。
因?yàn)槭紫?,與POW需要持續(xù)投入電費(fèi),以至于小礦工必須加入礦池來獲得持續(xù)的收入不同,POS中持續(xù)投入的服務(wù)器維護(hù)費(fèi)用要遠(yuǎn)小于POW,所以算力集中于大礦池的可能性會(huì)小于POW。也就是說,即便Staking Economy真的在POS鏈中出現(xiàn),也未必一定會(huì)出現(xiàn)幾大礦池壟斷的情況。
并且,最重要的是,擁有一定數(shù)量的幣的節(jié)點(diǎn)也完全可以并且有意愿自己維護(hù)一個(gè)節(jié)點(diǎn),而不用依賴礦池。尤其是一些大的持幣者——你很難想象他們不愿意維護(hù)全節(jié)點(diǎn),也就是說他們并不關(guān)心這個(gè)鏈上出的塊。另一個(gè)最重要的原因是,與POW不同POS出塊是需要持幣人簽名的,因此POS礦池在作惡的時(shí)候可能會(huì)付出更大的社會(huì)代價(jià),而對于POS礦池而言,由于他們實(shí)際上挖礦所需要的設(shè)備投入遠(yuǎn)小于POW,所以他們在現(xiàn)實(shí)之中社會(huì)地位和信譽(yù)的成本反而是最高的。
當(dāng)然,其實(shí)這幾點(diǎn)都改變不了一個(gè)結(jié)論,就是Staking Economy這種委托進(jìn)行共識(shí)的做法的確會(huì)削弱POS的安全性。
因此,我個(gè)人對于Staking Economy這種東西的觀感并不正面,同時(shí),很多POS項(xiàng)目也同樣對于Staking Economy所帶來的安全隱患有所意識(shí),所以會(huì)對相關(guān)機(jī)構(gòu)進(jìn)行規(guī)范,比如要求一定的持幣量。但無論如何,就如同POW礦池一樣,POS的Staking Economy也是無法避免的,但兩者相比的話,如果被委托的機(jī)構(gòu)是大持幣人的話,那么最終也只是把攻擊成本從50%變成了一個(gè)更小的比例,比如10%,但絕不會(huì)像是POW一樣,是1/100,000這樣的級(jí)別。
以上,我們說明了在POS中進(jìn)行50%攻擊的成本很高——那么從另一個(gè)角度講,如果花了這么高的成本,攻擊者有可能獲利嗎?答案是幾乎沒有任何可能,因?yàn)槟憧偟谜业接袀€(gè)冤大頭愿意和你進(jìn)行這么大筆的交易——交易所幾乎不可能對這么大筆交易買單。所以說,唯一的可能是你找到兩個(gè)并不懂虛擬貨幣的冤大頭,然后進(jìn)行一個(gè)真正意義上的場外的“雙重支付”……
不過如果真的存在這樣的人的話,似乎我們有簡單得多的方法可以忽悠他們。
然而,這還并不足以說明POS對于POW的安全優(yōu)越性,因?yàn)槲覀冎皇钦f了在POW中適用的51%攻擊無法復(fù)制到POS,但POS本身會(huì)受到另外的兩種不存在于POW中的攻擊的威脅:長距離攻擊(Long range attack)和無利益攻擊(Nothing-at-stake attack)。
我們分別來分析一下這兩種攻擊。
2.4 POS的長距離攻擊分析
長距離攻擊的概念是,擁有不超過50%權(quán)益的節(jié)點(diǎn)可以通過某種方法生成一條更長的鏈,取代目前的最長鏈——這里所謂的“某種方法”通常都需要一段比較長的時(shí)間。它涉及到POW和POS的一個(gè)重要區(qū)別——POW實(shí)際上不僅僅能夠生成隨機(jī)數(shù),而且能夠?qū)崿F(xiàn)在異步系統(tǒng)中每隔一段時(shí)間生成一個(gè)隨機(jī)數(shù),這個(gè)性質(zhì)是POS不具備的,所以POS必須引入某些時(shí)間的概念。然而,這就給了惡意節(jié)點(diǎn)可乘之機(jī),因?yàn)檎\實(shí)節(jié)點(diǎn)獲得的出塊權(quán)是有時(shí)間限制的,而惡意節(jié)點(diǎn)沒有。
這一點(diǎn)本身,其實(shí)本不應(yīng)該屬于我們這次的討論范疇,因?yàn)槲覀兿胍容^POW和POS的本質(zhì),而這一個(gè)問題其實(shí)并不是POS的本質(zhì)缺陷,換句話說,POS可以通過一些方式,例如VDF,來解決這個(gè)問題。然而,有鑒于采用VDF解決這個(gè)問題的算法還不成熟,以及我個(gè)人認(rèn)為其實(shí)目前的解決方案也是完全夠用的,所以,這里我還是詳細(xì)地講一講這個(gè)問題。
目前已知的長距離攻擊方法有三種:
1、向前腐化攻擊(Posterior Corruption Attack):當(dāng)曾經(jīng)的權(quán)益持有者賣掉權(quán)益之后,他們就不再受到持有的幣貶值的約束了,然而,如果超過50%的早期持幣者賣掉了手中的幣的話,攻擊者可以買通他們再重新生成一條他們沒有賣掉權(quán)益的歷史,然后有可能可以創(chuàng)造出一條更長的鏈。
2、權(quán)益流血攻擊(Stake Bleeding Attack):不到50%權(quán)益的節(jié)點(diǎn)可以通過“藏一條鏈自己的鏈”這一非常簡單的方式進(jìn)行長鏈攻擊,因?yàn)樵谧约旱逆溕希驗(yàn)槌鰤K的只有自己的節(jié)點(diǎn),所以他們會(huì)一直獲得挖礦獎(jiǎng)勵(lì)。雖然一開始他們生成的鏈一定短于外面的鏈,但是只要他們藏的時(shí)間足夠長,他們的權(quán)益終將超過50%,并且慢慢地獲得更快的出塊頻率超過外面的鏈。
3、權(quán)益粉碎攻擊(Stake Grinding Attack):這種攻擊方式在不同的POS中有不同的形式,但總體來說,擁有不到50%權(quán)益的節(jié)點(diǎn)可以利用自己算力上的優(yōu)勢,或者自己可以隨意改變區(qū)塊時(shí)間戳的優(yōu)勢,獲得比誠實(shí)節(jié)點(diǎn)更多的出塊機(jī)會(huì),然后利用這個(gè)優(yōu)勢通過一段較長的時(shí)間生成比誠實(shí)節(jié)點(diǎn)更長的鏈。
通常應(yīng)對這三種攻擊的應(yīng)對是檢查點(diǎn)(Checkpoint),即一段時(shí)間需要生成一個(gè)由一些節(jié)點(diǎn)認(rèn)證過的區(qū)塊來保證這個(gè)區(qū)塊之前的鏈不會(huì)再更改。
“如果能接受下載客戶端,那么為什么不能下載檢查點(diǎn)?”
對于很多更理想主義的區(qū)塊鏈支持者而言,檢查點(diǎn)機(jī)制是個(gè)不那么“優(yōu)雅”的權(quán)宜之策,因?yàn)樗噶藥讉€(gè)區(qū)塊鏈支持者不能接受的罪過:
1、理想狀態(tài)的區(qū)塊鏈中,任何人都不需要相信除了算法和創(chuàng)世區(qū)塊之外的任何東西就可以獨(dú)立驗(yàn)證任意交易的合法性。然而,檢查點(diǎn)相當(dāng)于引入了一個(gè)另外的需要信任的東西。即便這個(gè)檢查點(diǎn)是所有持幣者簽名認(rèn)證的,從理論上來講這也是不可接受的,因?yàn)閷τ谛录尤胂到y(tǒng)的節(jié)點(diǎn)而言,他們需要信任曾經(jīng)的持幣者;
2、檢查點(diǎn)需要引入簽名,而簽名會(huì)破壞匿名性。
關(guān)于匿名性的問題,我們同樣放到后文中深入討論,這里我們先說第一個(gè)問題。
這里我想要闡述一下我對于檢查點(diǎn)這個(gè)機(jī)制的觀點(diǎn)——從現(xiàn)實(shí)的角度看,這個(gè)事真的不能接受么?
實(shí)話實(shí)說,如果你是個(gè)剛剛進(jìn)入網(wǎng)絡(luò)的節(jié)點(diǎn)——下載創(chuàng)世區(qū)塊和算法,以及下載下載創(chuàng)世區(qū)塊,算法和歷史,有什么本質(zhì)上的區(qū)別?后者無非就是多了一種可能性,即惡意節(jié)點(diǎn)可以通過長鏈攻擊偽造一份歷史,于是盡管你獲知了正確的算法和創(chuàng)世區(qū)塊,你其實(shí)并沒有獲得真正的鏈。
但問題在于,對于普通用戶而言,你怎么知道你下載的客戶端用的是正確實(shí)現(xiàn)的算法呢?雖然從理論上來說我們需要信任的只是算法而已。但實(shí)際上,無論是現(xiàn)實(shí),還是未來,我都有理由相信,沒有人會(huì)從頭開始做算法的實(shí)現(xiàn)——實(shí)際上,每個(gè)人還是需要信任某些可信節(jié)點(diǎn)來提供的安全的客戶端,也就是軟件,而且,沒有人會(huì)去扒開代碼看看這個(gè)軟件是否和論文相符。
那么這樣,我們假設(shè)需要依賴可信節(jié)點(diǎn)來獲取區(qū)塊的歷史,這也不是什么十惡不赦的事情。
“鏈外共識(shí)是客觀存在的”
然后,就有了第二個(gè)問題——的確,長距離攻擊是可能的,正如51%攻擊也是可能的一樣,我們不光要考慮這種攻擊理論上的可能性,也要討論它在實(shí)際之中的條件。
我們在前面論證了51%攻擊對于POW的危險(xiǎn)性的時(shí)候,先是分析了它理論上的可能性,然后,再分析了它在現(xiàn)實(shí)中攻擊的條件,發(fā)現(xiàn)其實(shí)無論是在理論上還是實(shí)際上,條件都要比大眾認(rèn)知中的低得多,于是,我才得出了POW有安全隱患的結(jié)論。
那么,我們同樣分析一下以上幾種長距離攻擊在現(xiàn)實(shí)中生效的條件。
首先,無論是權(quán)益流血攻擊,還是權(quán)益粉碎攻擊,成功的概率都依賴于你擁有的權(quán)益比例。換句話說,雖然攻擊者沒有超過50%的權(quán)益所以沒法正常的生成一條更長的鏈,但是如果他們擁有,例如說40%的權(quán)益,那么,他們可以通過以上兩種手段,以及一個(gè)比較長的時(shí)間來進(jìn)行長距離攻擊。
于是,大家已經(jīng)看出這種攻擊不實(shí)際的地方了——當(dāng)惡意節(jié)點(diǎn)的權(quán)益比較小的情況下,他們發(fā)動(dòng)一次長距離攻擊會(huì)長得不現(xiàn)實(shí)。如果他們占有的權(quán)益比較多的時(shí)候,他們一沒有理由來攻擊這個(gè)系統(tǒng),二所需要攻擊這個(gè)系統(tǒng)的成本并不比50%的權(quán)益低多少——這點(diǎn)本身就是POS的優(yōu)勢。
唯一一種比較麻煩的長距離攻擊是“向前腐化攻擊”,而且,特指這些曾經(jīng)的持幣者本身就是攻擊者的情況。因?yàn)槿绻@些攻擊者本身沒有想過要攻擊,只是再賣了幣之后被人買通這種情況是可以被一種叫做Key-Evolving Signature的東西解決的。所以,他們必須要從持幣的時(shí)候就已經(jīng)開始做好了攻擊的準(zhǔn)備,即偷偷開始私藏一條鏈才行。
這其實(shí)相當(dāng)于一個(gè)長時(shí)間的51%攻擊的情況,即以前的大權(quán)益所有者(超過50%)一邊私藏一條鏈,一邊緩慢地把權(quán)益賣掉,在權(quán)益全部賣光之后,掏出私藏的鏈告訴大家說:“我胡漢三又回來了,你們吃了我的給我吐出來!”
然而,我對于區(qū)塊鏈的核心作用的一貫看法是——區(qū)塊鏈的意義在于用“機(jī)器的共識(shí)”代替“人的共識(shí)”,但是,在目前這個(gè)階段,有些“人的共識(shí)”是我們目前解釋不了的,也沒法去取代的。而這個(gè)時(shí)候,盲目的去假裝這種“鏈外共識(shí)”不存在而粗暴地想要用某個(gè)算法在摒棄一切鏈外共識(shí)的情況下實(shí)現(xiàn)絕對的安全,是不實(shí)際的也是沒有意義的。
所以,我同意康奈爾大學(xué)Elaine Shi教授對于這個(gè)問題的看法——實(shí)際上,如果這種情況真的出現(xiàn),其實(shí)某一種叫做“社會(huì)共識(shí)(social common knowledge)”的東西會(huì)自然而然地去糾正它。更簡單一點(diǎn)說,對于任何一個(gè)POS鏈,假設(shè)它的早期權(quán)益所有者突然某一天拿著一條更長的鏈回來,對于現(xiàn)在的權(quán)益所有者說:把你們的錢都給我,現(xiàn)在的權(quán)益所有者,甚至說,不要說現(xiàn)在的權(quán)益所有者了,大概所有這條鏈的利益相關(guān)方,都會(huì)同仇敵愾創(chuàng)造出一個(gè)新的規(guī)則不承認(rèn)這條鏈的合法性,即便從算法上這條鏈確實(shí)更加“合法”。
那么,一條不會(huì)被大部分這條鏈?zhǔn)褂谜咚邮艿逆?,和一條新創(chuàng)造出來的分叉鏈又有多大的區(qū)別呢?又或者說,在以太坊經(jīng)過了幾次升級(jí)后的現(xiàn)在,一條根據(jù)原規(guī)則合法的鏈,例如ETC,是不是也可以算作一個(gè)長距離攻擊呢?
所以,歸根結(jié)底,所謂“社會(huì)共識(shí)”,無論是在現(xiàn)在,還是我們可見的未來,都是客觀存在的,因此,無論是這種長距離攻擊,還是其他的幾種長距離攻擊,即便上有理論上的可能,實(shí)際上,只要它仍舊需要一個(gè)很長的時(shí)間來進(jìn)行,例如數(shù)月或數(shù)年,那么它的威脅其實(shí)非常有限。
然后,無論是引入檢查點(diǎn),或者引入一個(gè)“委員會(huì)名單”,或者是引入“社會(huì)共識(shí)”,實(shí)際上都是引入一個(gè)“有某些可信的鏈外信息存在”的假設(shè)。而在我看來,在現(xiàn)實(shí)之中,無論是現(xiàn)在還是可見的未來,這對于POS的安全性都不是個(gè)問題。
2.5 POS的無利益攻擊分析
真正無解的問題是無利益攻擊。
POS對于無利益攻擊是無解的,這其實(shí)在任何POS里都一樣,因?yàn)楦鶕?jù)POS的原理,它對于在這個(gè)系統(tǒng)中毫無利益或者利益很小的節(jié)點(diǎn)的約束就是很低的。
在一個(gè)極端狀況中,例如整個(gè)系統(tǒng)中有一億個(gè)節(jié)點(diǎn)所有人的利益都很小,那么任何POS算法都不安全,因?yàn)閻阂夤?jié)點(diǎn)行為造成的利益損失太少了,所以我們沒有理由認(rèn)為50%以上的節(jié)點(diǎn)是誠實(shí)的,反而,如果他們能夠從惡意行為中獲益的話,根據(jù)公地悲?。═ragedy of the Commons),他們是一定會(huì)作惡的。
懲罰機(jī)制并不能解決這個(gè)問題,因?yàn)閼土P必須要和獲益相當(dāng),而在這樣的一個(gè)所有節(jié)點(diǎn)利益微小的系統(tǒng)中,要不然懲罰也只能忽略不計(jì),要不然懲罰太高導(dǎo)致沒有人愿意進(jìn)入這個(gè)系統(tǒng)。
因此,幾乎所有POS,都額外需要引入一個(gè)準(zhǔn)入機(jī)制——要么是通過抵押,要么是有持幣數(shù)門檻,所有參與共識(shí)的節(jié)點(diǎn)必須保證他們擁有足夠讓他們在意從而約束他們行為的權(quán)益。
而這點(diǎn)在POW里是不一樣的,因?yàn)镻OW中無論你的算力多少,你損失的電費(fèi)是逃不掉的。并且,因?yàn)槟惬@益的唯一方式是雙重支付——所以,當(dāng)你的算力在不超過50%的時(shí)候,你作惡是嚴(yán)格不劃算的。
換句話說,實(shí)際上,對于POW而言,小礦工(挖到塊幾率較小的礦工)的作惡行為會(huì)受到很重的懲罰,因?yàn)樵诶速M(fèi)算力的同時(shí)幾乎不可能有回報(bào);而對于大礦工(挖到塊幾率較大的礦工),他們的作惡行為則有可能獲益,因?yàn)樗麄兟?lián)合起來進(jìn)行50%攻擊的收益可以遠(yuǎn)超成本。
然而,對于POS,小礦工的作惡行為受到的懲罰很輕微,于是,只要作惡能夠獲益,他們就有動(dòng)力去作惡;然而POS對于大礦工作惡的懲罰則極其嚴(yán)重,因?yàn)樵酱蟮牡V工代表他們的權(quán)益越多,于是惡意行為造成的損失就越大。
這兩點(diǎn),才是POW和POS的根本性區(qū)別。
如果比較兩者優(yōu)劣的話,我們可以很明顯地看到:
· 在一個(gè)算力(權(quán)益)更分散,更平均的系統(tǒng)中,POW更合適。
· 在一個(gè)算力(權(quán)益)更集中,更不平等的系統(tǒng)中,POS更合適。
我們已經(jīng)比較了POW和POS的安全性問題,也得出了一些結(jié)論——但很遺憾的是,在一個(gè)非許可的公有鏈的環(huán)境中,實(shí)際上POW和POS最終都會(huì)趨向于一個(gè)算力(權(quán)益)更集中、更中心化和更不平等的系統(tǒng)。