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中有兩種角色proposerattester,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),使用RANDAOVDF,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/每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跟PolkdotRelay Chain或是CosmosCosmos Hub是相同的概念,主要是作跨鏈的交易的公正。

Serenity目前的規劃如下圖,除了Beacon chain跟shard chains,原本POW chain也會並存



Roadmap

Ethereum Serenity會分成4個階段,目前GitHub上有前兩階段的規格
  • phase 0:Beacon chain 上線
  • phase 1:shard chains上線
  • phase 2:state machine(EVM2.0)
  • phase 3:其餘的enhancement
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 ETH
    Vitalik在這裏有解釋。簡單來說,希望多一點人參與共識而不是像現在被大礦池所壟斷,所以會希望門檻低一點。Casper FFG一開始門檻在1500ETH,主要因為驗證簽章數量的問題,若再低的門檻會造成每秒需要處理的簽章數過多,因為BLS的出現,提高了每秒可以處理簽章的數量,所以可以有較低的門檻。
  • EVM 2.0
    EVM2.0 不算是Serenity的項目之一,是一直有在進行的專案,但是是Serenity重要的升級之一。而EVM 2.0選用eWASM(Ethereum flavored WebAssembly),期望有更快速更安全及可攜性。WASM是越來越多人使用的一個標準,越多人一起開發跟debug,代表著安全性會是更好的。而WASM設計理念之一就是速度,所以基於WASM的EVM執行速度將會更快。WASM是web assembly,代表以後smart contract能不只跑在Ethereum而已(不過我相信實際上應該沒這麼美好)。更多細節可以參考eWASM的設計


Eth 2.0相關資訊

目前在開發Ethereum Serenity client的有

感謝 Chih-Cheng Liang(Ethereum Foundation Researcher)幫忙校正

留言

這個網誌中的熱門文章

瑞士滑雪分享2 - 策馬特

動手實做零知識 - circom