What's New in Ethereum Serenity (2.0)
Ethereum 2.0已經正式改名為Ethereum Serenity
原本預計在今年(2018)上線的Hybrid POS(Casper FFG)跟sharding,因為遇到一些技術上的困難,所以把Hybrid POS改成單純POS,然後因為sharding跟POS有部份技術是重疊的,所以把POS跟sharding併在一起做(本來是分成兩個team作開發)
Beacon Chain
在Ethereum Serenity的規劃中,在原本的POW chain之外多一個鏈叫做Beacon chain,是一個POS chain。在Beacon chain中有兩種角色proposer跟attester,proposer就是產塊的人,attester是驗證的人。而在POW chain上存入32 ETH,可以成為Beacon chain上的validator,而validator有權利產塊(proposer),也會有機會被選attester。此外,延續了Casper FFG finality這個概念,也就是在finality之後的狀態就是正確的狀態(不可回復),不像POW一般需要6個塊的時間才能確認交易是不會被更改的(POW的狀態確認是機率,六個塊之後有"很高的機率"是無法被改變的,而finality就像是0跟1一樣,沒有中間)。
聽到這,好像覺得很簡單,但是在實作上會遇到幾個問題,首先,怎麼決定誰是proposer誰是attester,如果亂數的隨機性不夠,就很容易被遭到操控。接下來是,每次驗證都需要做一次簽名,因為32個ETH就可以當validator/attester,每次驗證可能會有10~20幾萬的簽章(簽章數量的預估方法),驗完簽章天都黑了 XD。
RNG
針對亂數產生(RNG, Random Number Generator),使用RANDAO跟VDF,RANDAO是個利用經濟獎勵的機制來產生亂數,原始的設計是在smart contract上,而在Beacin chain會直接實作這個邏輯。而VDF是一個delay function,因為速度的關係,基金會打算自己開發ASIC晶片。關於這RNG之後會再寫一篇詳細解釋。
Signature Aggregation
Fork Choice Rule
在POW上根據算力決定最長的鏈,而POS會需要另一套規則來決定大家要跟從的鏈,而這就是fork choice rule。之前的文章有介紹了兩種fork choice rule(GHOST跟IMD),不過都不是最終採用的,Serenity最終的finality rule是採用LMD GHOST(Latest Message Driven GHOST),LMD跟IMD最大的差別是,若有一個validator對多個fork都有簽章,LMD的計分方式是只用最新(Latest)block上的簽章,而不是全部都算分(IMD),這也是不久前才決定的。(LMD的細節)
以上簡單介紹了幾個遇到的問題,接下來繼續解釋還有哪些改變
首先,先作名詞解釋,在Beacon chain中使用slot取代block height(目前每6秒一個slot/每6秒產生一個塊),然後加入了epoch,每個epoch是64個slot。根據EIP 1011 epoch是check points之間的時間,也就是多久有一個finality。而Eth 2.0 規格是這樣敘述的 "Epoch - an aligned span of slots during which all validators get exactly one chance to make an attestation."。所以大約每6.4分鐘(6秒 x 64 slot)有一個check point。
Shard Chain
shard chain跟Ehtereum 1.0 POW chain類似(共識機制不同),所有帳戶的資料跟transaction紀錄都在shard chain中,目前規格有1024個shard chain,可以想像是現在的鏈變成1024條,所以交易量將會是之前的1024倍。然而每個shard chain都是獨立的鏈,在跨鏈交易上會是比較大的問題,需要等你所在的鏈已經確定交易了,然後拿著交易明細到另一個鏈進行交易,所以將會非常花時間(6分鐘),而在兩週前Vitalik提出了可以快速跨鏈轉帳的方法,有機會解決跨鏈轉帳的問題。
簡單小結一下,Beacon chain主要是在管理POS的運行,validators的進出或是處罰,隨機挑選proposers/attesters,隨機分配validators給各個shard chain等。而shard chain是真正處理資料的鏈。所以在Serenity的設計中,已經把資料層給抽離出來,獨立運作。Beacon chain跟Polkdot的Relay Chain或是Cosmos的Cosmos Hub是相同的概念,主要是作跨鏈的交易的公正。
Serenity目前的規劃如下圖,除了Beacon chain跟shard chains,原本POW chain也會並存
Roadmap
Ethereum Serenity會分成4個階段,目前GitHub上有前兩階段的規格
phase 0因為只有Beacon chain,所以phase 0就單純只在Beacon chain上對原本的POW chain作finality而已。到phase 1,才會慢慢從原本的POW chain移到shard chain上,至於POW chain 的去留,目前還沒有定論(畢竟東西先出來比較重要),可能提高gas price或是減少gas limit等方式讓原本的鏈無法使用。至於時程的部分,根據Justin Drake的預估Beacon chain會在2019年底,而shard chain會在2020年初完成,這影片是Justin接受訪談,關於Serenity的細節跟之後的roadmap。
Miscellaneous
- 如何進入Beacon/shard chain在原本的POW chain上有個deposit contract,存錢進去就可以,目前每筆只能存入1~32個。存入32個可以作validator,不過在phase 0只有Beacon chain,所以若少於32 ETH 就會被鎖在Beacon chain,等到shard chain上線了。
- 為什麼validator的門檻是32 ETHVitalik在這裏有解釋。簡單來說,希望多一點人參與共識而不是像現在被大礦池所壟斷,所以會希望門檻低一點。Casper FFG一開始門檻在1500ETH,主要因為驗證簽章數量的問題,若再低的門檻會造成每秒需要處理的簽章數過多,因為BLS的出現,提高了每秒可以處理簽章的數量,所以可以有較低的門檻。
- EVM 2.0EVM2.0 不算是Serenity的項目之一,是一直有在進行的專案,但是是Serenity重要的升級之一。而EVM 2.0選用eWASM(Ethereum flavored WebAssembly),期望有更快速、更安全及可攜性。WASM是越來越多人使用的一個標準,越多人一起開發跟debug,代表著安全性會是更好的。而WASM設計理念之一就是速度,所以基於WASM的EVM執行速度將會更快。WASM是web assembly,代表以後smart contract能不只跑在Ethereum而已(不過我相信實際上應該沒這麼美好)。更多細節可以參考eWASM的設計
- p2p layer
從原本的devp2p改成libp2p,可以參考devp2p跟libp2p的差異、libp2p的討論串。
Eth 2.0相關資訊
目前在開發Ethereum Serenity client的有
- Prysm:由 Prysmatic Labs 開發- Go
- Lighthouse : 由 Sigma Prime 開發- Rust
- Nimbus :由 Status 開發- Nim
- Lodestar : 由 Chain Safe Systems 開發- JavaScript
- Harmony : 由 Ether Camp 開發- Java
- Pantheon : 由 PegaSys 開發- Java
- Trinity :由 Trinity team 開發- Python
- Beacon chain POC:Ethereum Foundation開發- Python
感謝 Chih-Cheng Liang(Ethereum Foundation Researcher)幫忙校正
留言
張貼留言