Ethereum 2.0已經正式改名為 Ethereum Serenity
原本預計在今年(2018)上線的 Hybrid POS(Casper FFG) 跟 sharding,因為遇到一些技術上的困難,所以把 Hybrid POS 改成單純 POS,然後因為sharding跟POS有部份技術是重疊的,所以把POS跟sharding併在一起做(本來是分成兩個team作開發)
在Ethereum Serenity的規劃中,在原本的 POW 鏈之外多一個鏈叫做Beacon chain,是一個POS 鏈。在 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,每次驗證可能會有10~20幾萬的簽章(簽章數量的預估方法),驗完簽章天都黑了 XD。
RNG
針對亂數產生(RNG, Random Number Generator),使用RANDAO跟VDF,RANDAO是個利用經濟獎勵的機制來產生亂數,原始的設計是在smart contract上,而在Beacin chain會直接實作這個邏輯。而VDF是一個delay function,因為速度的關係,基金會打算自己開發ASIC晶片。關於這RNG之後會再寫一篇詳細解釋。
Signature Aggregation
驗證簽章,到了今年五月中才有了最終的解法,採用了BLS signature aggregation(BLS128–381),把所有的簽章累加起來合成一個再作驗證,細節可以參考這篇。
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,時間一到,validator就出塊或是驗證),然後加入了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)有一個 checkpoint。
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也會並存
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 (Ethereum Foundation Researcher)的預估,Beacon chain會在2019年底,而shard chain會在2020年初完成,這影片是Justin接受訪談,關於Serenity的細節跟之後的roadmap。
Eth 2.0相關資訊
目前在開發Ethereum Serenity client的有