Pos共識機制、以太坊Casper共識機制以及Casper的發展過程(總結)
部分原創,部分轉自https://www.jianshu.com/p/953558bb5e64
區塊鏈共識技術二:pos共識機制
從比特幣誕生以來,POW的設計理念成為數字貨幣和區塊鏈的主流共識機制,但是由於其對能源的消耗巨大,2013年點點幣(Peercoin)系統中提出並實現了另一種共識機制——權益證明。目前點點幣和量子鏈等都採用POS共識機制,ETH正在積極探索對POS的應用。
POS最早出現於NXT社群,該社群出來很多現在很牛的技術討論,比如IOTA的DAG也是出自於此,打算之後重點關注下。
POS(proof of stake,),即權益證明,類似於股東機制,沒有挖礦過程,在創世區塊內寫明瞭股權分配比例,之後通過不斷地轉讓和交易,逐漸分散到不同的使用者手裡,並通過利息的方式產生新增貨幣,實現對節點的獎勵。
1、 pos的實現原理及公式
POS的公式為:
hash(block_header) =<target * coinage
幣齡的計算:coinage = 幣的個數*幣的剩餘使用時間
其中,coinage表示幣齡,這將意味著,幣齡越大,越容易得到答案。而其中幣齡的計算是通過挖礦者擁有的幣乘以每個幣的剩下使用時間得到,這也將意味著擁有的幣越多,也越容易得到答案。這樣,
2、pos的缺陷
從pos的實現原理和實現演算法公式上分析,pos很完美的解決了pow的算力以及51%攻擊問題,那麼,pos是不是真的就很完美了呢?
缺陷一:
我們再從pos的實現演算法公式去看,幣齡的計算公式中,假如一開始挖礦,只有創始區塊中有幣,也就是說其他礦機是沒法參與挖礦的,因為幣的個數這個值對他們來說永遠是零,這也就是
缺陷二:
同樣是從pos的實現演算法公式可以分析到,幣齡其實就是時間,一旦挖礦者囤積一定的幣,很久很久之後發起攻擊,這樣他也將很容易拿到記賬權,所以我們得給每個幣設計一個時間上限。
缺陷三:
設計時間上限後,雖然解決掉了部分挖礦者囤積幣的缺陷,從公式中仍然看到還會面臨一個問題,也就是幣的數量這個因素還是會影響我們拿到記賬權,很多挖礦者還會囤積代幣,給代幣造成流通上的缺陷。目前有些平臺引入幣齡按時間衰弱的方案來解決這一缺陷(例如:瑞迪幣)。
缺陷四:
接下來讓我們來看看pos共識機制還有哪方面的不足,即使上面的各種缺陷都多少有些解決方案,但例如挖礦者挖一段時間後離線,此時,時間將不納入幣齡減弱計算,這樣,挖礦者通過離線時間長來囤積挖礦,同樣面臨災難。
三.pos的發展歷程
由於pos存在以上四大缺陷,所以pos的發展歷程經歷了三個版本,即pos1.0、pos2.0以及pos3.0,其中pos2.0在演算法公式中使用的是幣的數量,這樣,上述缺陷二到四就不再是問題,可這樣以後卻導致了pos共識機制面臨了無成本利益的問題(即 nothing at stake),這也將意味著很容易產生分叉。
四.casper協議
第三章節我們說到pos的發展歷程時,提到其為了解決其中4個缺陷,引出很多版本,也就是使用了pos2.0,也會無法避免的引發無成本利益導致很容易分叉的問題,而以太坊的共識機制就是使用的pos共識機制,那麼我們來看看以太坊是如何解決這個問題的?
1.什麼是無成本利益關係問題
在解決無成本利益關係這個問題前,我們先來看看什麼是無成本利益關係問題,因此,我們可以先模擬下這種場景,如下圖所示:
區塊鏈分叉圖
假設我們處在上面的這種情況下,有一條藍色的主鏈和一條紅色的從主鏈中分出來的鏈條,如何禁止一個惡意的礦工在紅色區塊上挖礦然後推動一次硬分叉(Hard Fork)呢?
在一個工作量證明系統上,這一風險是可以被減輕的。
假設惡意礦工想在紅色鏈上挖礦。即便她投入了她所有的雜湊算力,也不會有任何礦工加入她在新鏈上挖礦。每個其他人都將繼續在藍色鏈上挖礦,因為在最長的鏈上挖礦收益更可觀,而且沒有風險。
記住,工作量證明在資源方面是非常昂貴的。對一個礦工來說,花費許多資源在一個將會被網路拒絕的區塊上是沒有任何意義的。因此,鏈分裂在一個工作量證明系統中是被避免了的,因為攻擊者將不得不付出大量金錢。
但是,當你把這種情形放到到權益證明下的時候,事情看起來就有些不一樣了。如果你是一個驗證者,你可以簡單地把錢投到紅藍兩條鏈上,完全無需擔心間接的不良後果。不管發生什麼事,你都總是可以贏,不會失去任何東西,不管你的行為有多惡意。
這就是所謂的“無成本利益關係(Nothing at Stake)”問題,也是以太坊必須解決的問題。他們需要一種協議,可以實行權益證明,同時減少“無成本利益關係”問題。
2.引入casper協議解決無成本利益關係問題
Csaper是以太坊選擇實行的PoS協議,既然有人惡意去使得我們的區塊鏈產生分叉,那麼我們想方設法去對惡意製造者加以懲罰,這樣不就可以解決我們說的無成本利益關係問題了嗎?Csaper協議正式奔著這樣的做法去實現的,那我們來看看Csaper是如何去做的呢?
i. 驗證者押下一定比例的他們擁有的以太幣作為保證金。
ii.然後,他們將開始驗證區塊。也就是說,當他們發現一個可以他們認為可以被加到鏈上的區塊的時候,他們將以通過押下賭注來驗證它。
iii.如果該區塊被加到鏈上,然後驗證者們將得到一個跟他們的賭注成比例的獎勵。
iV.但是,如果一個驗證者採用一種惡意的方式行動、試圖做“無利害關係”的事,他們將立即遭到懲罰,他們所有的權益都會被砍掉。
正是利用了這樣的對賭協議,幫我們對惡意製造者加以了懲罰,使得我們的區塊鏈儘量保障不會產生分叉。
轉自:https://ethfans.org/posts/ethereum-casper
科普 | 什麼是以太坊 Casper 協議?
Ajian | 7. Dec, 2017 | 2952 次閱讀
(編者按:在12月3號的亞太區以太坊培訓和交流Meetup上,Jon Choi為大家貢獻了關於加密經濟學和Casper的演講。這篇文章同樣是關於Casper的,而且從行文中可以看出本文的作者受到Jon Choi的解釋的啟發,閱讀本文應可增進對Casper的理解。而Jon Choi的《Casper 101》,見EthFans上網站的中譯。)
一般來說,如果你對以太坊(Ethereum)和加密貨幣感興趣,你一定聽過了權益證明(Proof of Stake)和以太坊Casper這兩個名詞。沒有什麼東西可以離得開它們,它們充斥每一個角落。就因為有這麼材料,每一個對這些主題感興趣的人也許都正在經歷“分析的泥淖”。所以,在這份指南中,我們向你展示關於Casper的終極嚮導以及它將如何永遠地改變以太坊。
什麼是工作量證明(Proof of Work)?
大多數加密貨幣包括比特幣都使用“工作量證明”。工作量證明的過程具有下列步驟:
- 礦工們解答密碼學謎題以“挖出”一個區塊並加入到區塊鏈上。
- 這一個過程要求大量的電力和運算。在系統中,這些謎題已經被設計成艱難而又繁重。
- 當一個礦工解決一個謎題的時候,他們釋出他們的區塊到網路上接受驗證。
- 驗證一個區塊是否屬於一條鏈是一個非常簡單的過程。
工作量證明系統,在本質上說就是這樣的。解決謎題是困難的,但檢查答案是否正確則是容易的。它也是比特幣(Bitcoin)和Ethereum(直到現在)一直在用的系統。但是,這套系統存在一些根本的缺陷。
工作量證明的問題
事實證明,工作量證明存在非常多的問題。
- 首先,也是最重要的,工作量證明是個極端低效的系統,因為它消耗大量的電力和能量。
- 可以購買更快更強勁的ASIC裝置的人們和機構通常可以比其他人擁有更高的概率挖到區塊。
- 上一點導致的結果是,比特幣並沒有像它希望的那樣分散化。讓我們看看這張雜湊算力分佈表:
-圖片來源:Blockchain.info-
你可以看到,約有65%的算力是被5家礦池瓜分的!
- 理論上來說,這5個大礦池可以聯合起來並在比特幣網路上發動51%攻擊。
為了解決這個問題,以太坊開始關注權益證明。
什麼是權益證明?
權益證明將讓整個挖礦過程虛擬化,並以驗證者取代礦工。
以下是權益證明的執行過程:
- 驗證者必須鎖定一些他們擁有的幣作為保證金。
- 在此之後,他們將開始驗證區塊。同時,當他們發現一個他們認為可以被加到鏈上的區塊時,他們會通過下賭注來驗證它。
- 如果該區塊成功上鍊,驗證者就將得到一個與他們的賭注成比例的獎勵。
權益證明最大的障礙
以太坊開發者一直計劃著最終轉移到權益證明。他們的計劃一直是這樣的。但是,在他們可以這樣做之前,他們不得不解決一個權益證明的一個最大的缺陷。
考慮一下這種場景:
假設我們處在上面的這種情況下,有一條藍色的主鏈和一條紅色的從主鏈中分出來的鏈條,如何禁止一個惡意的礦工在紅色區塊上挖礦然後推動一次硬分叉(Hard Fork)呢?
在一個工作量證明系統上,這一風險是可以被減輕的。
假設惡意礦工Alice想在紅色鏈上挖礦。即便她投入了她所有的雜湊算力,也不會有任何礦工加入她在新鏈上挖礦。每個其他人都將繼續在藍色鏈上挖礦,因為在最長的鏈上挖礦收益更可觀,而且沒有風險。
記住,工作量證明在資源方面是非常昂貴的。對一個礦工來說,花費許多資源在一個將會被網路拒絕的區塊上是沒有任何意義的。因此,鏈分裂在一個工作量證明系統中是被避免了的,因為攻擊者將不得不付出大量金錢。
但是,當你把這種情形放到到權益證明下的時候,事情看起來就有些不一樣了。如果你是一個驗證者,你可以簡單地把錢投到紅藍兩條鏈上,完全無需擔心間接的不良後果。不管發生什麼事,你都總是可以贏,不會失去任何東西,不管你的行為有多惡意。
這就是所謂的“無利害關係(Nothing at Stake)”問題,也是以太坊必須解決的問題。他們需要一種協議,可以實行權益證明,同時減少“無利害關係”問題。
進入以太坊Casper
Csaper是以太坊選擇實行的PoS協議。雖然已經有一整個團隊在忙著建立它,Vlad Zamfir還是常常被認為是“Casper的頭面人物”。
-圖片來源:Blocknomi-
所以,Casper跟其他PoS協議到底哪裡不一樣呢?
Casper實施了一個程序,使得它可以懲罰所有的惡意因素。這就是權益證明在Casper下是如何工作的:
- 驗證者押下一定比例的他們擁有的以太幣作為保證金。
- 然後,他們將開始驗證區塊。也就是說,當他們發現一個可以他們認為可以被加到鏈上的區塊的時候,他們將以通過押下賭注來驗證它。
- 如果該區塊被加到鏈上,然後驗證者們將得到一個跟他們的賭注成比例的獎勵。
- 但是,如果一個驗證者採用一種惡意的方式行動、試圖做“無利害關係”的事,他們將立即遭到懲罰,他們所有的權益都會被砍掉。
正如你可以看到的,Casper被設計成可以在一個無需信任的系統上工作,並且是更加拜占庭容錯的。
任何人,如果以一種惡意的,或者說是拜占庭叛徒式的方式行動,就會立即受到懲罰、失去他們的保證金。這就是它不同於其他權益證明協議的地方。惡意元素會失去一些東西,所以,“無利害關係”是不可能的。
這不是唯一一個Casper可以懲罰驗證者的地方。
正如Hudson James以及Joris Bontje在“StackExchange”的回答中標註的那樣,Casper設計了苛刻的激勵來保證網路的安全,包括懲罰離線的礦工,不管ta是有意還是無意的。
這意味著驗證者將不得不變得對他們的節點正常執行時間小心翼翼。粗心或者懶惰都將導致他們失去自己保證金。這一屬性減少了對交易和整體利用率的審查。圍繞著所有這些,這種“懲罰”屬性同樣給予了Casper相對標準工作量證明協議的明顯優勢。
讓我們再次放上鍊圖解:
在一個工作量證明協議中,一個礦工會在藍色鏈上還是紅色鏈上挖礦並不重要。因為誠實的和惡意的礦工都將花費同等數量的資源。
然而,在Casper中,如果一個誠實的驗證者在藍色鏈上挖礦,他們將得到與他們的賭注成比例的獎勵,但一個惡意的礦工將因為下注在紅色鏈條上而失去他們的保證金。
以太坊Casper VS 以太坊Casper?
-圖片來源: Medium-
Casper不是一個具體的專案。它是兩個研究專案的融合,這兩個在最近一直由以太坊開發者團隊承擔:
- Casper the Friendly Finality Gadget(FFG)
- Casper the Friendly GHOST: Correct-by-Construction(CBC)
Casper FFG
Casper FFG也就是眾所周知的Vitalik版Casper,是一個混合PoW/PoS共識機制。它是正準備進行初步應用的版本,也是被精心設計好來緩衝權益證明的轉變過程的。設計的方式是,一個權益證明協議被疊加在正常的以太坊版工作量證明協議上。雖然區塊仍將通過工作量證明來挖出,每50個區塊就將有一個權益證明檢查點,也就是網路中驗證者評估確定性(Finality)的地方。
什麼是確定性(Finality)?
確定性(Finality),從一個非常寬鬆的意義上來說,意味著一旦一個特定的操作完成,它將永遠被蝕刻在歷史上,沒有任何東西可以逆轉這個操作。在處理金融事務的領域,這是非常重要的。想象Alice在一個公司裡擁有特定數目的一種資產。就算公司的某些程序中出了一點小故障,她也不應該需要恢復對該資產的所有權(因為小故障並不影響她的所有權)。
有人說,工作量證明是唯一一種在區塊鏈上實現確定性的方式。但是,這並不是必然正確的。真相遠比這個要複雜很多。
正如Vitalic Buterin提出的,世界上沒有一個系統可以提供100%的確定性。黑進一個系統,或者物理上破解一份登錄檔並篡改數字以改變一個人的資產負債表,都是有可能的。這也是中心化機構的一個大問題。但是,分散式的系統也會面臨同樣的問題。
實際上,比特幣,工作量證明機制的典範,至少三次曾經面臨確定性問題。在一個例子中,鏈必須分叉,因為一個Bug存在於軟體的一個版本中但在其它版本中並不存在。這在社群中導致了分裂,一部分人拒接接受被另一部分人所接受的鏈。這次分裂在6個小時中被解決。
所以,問題在於,Casper FFG如何能夠提供確定性?根據Vitalik的說法 ,因為下面三個理由,Casper保證可以提供比工作量證明更強的確定性:
- 完全經濟確定性。三分之二的驗證者會下最大機率的賭注使區塊達到最終一致。因此,對他們來說,串謀以及攻擊網路的激勵是非常小的,因為,如果他們這樣做的話,他們將危及自己的保證金。Vlad Zamfir更好地解釋了這一點,他說:“設想一種版本的工作量證明,如果你參與一場51%供給的話,你的礦機會燒燬。”
- 假設整個網路由三個人組成:Alice,Bob,和Charlie。假設Alice和Bob將他們的保證金放在一種結論上,同時,Bob和Charlie把他們的保證金放在一個與之對立的結論上。不管發生什麼事,Alice或者Charlie其中一人肯定會損失一大筆錢。所以,正如你可以看到的,驗證者沒有動機去串謀或用惡意的方式行動,因為他們總會失去一大筆錢。
- 然而,如果雙重確定性(Double Finality)發生的話,還有一種意外事故處理方案。如果雙重確定性發生的話,使用者可以選擇他們想到哪條鏈上去。不管哪條鏈,得到多數票的就成為主鏈。基本上,在Casper上,雙重確認會導致硬分叉而不是回滾。
Casper CBC
Casper CBC也就是我們所知的Vlad版Casper使用建構修正(correct-by-construction,CBC)協議。嗯,那什麼是CBC協議呢?(大多數材料都來源於Vlad Zamfir的edcon presentation以及Jon Choi的文章《Ethererum Casper 101》)。
https://www.youtube.com/watch?v=6boQSQ7IuNY
這是一個普通的協議設計的樣子:
- 你正式指定協議。
- 定義該協議必須滿足的屬性。
- 證明該協議可以滿足給定的屬性。
而CBC協議的樣子是:
- 你正式地但只是部分地指定協議。
- 定義該協議必須指定的屬性。
- 從滿足所有它被規定去指明的屬性中推匯出該協議。
用大白話來說,你是動態地推匯出該協議的。獲得完整協議的其中一種方式是執行一種Vald稱為“理想對手(ideal adversary)”的預估安全預言機(estimate safety oracle),它執行下列兩者之一:
- 提出一個合理估計的錯誤的例外情況。
- 列出所有在未來可能發生的錯誤。
所以,這個理想對手要做的事情,就是不斷進行微調、讓這個只是部分建構好的協議更加完美,直到它變成完全版。
可以看到的是,以太坊開發者團隊一直在努力地開發這兩個Casper專案。很明顯,這不會是最終版本,但不管這最終版本是什麼,它肯定會受到Vlad的和Vitalik的Casper的深刻影響。正如剛剛提到過的,Vitalik的Casper將被初步執行以緩衝從PoW到PoS的轉變。而Vlad的Casper,通過使用一個“理想對手”推匯出一個安全性論證。
為什麼我們需要Casper?
使用權益證明有多種好處。這些好處可以在下面這些分類中廣泛地列舉出來。(對Jon
Choi及其文章的大喊)
- 幫助實現分散化
- 高能效
- 經濟安全
- 擴充套件性
- 轉移到PoS
實現分散化
正如我們在上面看到的,工作量證明協議不再是真正對去中心化友好的了。讓我們再一次看看比特幣的雜湊算力分佈圖:
而這裡是以太坊的礦池雜湊算力分佈:
-圖片來源:Etherchain.org-
你可以看到,大部分雜湊算力集中在幾個特定的礦池,而這意味著無論發生什麼事,他們總會比其他人有更大的機會挖到區塊、獲得獎勵。
因為他們可以獲得更多錢,他們可以買得起更好更快的ASIC裝置。這基本上意味著,無論發生什麼,大礦池將總是比個人和小礦池擁有優勢。換句話來說,富有的將變得更富有。
權益證明通過讓挖礦完全虛擬化使得這一切都無關緊要。然而,這不是權益證明減緩中心化效果的唯一途徑。為了理解這個,首先我們需要弄懂“經濟規模”意味著什麼。(謝謝ACDCLeadership的Youtube頻道提供的資料)
在生產的時候,有兩種型別:
- 短期生產
- 長期生產
在短期生產中,至少投入的資源是固定的。想象一個只有一個烤箱的小披薩店,無論他們是要製作1個還是25個披薩,他們都只有一個烤箱可以用於製作。而在長期生產中,所有資源都是可變的,這就是規模經濟產生影響的地方。
在投入資源的數量都是可變的長期生產中,如果你投入兩倍數量的話會怎麼樣?在這一場景中,只有三種結果,我們稱為“規模報酬”。
- 產出大於兩倍。意味著一個遞增的規模報酬。
- 產出變成兩倍。意味著一個不變的規模報酬。
- 產出小於兩倍。意味著一個遞減的規模報酬。
下面這幅圖將向你展示一個對規模經濟的圖解:
-圖片來源:Wikipedia-
到底發生了什麼?
當產量從Q增長到Q2的時候,生產的總成本從C降到了C1。這就是所謂的規模經濟。在這之後,增速變得平均了一些。這是你獲得恆定規模報酬的地方。再然後,當你越過這一點,成本就會隨著你的產出超過Q2而上升。
這裡面的意思是,大的企業可以通過提高產量來減少他們產品的平均成本!(在到達限度之前)
在這種意義上,產品越多反而越便宜!
讓我們用現實世界來舉個例子。
一個小規模的烘培作坊的初始成本明顯少於一個大烘培廠的因為工廠必須在機器上投資很大。但是,在長期生產中,對工廠來說每一條麵包的平均成本將比烘培作坊的更低。
OK,就是這樣了。但這怎麼對應到礦池呢?
跟大企業很像,大礦池可以通過下列途徑減少他們投入資源的成本:
- 在大規模運營中分攤固定成本。
- 作為一個更大的經營主體,擁有議價能力。
這意味著,一個大而有影響力的礦池可以一美元又一美元地比其他礦池生產更多雜湊算力,即便他們投入了等量的資金。
這一問題在權益證明中完全被消解了,因為一個簡單的原因。在權益證明中你投資一份保證金。你不能輕易地結成礦池然後讓你的保證金一美元又一美元地升值。在一天結束的時候,一美元還是一美元。規模經濟在這裡不起作用。
能源效率
工作量證明最大的問題是能源浪費。最糟糕的部分是,能源浪費是為了能源浪費。尤其是比特幣,其對能源的慾望是非常貪婪的。看一下這個:
-圖片來源:Digicnomist-
再來一些數字如何?(來自Digicnomist)
你應該關注兩個數字。
比特幣全球一年的挖礦成本是1,423,794,674美元。
光是比特幣,一年要消耗相當於28.48 TWh的電能。厄瓜多國(The country of Ecuador)的才消耗大約21 TWh!
實際上,我們可以比較一下比特幣和一些國家的能源消耗:
比特幣比愛爾蘭(Ireland)、巴林國(Bahrain)和斯洛伐克共和國(Slovak Republic)消耗的能源還要多!
好吧,讓我們公平一點。
不如比較一下比特幣與其他支付系統,比如……Visa?
比特幣的能源消耗與Visa相比如何?
嗯。看起來不是太好。
所以,很明顯,比特幣使用太多電力了,太多錢被花在資源上了。但是,外部性成本呢?大量的電力消耗對環境產生的影響必定是巨大的。
雖然毫無疑問地比特幣和工作量證明已經造成了大量積極的社會影響,我們至少應該看看權益證明系統可以做到怎樣的規模,以及,它是否可以在不消耗那麼多電力的情況下工作。
經濟安全
權益證明(尤其是Casper)的最大優勢是它的經濟安全性。想想看,假設你是一個驗證者,並且你將你自己的錢作為保證金存入網路。以最大化網路利益的方式行事也是你自己的利益。知道了如果有惡意的行為你的保證金中的一大部分將被罰沒,你為什麼還會那樣做呢?
當你有很多錢鎖定在裡面的時候,你為什麼還要攻擊網路、損害幣值呢?
同樣地,“懲罰效應”消除了Vitalik定義的“駐守重生點攻擊(spawn camping attack)”的可能性。
//重生點攻擊(spawn camping attack):個人理解是51%的礦工持續攻擊網路。
-圖片來源:Vitalik Buterin 推特-
在權益證明中,重生點攻擊可以被防止,因為一個簡單的事實:一次攻擊將導致懲罰,沒收已投入的保證金。如果你沒有投入任何保證金,你就不能加入PoS驗證。
擴充套件性
權益證明可以提高擴充套件性的最顯而易見的方式是允許分片(Sharding)。
如同Vlad Zamfir所言,PoW加上分片是並不是不可能的,但很困難。什麼是分片?
分片是一個從資料系統中產生出來的術語。讓我們來看看對資料庫來說分片意味著什麼。假設你的網站有一個大而笨重的資料庫。擁有一個笨重的資料庫不僅意味著搜尋資料變得更慢,也限制住了你的可擴充套件性。在這種情況下你會怎麼做?
給你的資料做個水平分割槽(horizontal partition),把它們變成更小的表格並且儲存在不同的資料庫伺服器中如何?
-圖片來源:Dzone-
像上面這樣?
現在,你也許在問,為什麼是水平分割槽而不是垂直分割槽呢?這是因為設計表格的方式。
考慮一下。假設這是我們的主表格:
你看到發生什麼了麼?當你垂直切分一個表格,他們將變成兩個完全不同的表格。
但是,如果我們水平切分他們的話:
看到了嗎?這是擁有更少資料的完全一樣的表格/資料庫。這些更小的資料庫就是我們所知的更大資料庫的片(shard)。每一片的表格結構都應該是完全相同的。
如果我們在一個工作量證明協議中執行分片,會發生什麼?
通過將一個狀態分為不同的片,分配可以加快執行過程。但是,如果我們使用工作量證明的話,較小的片將處在被惡意礦工掌控的危險之中,因為它的低雜湊算力。實際上,這是也工作量證明區塊鏈永遠不能執行分片的最大的理由,任意一個小分片都有可能輕易被掌控。
這種風險在權益證明中可以完全避免,因為它沒有挖礦的概念。
轉換到PoS
現在,這在很大程度上是一個哲學問題。
普遍來說,人們,對改變並不是那麼地有好感。當他們習慣了一些東西的時候,讓他們離開舒適區是非常困難的。
對於其價值完全基於大眾感知的價值的貨幣制度而言尤其棘手。就在我寫作的時候,以太坊的價值越是320億美元。
要把權益證明炸彈擲到人群中並期待他們會跟上時代,是不負責任的。這可能會減少公眾對該系統的信任,而以太坊的市值也許會下降。因此,實施從PoW到PoS的溫和轉變是非常精明的,而後者是Casper FFG計劃實現的東西。
那麼還會“富者愈富”嗎?
其中一種反覆出現的對權益證明的批評是,它只會讓富人變得更加富有。因為為了具備驗證者的資格,你需要鎖定一個你的(以太)資產中的可觀的比例作為保證金;而且,除了這一點,你將獲得的獎勵是跟你押注的數額成比例的。所以,如果你在系統中有更多錢,你將得到更多錢。
但是,Jon Choi在他的文章中否認了這一點:
“這裡的主要結論應該是權益證明是明顯地更加平等主義的(比如,對擁有更多資本給予更少好處),相對比比特幣現在基於工作量證明的演算法。”
而這背後的主要理由,就是我們已經做出的關於規模經濟的討論。在一個權益證明系統中,一美元還是一美元,大礦池無法在投入同樣數量的錢時卻擁有更多雜湊算力而脫穎而出。
以太坊Casper的未來
最近,在我寫作的時候,Vitalik Buterin說不僅Casper準備好接受測試了,它還可以在客戶端更新程式碼時提供一個安全提升。雖然看起來並不像它已經準備好用來廣泛普及了,但第一個Casper測試網釋出的日子看起來是越來越近了。
權益證明是否將要實施並不是一個問題,問題是什麼時候能夠實施。以太坊“寧靜”(Serenity)應該是一個權益證明網路。此前我們並不是從未見過PoS的實行,Peercoin非常成功地運用了它。但是,我們從還從來沒有看過在這個層面採用該協議。
也許,如果Casper被成功執行的話,另一個加密貨幣會跟風並且做出轉換。不管事情會變成什麼樣,Casper帶來了非常多迷人的可能性。
casper的發展歷程,翻譯自Vitalik的推特流。(截至2018.08.15)
原文連結: https://twitter.com/VitalikButerin/status/1029900695925706753
作者: Vitalik
翻譯轉自:https://ethfans.org/posts/vitalik-on-casper-development-history-and-state
1/ 今天我準備發一個推特流,解釋一下以太坊 Casper 研究的歷史和現狀,包括 FFG 和 CBC 的分歧、(工作量/權益)混合共識到完全 PoS 的轉變、隨機性在 Casper 中的角色、機制設計挑戰,以及其它。
2/ 以太坊權益證明研究開始於 2014 年 1 月,是從劍手協議(Slasher Protocol)開始的 [1]。雖然演算法遠遠稱不上完善,這一研究還是給了我們一些很重要的觀念,尤其是用懲罰措施來解決無利害關係問題(Nothing at Stake)[2]。
3/ 話雖如此,我當時使用的懲罰措施是非常輕的,只是取消了簽名獎勵(Signing Reward)。Vlad Zamfir 在 2014 年年中加入,他迅速地推進,指出要讓驗證者儲存 保證金,而且數額要比獎勵大很多,以此驅逐惡意行為。
4/ 這是 Vlad 的回顧:[3](編者注:中譯本見文末《Casper 的歷史起源,Part-1》)
5/ 2014 年下半年的大部分時間,我們都在試著處理“長程攻擊(Long Range Attack)”:攻擊者可以先取回他們質押在主鏈上的權益,然後建立一條替代性的“攻擊鏈”,只要該鏈比主鏈有更多簽名,他們便可愚弄客戶端切換到攻擊鏈。
6/ 如果攻擊鏈在一個離當下非常近的時間點偏離主鏈,這就不會是一個問題,因為如果驗證者為兩條相互衝突的鏈簽名了兩條相互衝突的訊息,我們就可以此為證據懲罰他們並沒收保證金。
7/ 但如果這種偏轉發生在很久以前的區塊上(這就是為什麼它被稱作“長程攻擊”),攻擊者可以取出他們的保證金,在所有鏈上都免於受罰。
8/ 最終我們確定,長程攻擊是無可避免的,因為 PoW 支持者說的許多原因(例如:[4])。但我們不同意他們的結論。
9/ 我們意識到,我們可以通過引入額外的安全假設來對付長程攻擊:客戶端每 4 個月登入至少一次(而保證金要 4 個月之後才能取出),那麼客戶端就可以直接拒絕比這個時間更長的回滾。
10/ 對 PoW 支持者來說這簡直是大逆不道,因為這一假設似乎需要信任:在你第一次同步的時候,你需要從一些受信的來源獲得區塊鏈。
11/ 但對我們這些“沒有底線”的主觀主義者來說,看起來這沒什麼大不了的;不論什麼情況下,你都需要一些可信源頭來告訴你區塊鏈使用的共識規則(而且還有軟體升級這回事呢)。所以這一 PoS 假設所要求的額外信任也不是什麼大事。
12/ 這是 Vlad 的回顧:[5](編者注:即《Casper 的歷史起源,Part-2》)
13/ 明確了要使用保證金和懲罰措施還不夠,我們還必需決定保證金和懲罰措施是什麼樣的。我們知道我們想要“經濟確定性(Economic Finality)”,也就是說:
14/ 一旦某個區塊得到驗證者簽名,被“敲定(Finalized)”,就沒有任何 衝突 區塊可以被敲定,除非大部分的驗證者簽署了與他們早先簽署的訊息相沖突的訊息;此種簽署方式可以被區塊鏈檢測到,因此這樣的驗證者也會受到懲罰。
15/ 我在自己稱作是“打賭共識(Consensus by Bet)”的方向上走了很遠,但最終沒有結果 [6](編者注:中譯本見文末超連結《理解 Serenity,Part-2》)
16/ 打賭共識是一種很有趣的結構:驗證者是在打賭哪個塊會被敲定,而這些賭注本身決定了共識偏愛哪條鏈。
17/ 理論上來說,PoW 也具有這種屬性,因為挖礦就是一種賭博,如果你押中了對的鏈,你就賺錢(獎勵 - 挖礦成本);如果你押錯了寶,你就會損失挖礦成本;只不過,在 PoS 中,我們可以將賭注的賠率推得更高。
18/ 驗證者一開始下注時賠率較低,但因為驗證者看到其他驗證者對某一個區塊有越來越強的信心,每一個人的賠率都會互不干擾地迅速上升,直到最後,他們將自己全部的保證金都押在一個區塊上,這就是“確定性”。
19/ 與此同時,Vlad 開始研究機制設計,特別是希望 Casper 可以更強健地抵制寡頭形成;而我們也開始關注受傳統拜占庭容錯理論啟發的共識演算法,比如 Tendermint。
20/ Vlad 認為,傳統拜占庭容錯理論是很差勁的(他尤其不喜歡硬上限,比如實用拜占庭容錯演算法(PBFT)和 Tendermint 中的 2/3),他想嘗試高效地徹底改造 BFT 理論,運用他稱之為“建構中修正(Correct by Construction,CBC)”的方法。
21/ 這是 Vlad 自己說的 [7] [8] [9](編者注:Casper 歷史起源的 Part-3、Part-4 和 Part-5)。
22/ “建構中修正”的哲學迥異於傳統的拜占庭容錯理論,因為其“確定性”是完全主觀的。在 CBC 哲學中,驗證者簽署訊息,如果他們簽署的訊息與此前自己簽署過的訊息相沖突……
23/ ……他們就不得不提交一份“辯護詞”,證明在很大程度上,他們“更支援”新近投票支援的區塊,因此他們有權利轉投。
24/ 要發現確定性,客戶端就要找到這樣的訊息模式:可以證明大多數驗證者確實把票投給了區塊 B,並且沒有辦法脫離區塊B,除非大量驗證者“非法地”轉投其它區塊。
25/ 舉個例子,如果每個人都把票投給了 B,然後每個人都投票給了包含對 B 投票記錄的區塊,這就證明他們支援 B 並且意識到了其他所有人也都支援 B,因此他們也就沒有合法理由從 B 轉投到其它區塊上。
26/ 我最終放棄了“打賭共識”,因為這一方案看起來實在是太過冒險了,那麼我就轉過去試圖理解 PBFT 的工作原理。雖然花了不少時間,但幾個月之後我就弄清楚了。
27/ 我簡化了 PBFT [10],然後將它化用到區塊鏈環境中,轉述為 4 條“罰沒條件”。這些條件規定了哪些訊息組合是自我矛盾的因此是非法的:[11]
28/ 我定義了一條規則來確定什麼時候區塊會敲定,並證實了關鍵的“安全性”和“合理活性(Plausible Liveness)”:(i)一旦某個區塊被敲定,除非 >= 1/3 的權益違反罰沒條件,否則衝突區塊不能被敲定……
29/ (ii)一旦某個區塊被敲定,2/3 誠實驗證者可以必定聯合起來敲定一個新區塊。所以只要誠實驗證者權重超過 2/3 ,演算法就既不能“自相矛盾”,也不能“卡死”。
30/ 我最終把最少罰沒條件從 4 條簡化為 2 條,那時候就出現了 Casper FFG(Friendly Finality Gadget),它被設計為可以覆蓋在任何 PoW 或 PoS 或其它型別的區塊上,用於增加確定性保證。
31/ 確定性是一個非常重要的進步:一旦某區塊被敲定,它就是安全的,無論網路延遲如何(不像 PoW 還需要後續區塊確認);並且回滾區塊要求 >= 1/3 的驗證者作弊,但作弊可以被發現,作弊的證據可用於罰沒他們的保證金。
32/ 因此,回滾確定性的成本可以上升到數十億美元。Casper CBC 和 Casper FFG 方案都實現了確定性,雖然用了不一樣的技術。
33/ 注意,Casper CBC 和 Casper FFG 都是覆蓋層,需要應用在已有的分叉選擇規則上,儘管抽象工作的方式有所不同。
34/ 用大白話來說,在 Casper CBC 中,確定性覆蓋層適應分叉選擇規則;但在 Casper FFG 中,分叉選擇規則適應確定性覆蓋層。
35/ Vlad 最初對分叉選擇規則的偏好是“最新訊息驅動型 GHOST”,GHOST 用於權益證明的一種改良版本 [12];我一開始的偏好是從混合 PoS 開始,使用工作量證明作為基本的分叉選擇規則。
36/ 在 Casper FFG 的最初版本中,工作量證明會一個一個區塊驅動鏈生長,而權益證明會隨後將它們敲定。Casper CBC 從一開始就是完全的權益證明。
37/ 與此同時,Vlad 和我都開始提出各自的思想流派關於共識演算法 激勵 理論的觀點。
38/ 此處,一個非常重要的分歧是在“可獨佔歸因型錯誤”與“不可獨佔歸因型錯誤(Non-uniquely-attributable Faults )”之間的。前一種情境中,你可以分辨出誰對錯誤負有責任,因此也可以懲罰他;在後一種情境中,可能是多方中的一方對錯誤負有責任。
39/ 不可獨佔歸因型錯誤的經典情形是是下線 vs 審查,也被稱為“說者-聽者錯誤等價(Speaker-listener Fault Equivalence)”。
40/ 懲罰可獨佔歸因型錯誤(例如,Casper FFG 罰沒條件)是容易的。但懲罰不可獨佔歸因型錯誤就很難。
41/ 如果你沒辦法分辨出區塊敲定中止是因為少數人下線了還是因為多數人審查了少數人,那會怎麼樣?
42/ 對這一問題有三種流派的觀點:(i)輕微懲罰雙方;(ii)嚴懲雙方(Vlad 偏愛這種方案);(iii)將鏈一分為二,各自只懲罰一方,讓市場來決定哪條鏈更有價值(我偏愛這種方案)。
43/ 可以看看我的想法:[13]。
44/ 在 2017 年 11 月, Casper FFG 罰沒條件加上我用“二次洩壓(Quadratic Leak)”機制解決“1/3 下線問題”的想法,變成了一篇論文 [14]。
45/ 當然,我很清楚地意識到,訴諸社會層面來解決 51% 攻擊不是一個非常好的事情,所以我開始尋找一種辦法,至少能讓線上的客戶端 自動地 檢測到哪條鏈是“合法的”,哪條是正在發動“攻擊”的。
46/ 這是我早期的想法中的一種:[15]。它算是成型了,但仍不夠理想;除非網路延遲絕對是 0,否則只能保證一點:不同客戶端對同一鏈的懷疑值最多會有 δ 的差異,但客戶端無法達成一致。
47/ 與此同時,我對 Vlad 模型的主要批評在於“威嚇攻擊(Discouragement Attack)”:攻擊者們可以可信地威脅發動導致所有人都遭受損失的 51% 攻擊,讓其他所有人都逃離,然後幾乎不費吹灰之力接管整條鏈。
48/ Vlad(以及 Georgios Piliouras)開始建立一些經濟模型來估計這樣一種攻擊的實際成本。
49/ 值得指出的是,所有這些問題都不是權益證明獨有的。實際上,在工作量證明中,人們傾向於放棄並假設從 51% 攻擊中恢復是絕對不可能的,因此 51% 攻擊是必須不計代價阻止的世界末日。
50/ 但是,正如以太坊一貫以來的傳統,Vlad 和我都沒有意識到,“雄心勃勃(ambitious)”一詞絕對不是恭維,因此都用我們各自的方法不懈工作,致力於壓制和緩解 51% 攻擊,以及從中恢復的方法。
51/ 在 2018 年上半年,Vlad 在 CBC 中的工作開始快速推進,在安全性證明上有了長足的進展。要了解 2018 年 3 月的進度,請看這個兩小時的演講 [16]。
52/ 與此同時,Casper FFG 也向前邁了一大步。我們決定用釋出到以太坊區塊鏈的合約來實現它,以讓開發工作變得更加簡單。2017 年 12 月 31 日 23:40,我們放出了用 Python 寫成的測試網:[17]。
53/ 不幸的是,FFG 的開發工作隨後便慢下來。用合約來實現 FFG 的決定確實讓一些事情變得簡單,但也讓另一些事情變得更難,這也意味著:從 EVM 最終切換到 EWASM,以及從單鏈 Casper 到分片 Casper,會變得更難。
54/ 此外,團隊工作開始分化為“主鏈 Casper”和“分片鏈 Casper”;事情明擺著,在 Casper 團隊和分片團隊之間遊走會導致很多不必要的重複工作。
55/ 在 2018 年 6 月,我們做了一個攸關生死的決定:徹底放棄“用合約實現混合 Casper FFG”的想法,代之以追求完全 Casper 的獨立鏈,改變設計讓整合分片變得更加容易。
56/ 轉向完全的權益證明讓我開始更加努力地思考權益證明的分叉選擇規則。
57/ Casper FFG(以及 CBC)都要求,在每一個“輪次(epoch)”都有 完整 的驗證者集來投票敲定區塊;這意味著每秒鐘都會有數以千計的簽名要通過網路傳送。BLS 簽名聚合方案讓這一點至少在計算開銷上是可以接受的……
58/ ……但我想試著利用所有這些額外的簽名方案,讓整條鏈可以更“穩定”,在幾秒內獲得價值“100 個確認”的安全性。
60/ 然而,所有這些方法作為分叉選擇規則都有一個弱點:將驗證者區分為“見證者(Attester)”和“提議者(Proposer)”,而提議者變成了區塊生產的關鍵一環,擁有了過於巨大的權力。
61/ 這當然不是我想要的,因為它使得我們必須擁有一個強大的鏈上隨機數源來公正地選出提議者。而鏈上隨機性是 難以實現的,像 RANDAO 這樣簡單的方案可以發現越來越多的問題 [20]。
62/ Justin Drake 和我用兩種方式來解決這個問題,Justin 使用可驗證延遲函式(Verifiable Delay Function,VDF),這一函式有確定且可驗證的輸出,不過要花大量不可並行化的連續時間來計算,消除了提前操縱的可能……
63/ ……我自己則對 Vlad 神教TM 做了重大讓步,使用了基於 GHOST 的分叉選擇規則來大幅減少對提議者的依賴,這使得即便 >90% 的提議者都是惡意的,只要 >50% 的見證者是誠實的,鏈就可以不受干預地生長。
64/ 那時候 Vlad 非常開心,不過還不能算開心得飛起:他偏愛的 GHOST 版本基於驗證者的 最新訊息,而我偏愛的版本基於 即時訊息:[21]。
65/ 大約同一時間,我還想出一種辦法來“管道化” Casper FFG,將實現確定性的時間從 2.5 個輪次減少到理論上最優的 2 個輪次:[22]。
66/ 我非常高興 RPJ 分叉選擇規則(在那以後我該稱其為“即時訊息驅動型 GHOST”)可以用一種別的演算法都做不到的方式很好地相容 Casper FFG……
67/ …… 並且它也有非常重要的“穩定”屬性:從當前分叉選擇中可以很好地預見未來分叉時的選擇。看起來很明顯,但分叉選擇規則很容易不小心就 喪失 這種屬性。
68/ 所有這一切的最新進展是:最新訊息驅動型 GHOST 也許,因為技術原因,在兩輪內只有 25% 的容錯能力,而即時訊息驅動型 GHOST(加上 FFG 或 CBC)可以有完全的 33%(雖然還沒有寫出來)。
69/ FFG 和 CBC 之間的主要權衡是,理論上 CBC 具有更好的屬性,但 FFG 看起來更容易實現。
70/ 另一方面,可驗證延遲函式方面出現了 大量 進展:[23]。
71/ 同樣地,我最近決定深入學習 Lamport 1982 年的舊論文,裡面有一種共識演算法可以實現 99% 的容錯能力,只要你加入一個假設:所有節點,包括觀察者,全部都線上且網路延遲很低:[24]
72/ 網路延遲假設可能使它不適合作為一種首要的共識演算法,不過,在一種場景下它可以運作得 非常 好:作為懷疑值的替代方案,用於發現 51% 審查。
73/ 基本上,如果 51% 的權益開始聯合審查區塊,其它驗證者和客戶端可以發現這一點,然後使用 99% 容錯演算法來達成共識,聯合發動少數方分叉。
74/ 這一研究的長期目標是儘可能減少對社會層面的依賴,最大化擾亂鏈執行的成本,使其必須回到社會層面來。
75/ 那麼還剩下什麼議題呢?在 FFG 這一方面,包括形式化驗證、改進技術規範、實現上的不斷推進(已經有 >= 3 支團隊開始了),還有對安全和迅速部署的關注。在 CBC 這一方面,大體相似。快高長大吧!
一些網友對 Vitalik 的迴應:
-我的推特客戶端驗證了這是推特歷史上最長的推文,因此稱為最有效的推鏈!
內容很有意思,非常感謝!-
-回覆第73條:如果大於 51% 的聯合是大集團與政府的聯合呢?如果你正在使用的某個被中心化機構控制的 app 選擇了在谷歌鏈上執行呢?如果你只是一名使用者,你關心的是什麼?-
-又一個對於以太坊發展藍圖的天才計劃!大神請不要停下來~-
-這可能是 V 神承認 “Vald 是對的” 最長的一次解釋。Vlad 肯定在偷笑,“早就告訴你我是對的啦!”不過說正經的,還有很多人都很感謝你們作出的貢獻,雖然我們沒有那些詆譭者叫得大聲。非常感謝~ -