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 鏈之外多一個鏈叫做 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),使用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,時間一到,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

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也會並存

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 (Ethereum Foundation Researcher)的預估,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的門檻是32ETH
    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的設計
  • p2p layer
    從原本的devp2p改成libp2p,可以參考devp2p跟libp2p的差異libp2p的討論串

Eth 2.0相關資訊

目前在開發Ethereum Serenity client的有

感謝 Chih-Cheng Liang(Ethereum Foundation Researcher)幫忙校正,還有感謝Victory Liu(DTCO)提供建議

Originally published at kimiwublog.blogspot.com.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store