ETH2.0:從PoW邁向PoS的征途

PoW、PoS和女巫攻擊

ETH作為當今加密生態的頭部公鏈,其擁有最為繁榮的生態系統和最大的TVL。因此,ETH2.0的升級計劃也理所當然的成為當下加密世界最受關注的熱點之一。而該次升級計劃的核心之一就在於驗證機制將由PoW轉變為PoS。

根據區塊鏈共識機制中最為核心,也是最為基礎的“抗女巫攻擊策略”進行分類,區塊鏈共識機制可以分為最為主流的兩大分支——工作量證明(Proof of Work,即PoW)和權益證明(Proof of Stake,即PoS)。

我們先簡單說明一下什麼是女巫攻擊:所謂女巫攻擊(Sybil Attack),就是指通過偽造多個ID對網絡進行干擾的攻擊方式。該名稱來源於美國著名小說《女巫》。該小說的主角患有多重人格障礙症,一個身體內同時兼容多個人格。

女巫攻擊在網絡中很常見,淘寶產品中的刷量、刷贊等都是黑客通過偽造大量ID造假完成的。女巫攻擊最常見的攻擊場景是數據冗餘機制,即為了提升網絡安全,將數據進行多重備份的機制,而區塊鏈正是使用數據多重備份機制的典型。因此,在分佈式數據存儲的區塊鏈中從來不乏女巫攻擊的身影。

要實現女巫攻擊,需要通過一個實體節點偽造出大量的偽裝節點,並將這些節點廣播到整個區塊鍊網絡。當其他正常節點查詢信息時經過這些偽裝節點,攻擊者可以操控偽裝節點對查詢進行干擾,繼而反饋給查詢者虛假信息,或者乾脆不反饋任何結果。

當一個區塊鏈中的偽裝節點數量超過真實節點時,攻擊者會憑藉投票票數領先的優勢擊退真實的節點。攻擊者還可以通過拒絕接受新區塊、返回錯誤信息等方式拒絕新節點的加入,以達到對區塊鏈的統治。這種情況下,攻擊者就擁有了整個區塊鏈的決定權,可以篡改交易記錄、更改交易順序,對區塊鏈造成極大的危害。

區塊鏈的基本原理就是用戶將數個交易打包成塊,通過哈希引用把單獨的區塊連接成一條鏈,從而得到一個共享的賬本。但是直接這樣使用一個賬本的安全性就很難保證,因為壞人同樣也可以創造一個賬本,然後把兩個賬本同時擺在用戶面前。而哪個是真的哪個是假的,用戶應該相信哪一個,就成了一個複雜的權衡問題。

如果在中心化的環境中,這個問題將不再是問題,例如,如果我有一個銀行賬戶,其中餘額的多少完全由銀行的中央系統所確定。如果賬戶的實際數額和事實情況不一致,我就可以通過與中心系統協調或者法律途徑解決問題。

但在去中心化的世界中,是不存在這個一個一錘定音的中心化機構的。因此,人們就需要通過其他方式達成共識,才能保證賬本的公正性。

那麼問題來了,在去中心化的環境中,應該怎樣達成共識呢?

最經典的辦法就是投票。通過大家共同參與投票,就可以選出一個值得信任的賬本,然後共同使用該賬本。

但是,說到投票,公平公正的問題就無法忽略,例如,投票權要怎麼分配就是個不得不考慮的問題。

如果在一次投票活動中某一個體擁有了可以左右全局的票數,那麼這場活動就很難再稱之為投票。因為這意味著他想做什麼,結果就是什麼樣的,而這對於其他個體顯然是不公平的,這種不公平的方式也注定無法獲得共識。因此,如果我們真的希望達成某個共識,就要排除這種不公平。所以投票權的分配被視為是共識協議中最為核心的部分之一。

如果發生在線下,投票權分配的問題其實很容易就能得到解決。實行簡單的一人一票即可。至於身份驗證問題,通過身份證件在投票的時候登記一下就可以解決。

但是如果發生於線上,一人一票的問題就會被無限複雜化。

首先,在線上的環境中,尤其是去中心化的環境中,如何定義“一個人”就是個很大的問題。大家在線上都是以匿名的方式存在,甚至無法判斷網絡對面到底是一個摳腳大漢還是一條狗。因此,我們就需要一個抗女巫攻擊的機制。但到底是將一個賬戶視為一個人,還是將一個ip視為一個人,抑或是再用別的什麼標準去確定?

在區塊鏈中,最常用的兩大解決方案就是工作量證明(PoW)和權益證明(PoS),後者包括代理的權益證明(DPoS)。當然除它們之外還有一些其他的證明方式,比如說證明擁有多少空間,或者證明燃燒了多少貨幣,但是目前最為主流的還是PoW和PoS這兩種。

PoW工作量證明

工作量證明(PoW)的基本思想就是通過算力決定出塊權。如果你能解出一個PoW計算難題,你就可以獲得出塊的權力。我們甚至可以粗暴的理解為一個CPU、一個GPU、或一台礦機一票。這種模式的優勢在於:

1、整個系統是無許可的。參與者不需要任何人許可,只要有機器有算力就可參與。甚至理論上都不一定需要機器,如果說你可以手動算出一個區塊的哈希,並及時將結果上傳,別人依舊會承認這是一個合法的區塊。

2、PoW投票行為本身成本是比較高的,不論是使用CPU、GPU還是用礦機,機器的成本和電力的成本,都是實打實的真金白銀。這就意味著,如果想在PoW的環境下進行女巫攻擊將要付出極高的成本,而這往往會讓攻擊者得不償失。

3、PoW中所投的票和投票權是保持綁定的。按照工作量證明的一般邏輯,投票的時候需要先打包出一個塊,然後再對這個塊做工作量證明,如果做出證明就相當於投出去一票,但是這個時候打包的塊已經沒有辦法修改了。而另一方面,如果想要回滾掉自己出的塊,必須付出和回滾別人的塊時候所需的同等的算力。這意味著一旦投票成功以後,即使是投票者本人也修改不了投票的內容,投票的信譽度得以保障。

當然基於PoW機制的共識算法也存在一些無法規避的缺點。

1、PoW的延遲非常高,因為把交易打包到區塊以後,這個區塊並不是馬上就成為一個有效的候選區塊。至少還要完成一個工作量證明這個區塊才能稱之為候選區塊。

於是,從打包好區塊到做完區塊的工作量證明這一段時間內,交易是不可能被人確認的。所以即便比特幣不是等六個塊確認,而是看到一個塊就確認,確認一筆交易平均也要等十分鐘時間。

2、PoW機制另一個被人詬病的缺點就是能耗特別高、不環保。對於這一點,工作量證明的能耗是否必要,我覺得見仁見智,可以持保留意見。雖然它的確存在一些浪費問題,但攻擊者的成本也因此被拔高到難以承受的地步,從這個角度來說,似乎也不全是件壞事。

PoS權益證明

權益證明(PoS)基本的思想是:當你持有Token(stake),你就有記賬權和投票權。你的投票權和你持幣的數量是成正比的。簡而言之,Token越多,投票權就越大。

PoS協議的基本框架是按所有的參與者的持幣量,去分配打包權和投票權。這也就意味著,參與者的信息是已知的,至於這有什麼意義咱們先按下不表,後續再論。

回到打包權和投票權,在PoS的系統裡打包和投票兩件事是分開的(PoW系統裡這兩個沒有分開)。分配完打包權以後,拿到打包權的人就有資格出一個候選區塊。這個區塊裡包含要處理的交易和打包權人自己的簽名。

但是候選區塊並不意味著就會被加入共識,在廣播候選區塊以後還需要由那些有投票權的人去投票(投票的形式就是在被投票的區塊上做個簽名)。只有在投票後得到相對多數票的支持,候選區塊才會最終被加入共識,變成一個有效的區塊。當然投票的過程可以用很多方式執行,比較常見的就是可以用一個少數服從多數的共識算法去實現。

這一點跟PoW非常不一樣,因為在PoW系統里人們根本不知道全網的算力有多少,只能靠估計,而且一般還估計不准。所以PoW系統裡幾乎不可能用一個確定的閾值去判斷什麼是多數。

在PoS系統中,如果檢測到有的參與者違反了PoS共識的協議,就可以對他們做出一些懲罰。比如有的人把自己的一票投給很多個塊,或者說有票但就是不投,這些會對系統的安全性造成影響的行為都可以懲罰。

接下來,讓我們來看一下權益證明的優點有哪些:

1、礦工和持幣者的動機是一致的。

PoS的礦工都必須持幣,這意味著在PoS的生態裡將減少不持幣但靠機器來挖礦的角色。在PoW的社區中,經常會出現有錢人、開發者、以及礦工三方的利益不是完全一致的情況,然後就會出現爭執,以至於最後很多事情都難以進展。而在PoS中,至少礦工和資本家的利益會更為一致,一定程度上減少了衝突和分歧。

2、PoS的延遲可以做得非常低,確認可以非常快。

在PoS系統裡,拿到一個交易就可以馬上打包,打包以後就可以廣播,這個時間是不需要等待的,不像PoW,必須等至少做一個PoW問題的時間。 PoS共識的延遲主要是受限於網絡和參與投票的人數。因為投票的人越多,要等的時間也就越久。

3、PoS比較環保,因為它不需要做工作量證明。

在Pos中,投票實際上就是做個簽名,最多再做一些簡單的運算,比求解PoW難題容易多,自然消耗的算力和電力就大大減少。

但不得不說,PoS的缺點也同優點相對,另外,它也失卻PoW系統的一些優點。

1、與無許可的PoW系統相比,PoS的系統在匿名性和許可性上稍微差一些。因為一個人如果要加入一個PoS的系統,首先要持有Token。這個Token是無法通過其他方式獲得,只能跟持有Token的人去做交易,且只有在交易成功拿到幣後才可以加入系統。不像PoW,只要有一台機器接入系統,就可以直接挖到Token。

2、投票行為本身成本非常低,只需要做個簽名就可以生成一個有效的投票。這樣的話在安全性上會有一些問題。比如PoS系統常見的無利害攻擊問題。

另外,投票權可以復用,可以轉讓,這也是相當危險的。如果用戶把自己的私鑰賣給別人,那他以前投出的票或是在歷史上每個分支做出的選擇,拿到其私鑰的人都可以再去重新選擇一次。這會在安全性上帶來一些問題。

3、我們在前面提到過,在PoS機制中,分配投票權和打包權之前參與者的信息是已知的。因此,投票權的決定時間是早於生成候選區塊的。這樣一來意味著人們可以選擇的策略空間將會更大,整個博弈會變得更複雜。通常來說,策略空間大對於系統的安全性相當不利,因為這會給攻擊者留出更大的操作空間。其結果就是在PoS系統中會有更多的攻擊方式,比如無利害攻擊、長程攻擊等。

4、在PoS中礦工和資本家通常是一個人(一個群體),儘管這會減少整個系統的博弈成本。但也意味著整個系統的中心化程度會水漲船高。

PoW和PoS

在區塊鏈中,有一個不可能三角,即安全性、效率和去中心化。通常情況下,這三方面是無法兼得的。而PoW和PoS就是在這三個方面做出了不同的取捨。

PoW以無許可和算力門檻保證了整個系統的安全性和去中心化程度,但在效率方面則不可避免的會有缺失,實際上其也確實長期被延遲高、低吞吐量等問題所困擾。

而PoS則選擇了另一條路,它不再無許可,取而代之,礦工成為了生態系統的實際參與人。這意味著如果礦工做出了不利於整個系統的決策,作惡者也會付出代價(代幣Token下降)。但其投票機制也降低了整個系統的安全性,同時,礦工和資本的身份合一也讓系統出現了中心化的風險。

有人曾經打過一個比方。

在一個典型的PoS共識系統中,大家通過股權質押獲取一張門票,然後獲得門票的人坐在會議室裡指點江山。

而在以比特幣為代表的PoW共識系統中,一群人坐在漆黑的荒野裡,他們既不知道其他人的身份,也不知道荒野裡一共有多少人、其他人何時來何時走,只能通過喊出自己的觀點和聽清他人的喊聲來交流並最終達成共識。

不得不說這個比方相當的形象,PoW和PoS的特點盡顯無疑。而實際上兩者孰優孰劣是無法比較的,對他們的採用只能體現出兩種不同的權衡。

ETH2.0最終決定採取PoS也意味著對目前的ETH來說,效率問題已經相當嚴峻了,因此可能需要以一定的安全性和去中心化程度作為交換,這是無可厚非的,畢竟當下沒有可以兼顧的解決方法。

如果能把PoW和PoS的優勢結合起來,就有可能做到一個安全性又高,確認又快,吞吐量大,而且能耗比較合理的系統。

但其技術難度之大,自不必多說。因此,目前我們只能靜觀其變,期待更好的解決方案橫空出世。

Total
0
Shares
Related Posts