寧靜這個階段,Vitalik定義了這個階段一些解釋,如下圖:
在寫這本書的時候,以太坊的升級正在進行大都會的第二階段康斯坦丁。康斯坦丁包含兩個重要的升級,1個是降低區塊獎勵,從3ETH降到2ETH;一個做PoS共識的轉型。這次社羣對於硬分叉的意見比較一致,一般情況下,不會有分叉幣產生。
在康斯坦丁硬分叉結束後,以太坊基金會應該會著手準備最重要的第四階段的升級,這部分的升級是至關重要的轉型升級,也是最早在以太坊釋出技術黃皮書時候就決定的,到時候Casper登場。
Casper FFG和Casper CBC
Capser共識的發展重點,我覺得有兩個,1個是抵押金-削減(Deposit-Slashing)策略,2是BFT拜占庭共識。再引入拜占庭共識之前,原來的第2個重點叫做是押注共識(Consensus by bet),但後來押注共識被BFT取代了。
押注共識主要是為了獲得PoS共識出塊的最終確定性,這個概念屬於PoW的衍生寓,PoW裡面礦工透過押注算力、電力資源來獲得出塊機會,但每個高度只有一個塊,很多礦工的工作量其實是浪費的,換個解釋就是很多礦工投入了自己的資源,來達成共識,獲得出塊的礦工獲得了獎勵,而大部分人是沒有獎勵的。而PoS的驗證人要獲得獎勵也需要進行押注:即在出塊高度,驗證人選擇對已出來的區塊進行驗證,被押注最多的哪個塊會成為新高度,從而獲得獎勵,反之,則不會獲得獎勵,並且會被扣除對應的抵押金。
以太坊的PoS演算法分為兩個版本,一個叫Casper FFG(Casper the Friendly Finality Gadget),由Vitalik領銜;一個Casper CBC(Casper the Friendly GHOST:Correct-by-Construction),由Vlad Zamfir領銜。準確來說FFG是一種PoW和PoS的一種混合共識,CBC是一種純PoS共識。
Casper最初只有一個版本,從2014年開始研究,分成兩種版本的時間點是在Vitalik為Casper引入BFT機制後,Vlad對於現有BFT的實現方案不太認同,轉而採用了一種叫Correct by Construction" (CBC)的方案替代,才有了新的Casper CBC版本,兩者大概的時間週期是:
· Casper FFG(2017年Q3)
· Casper CBC(2018~)
大家都會比較疑惑為什麼以太坊的PoS要研究這麼長時間,如果2019年還不能部署的話,那麼這前前後後花了5年了,這5年裡面有很多專案都基於PoS上了主鏈,其中不乏一些出色的專案,2014年的Tezos已經在2018年上線了主網,2016年的專案,Cosmos和Cardano也宣稱會在2019年上線主網。這麼一比,速度差距就出來了。但是社羣也有說辭,有3點原因:
· PoW改PoW比出身就是PoS要複雜的多
· DAO被攻擊成為社羣分歧
· 上海DOS攻擊
這些原因直接導致了PoS研究的延期,其中DAO時間和DOS攻擊讓社羣分散精力的時間起碼在半年以上。
2017年初,Casper開始重新進入主流的研究週期,後來也出現了像Casper FFG和Casper CBC這樣的研究主力。
FFG和CBC兩種版本獨立發展,除了在共識上有一定的差別,在激勵和懲罰上也有差別,FFG主張小懲小罰,CBC主張大抵押金大罰,而且要罰要罰所有相關人員。FFG的設計要相對於簡單,且嘗試用智慧合約的方式來部署實施,CBC則是獨立於PoW外一種完全乾淨的PoS共識,實現起來較為複雜,且理論上可以掛在任何PoW的上層。總的來說,兩者都是以太坊轉型的方案,目標也一樣,只不過用了不同的技術手段,Vitalik在一次Twitter的頭腦風暴中,對FFG和CBC進行了總結:
34. In simplest terms, in Casper CBC the finality overlay adapts to the fork choice rule, whereas in Casper FFG the fork choice rule adapts to the finality overlay.
翻譯為:簡單來說,Casper CBC的最終確定層適用於分叉選擇的規則,而Casper FFG的分叉選擇規則適用於最終確定層
目前兩個方案都沒能落地,兩者的研究團隊都在加大馬力,希望能成為最早部署的那個方案。從Vitalik的Twitter中可以看得到兩個團隊的競爭很激烈,但畢竟CBC的複雜度更高 ,所以FFG在2019年內率先部署的可能性很高。加上以太坊從PoW轉PoS過程中會碰到很多問題,轉型肯定阻礙重重,那麼FFG這種從PoW轉型到混合的PoW+PoW的過渡方式,可能會是一個更好的方案。PoW-FFG-CBC也符合以太坊社羣至始至終追求純PoS共識的理念。
從目前進展來看,以太坊的第5階段——寧靜,極有可能先實行FFG,我們也很有可能看到以太坊的第6個階段,可能是純PoS的實現(CBC)。
執行
Casper FFG的網路由驗證人來維護,驗證人需要跑節點客戶端,透過操作命令來修改當前的狀態,可以執行的操作如下列表。在FFG中,每個驗證人執行的節點都是一個狀態機,每個狀態機的狀態透過傳送操作的交易來改變,以下介紹一些驗證人執行節點時的操作步驟:
建立驗證人程式碼
· 部署一個智慧合約,用來驗證驗證人的簽名
提交抵押金
· 呼叫casper.deposit(validation_addr, withdrawal_addr) 來傳遞步驟1中的驗證人合約地址和提取地址
[每個週期開始時] 提交新的投票資訊:
· 等待檢查點在主鏈上上已經超過1/4週期長度再投票,這保所有證驗證人都投上同一個塊
· 根據你當前鏈的區塊頭,生成未簽名的投票資訊
· 廣播資訊
退出
· 提交退出申請
· 呼叫casper.logout(logout_msg) 傳遞提交的資訊
提取
· 呼叫casper.withdraw(validator_index),你的資產將會給傳送到2步驟中的提取地址
Casper CBC:目前還處於論文的驗證階段,很多實現還在不斷的修正,以後等到CBC實現開始明確的時候,我再來補充。
效能
幾乎可以確定的是,如果以太坊實現了Casper,無論是FFG還是CBC,都會給以太坊帶來效能上的提升,但由於還沒真正實施,具體會提高多少TPS,還不得而知(目前以太坊大約15s一個塊,TPS在7~8左右(1s處理7~8筆交易)。
Vitalik在今年的Devon4上公佈了FFG的初步效能資料:
· 交易確認時間(8~16s)
· 最安全的交易確認時間(10-20m)
· ~1000倍以上的效能提升
另外一項提高效能的策略,是結合了分片技術(Sharding)的Casper——Shasper,目前會和FFG版本的Casper一起推出,如果真的能實現,會使以太坊的交易處理速度更上一個臺階。
激勵
Casper FFG的激勵是一個短期性的激勵,因為FFG是一種PoW和PoS的混合共識,仍然需要過渡到純PoS共識去,所以為了讓過渡變的被需要,FFG的激勵獎金池總共只有125萬ETH增發,這樣的增髮量只能維持2年左右的時間。當增發的ETH被消耗完之後,新的社羣決定會出來,來決定純PoS情況下可長期維持的增發比例。
上面有說到過以太坊社羣的原則是不再多增發,且每年有增發硬頂,那麼混合共識裡面獎勵給PoS驗證人的ETH從哪來呢?答案是,PoW礦工的獎勵裡。
目前,PoW出塊人可以獲得3個ETH,社羣計劃將PoW的獎勵慢慢減少,從3ETH的獎勵最終減少到0.6ETH。目前以太坊正在康斯坦丁硬分叉階段,其中有一條提議就是將3ETH減少到2ETH。減少獎勵和PoS過渡一樣,都是一個慢過渡的結果。
PoS中增發的ETH會分給驗證人,包括出塊和在檢查點投票。出塊是有獎勵的,這不用解釋了,檢查點不是一個新的技術,以太坊將比特幣上的檢查點技術用到了以太坊的PoS共識中來,用來確定區塊的最終確定性(在檢查點>2/3的人投票),區塊的最終確定效能一定程度上提高攻擊成本,同時能帶來效能提升。表象就是交易的速度變快了,而不需要在交易發出後還需要等待6個區塊確認。
在正確的檢查點(每50個塊一個週期Epoch,每個週期最後一個塊是一個設立的檢查點)完成投票,驗證人可以獲得成功投票後所獲得獎勵的1/8。理論情況下,礦工可以獲得總體增髮量的1/5。
懲罰
Casper FFG的懲罰策略,在Vitalik的部落格中進行了比較詳細的描述,我對其懲罰方式進行一下精簡:FFG會對企圖分叉的驗證人進行懲罰。
驗證人企圖分叉的行為有多種,這些行為會被Slash,包括但不限於
· 雙籤(雙Prepare):BFT-Prepare階段,嘗試提交一個同樣週期值(Epoch)的不同雜湊或是不同週期來源值(Epoch_source)
· 雙籤(雙Commit):BFT-Commit階段,嘗試對同一個雜湊值提交多次Commit
FFG採用了拜贊庭容錯演算法BFT,並進行了最佳化。BFT會帶來基於區塊確定性的特性。為了讓區塊交易達到及時確定,提高攻擊成本,典型的BFT會要求驗證人除了出塊,還有對當前區塊的狀態進行簽名確認。FFG中新區塊確認前有兩輪投票,只有投對了對應的區塊(>2/3的驗證人都投了的區塊),才會被認為合理的行為,其他的嘗試都可能被系統判定為不良行為,然後被Slash。所以我們看到兩輪投票都能產生雙籤的可能性,這種可能性是當前以太坊主要懲罰的物件。
驗證人
以太坊上的出塊人還是PoW的礦工,PoS中的礦工稱作為驗證人。準確來說,過渡階段的FFG,PoS驗證人除了承擔出塊的作用外,還承擔驗證區塊的作用,這和一般的出PoS共識差不多。以太坊裡面,任何擁有ETH的人,都可以成為以太坊的驗證人。在Casper FFG上,一個完整的驗證人週期是:
1. 交抵押金:需要往Capser的智慧合約中抵押32個ETH
2. 等待入選通知:等待1天時間
3. 投票:等2確認後,在檢查點投票,確認區塊
4. 退出:發出退出協議後,還需要繼續驗證7天
5. 提取抵押金:提交申請後,需要等待4個月左右才能取出。
32個ETH的門檻較低,架構在PoW上的PoS是以智慧合約的形式存在,節點程式可能會稍微簡單一點,使用者只需要在電腦上執行錢包就可以了,配置要求性也不會很高。驗證人最重要做的事情是步驟3的投票,準備,及時投票就可以讓驗證人得到獎勵,免於Slash。
驗證人比較關心的一些初始引數,參考2016年Vitalik寫的褐皮書
· 區塊時間(BLOCK_TIME): 4s
· 跳過時間(SKIP_TIME): 8s
· 週期長度(EPOCH_LENGTH): 10800 (理想情況下,12小時)
· 非同步延遲(ASYNC_DELAY): 10800 (理想情況下,12小時)
· Casper地址(CASPER_ADDRESS): 255
· 提幣延遲(WITHDRAWAL_DELAY): 10000000, 大概4個月
· 創世區塊(GENESIS_TIME): 未來時間,假如為 1500000000
· 獎勵係數(REWARD_COEFFICIENT): 3 / 1000000000
· 最小抵押金(MIN_DEPOSIT_SIZE): 32 ETH
· 最大抵押金(MAX_DEPOSIT_SIZE): 131072 ETH
· V_LOSS_最大增長因子(V_LOSS_MAXGROWTH_FACTOR): 32
· 確定性獎勵係數(FINALITY_REWARD_FACTOR): 0.6 / 1000000000
· 確定性獎勵衰減係數(FINALITY_REWARD_DECAY_FACTOR): 1000 (理想情況下,1.1小時)
· 最小押注係數(MIN_BET_COEFF): 0.25
· 分片數量(NUM_SHARDS): 80
· 每個分片的驗證人(VALIDATORS_PER_SHARD): 120
其中,個人驗證人需要關心的引數是獎勵和抵押金提取引數。為了防止長程攻擊,以太坊對於抵押金的提取延遲更為注重,4個月才支援被取出。另外一個就是需要注意出塊獎勵和驗證獎勵,他們之間大概是5倍的關係。
目前執行節點步驟的客戶端還沒出來,出來之後再和大家介紹細節。
持幣人
以太坊中的持幣人,如果沒有成為驗證人的情況下,會受到通脹ETH的稀釋,但是當驗證人被鎖定的週期太長,所以很多小資產使用者不見得會參與到Staking中來。
在PoW和PoS的混合共識下,底層由PoW來保證以太坊的安全性,用智慧合約實現的FFG,仍然還需要漫長的時間來探索,所以FFG並不會像其他的PoS一樣,強調Stake的量,也沒有委託Stake的服務。
具體的Stake邏輯也沒有具體明確,等明確後我再和大家解釋了。
治理
以太坊和比特幣類似,遵循“程式碼即法律(Code is law)”的原則,所以以太坊沒有現成的鏈上治理模組。現在主鏈的主要升級方式是以以太坊基金會為主導的硬分叉,而智慧合約更是連修改功能都沒有,只要是執行在鏈上的程式碼,除了刪除,就是執行。
以基金會為主導的硬分叉也以太坊繼承了比特幣的治理模式,透過BIP/EIP提案的方式對主鏈進行升級治理。任何人都可以向社羣提交升級建議EIP,由基金會統一來採納和執行。當初ICO的時候,以太坊基金會是留有資金用於資助開發者開發的,所以一些有用的提議最終都由基金會資助開發。
可能會在2019年上線的以太坊2.0(包括FFG,分片和EWASM),是沒有包括具體的鏈上治理協議。我覺得以太坊的升級仍然會繼續延續當前以EIP提議的這套方式,目前,EIP的方式在社羣裡面比較奏效,全球各區域也建立了相關的基金會,由總基金會下方權利,更高效的處理一些有意義的提案。
所以,以太坊應該是沒有具體推進鏈上治理的計劃的。
問題
以太坊的主要優勢是社羣比較完善,開發者較多,而它的優勢也是太的問題所在。在分散式網路中,社羣發展的太大,協調就是一個比較非常嚴重的問題。我們都知道眾口難調,對於以太坊的發展路線,一千個開發者,有超過一千種想法,想讓這些思想極客達成一致,是一件非常要命的事情。最關鍵的事情是,以太坊作為一個承載著加密貨鏈報,市值第二體量的一個開放平臺,想要安全的進行升級,滿足當前需求,真的是一件難上加難的事情。2014年到現在,我們已經見到了很多開發者在陸續的離開以太坊社羣,其中不乏一些頂級技術大牛,離開的原因或多或少和以太坊的現狀有關係。
我梳理了一下以太坊社羣目前存在的幾個主要的問題:
· 底層重,修改慢
作為一個發展5年的平臺,程式碼結構已經變得非常複雜,對於現在需求的滿足,恐怕都要改到底層架構,這些架構牽一髮則動全身,安全問題是首要考慮的,目前來看,從PoW改成PoS的速度這麼慢,就知道問題在哪裡了。
· 社羣大,決策慢
以太坊社羣裡面,不乏很多有想法的開發者,但是他們的想法從提出到落地,需要經過非常長時間的社羣決議,這使得開發變得非常慢,和我們認為的小步快跑,快速迭代的網際網路產品印象是相悖的,這也會讓很多開發者失去耐心,甚至是失去信心。
· 效能瓶頸
很多開發想在世界最大的區塊鏈社羣進行專案開發,但是受限於現在以太坊的效能瓶頸(≈15TPS),很多需要高效能的專案並能很好的在以太坊上執行,提高效能的Plasma側鏈,PoS共識轉型等又沒能很快的出來,導致開發者流失的情況時有發生。
· 競爭激烈
是一個公有鏈都會把以太坊當成競爭對手,是一個公有鏈都會在智慧合約層相容以太坊程式碼,為的就是最快速,最方便的讓開發者能轉移到自己的公鏈上來,所以以太坊面臨的競爭壓力是非常大的,如果以太坊不能很好的將自己的例項提高,那麼肯定會給別的公有鏈超越的機會。
· 算力集中,51%攻擊
算力集中是當前以太坊碰到的一個系統性風險,在沒有從PoW轉移到PoS之前,這個風險會一直都在。掌控以太坊算力的大礦池可以簡單的進行聯合,就可以發起51%的算力攻擊。如果這種攻擊武器一直掌控在少人數中的話,以太坊肯定是發展不大的。
以太坊社羣都是認識到這個問題的,但是轉PoS的速度太慢了,不免還是讓人擔心。
未來
個人認為,以太坊還是非常具有社羣屬性的去中心化社羣,開發者質量非常高,同時作為外界進行區塊鏈智慧合約的入口,以太坊在開發者流量上有天然的優勢。都說進圈的人,投資人都知道BTC,開發者都知道ETH,這話說的是有一定道理的。
但以太坊目前所面臨的問題上,也是極其嚴峻的。這些問題即時解決是保護以太坊核心競爭力的最有力武器,可以看到的是,社羣的確在這個方向上努力當中。
如果以太坊轉PoS成功,我相信它依然能站穩市值老二的這個位置的。