Eth 2.0 會成為第一個從 PoW轉PoS 的公鏈嗎?

買賣虛擬貨幣

作者 | 邱祥宇

以太坊2.0究竟是什麼?以太坊2.0的生態會有哪些變化?在技術上又有哪些新的點?BCH、ETC誰會成為以太坊的資料層?以太坊的未來之路到底該如何走?

面對以上種種疑問,本週二至本週四晚,巴位元首檔社群訪談欄目SheKnows攜手ETC,全面解析“後以太時代”(以太坊2.0)。

週二晚上的“ETH2.0 生態”主題分享之後,週三晚上帶來的主題分享是“從1.0到2.0——看後以太時代的技術走向”,分享嘉賓依次是:以太坊黃皮書翻譯者楊鎮、以太坊企業聯盟中國區負責人張衛家、以太坊愛好者社羣負責人阿劍,主持人灑脫喜。

分享要點如下:

1)信標鏈上自始至終不會有複雜的狀態,但卻是後續整個系統的中心。——阿劍

2)以太坊2.0的節點只為特定的分片處理交易,這樣就實現了並行處理,大大提高了交易吞吐量和可擴充套件性。——張衛家

3)按每個驗證者需要質押 32 eth 算,Beacon chain(信標鏈)的存款合約將至少會鎖定超過 200 萬個 eth。——楊鎮

4)Casper FFG 相比於其它 PoS 共識機制,最大的優勢在於其 liveness。——阿劍

5)懲罰應該在DAO(社羣自動管理系統)建立起來,有了懲罰共識以後才有意義。——張衛家

6)VDF 作為一種開源硬體(ASIC)設計,目的是用來作為對透過 RANDAO 方式產生的隨機數進行再計算來獲得最終結果,它是要與 RANDAO 共同使用的,並不是二選一的關係。——楊鎮

7)Eth 2.0 的分片系統處理的所有交易都不是跨片交易,不依賴於其他分片的資料,整體處理速度理論上能提高1000 倍,但這個整體效能會隨著跨片交易比例的提高而顯著降低。——楊鎮

8)eWASM 階段難度大風險大,更適合大企業來做。——張衛家

9)排除掉那些很大的噪音,你會發現對以太坊的共識比很多人想象中的都要強。——阿劍

10)Eth 2.0 能否成為第一個成功的 PoS 公鏈系統仍然是我最大的擔憂。——楊鎮

完整版如下:

1

以太坊2.0科普:從phrase0到phrase2

主持人:請阿劍老師為我們分享一下 phrase 0 Beacon chain(信標鏈)的資訊。

阿劍:

信標鏈是 Eth2 中的主鏈,它將承擔的職責有:維護驗證者集合、為分片分配驗證者(要求驗證者提議區塊或提交 attestation)、儲存分片鏈的 attestation。不同於 Eth2 的主鏈,信標鏈會用 PoS 機制來達成共識,具體而言就是 Casper + Last Message Driven GHOST。信標鏈上自始至終不會有複雜的狀態,但卻是後續整個系統的中心。在即將到來的 Phase 0 中,Eth2 上的使用者只需在保證金合約中存入 32ETH 便可獲得驗證者資格,參與信標鏈的出塊過程。此外,在這個雙鏈並行的階段中,開發者現在還計劃打造 PoW 主鏈和信標鏈的雙向耦合,即:使用信標鏈來 finalize PoW 鏈上的區塊。

主持人:請張衛家老師為大家講解下phrase 1 分片鏈(Shard chain)的知識。

張衛家:

以太坊和其他區塊鏈一樣,存在著三元悖論問題,也就是安全性,去中心化,和可擴充套件性不可兼得。以太坊2.0採用區塊鏈分片的理念將網路的整個狀態分割成一系列被稱為分片的分割槽(1024個),每個區包含自己獨立的狀態及交易歷史記錄。以太坊上的分片方案可以會將所有以0x00開頭的地址放入一個分片,所有以0x01開頭的地址放入另一個分片等。在分片系統中,驗證節點被隨機地分配了建立分片塊的權利。在每個時隙期間(例如,6秒的時間段),對於每個分片k,有一個隨機驗證節點被選中,從而有權在“shard k”上建立區塊。對於每個k分片,另一組驗證節點會被選為證明者。塊的標題以及證明節點的簽名打包後可以釋出在“主鏈”(也稱為信標鏈)上。以太坊2.0的節點只為特定的分片處理交易,這樣就實現了並行處理,大大提高了交易吞吐量和可擴充套件性。

主持人: 請楊鎮老師為大家講講以太坊2.0 phrase 2 VM的知識點。

楊鎮:

Eth 2.0 的 phrase 2 目前還在 R&D 階段,沒有太多可以聊的東西。很多內容都還在討論中,並不是最終結論。大家可以去這個地址跟蹤最新訊息:https://hackmd.io/UzysWse1Th240HELswKqVA?view僅針對 VM,那麼能確定的就是 Eth 2.0 會使用 Ewasm 作為執行程式碼標準,也就是說 Eth 2.0 裡的智慧合約無論是用 Solidity 寫還是用 Vyper 寫,最終都會編譯為 Ewasm 位元組碼來在 Ewasm 虛擬機器中執行。具體的方式是透過一個叫做 EVMC 的 ABI(Application Binary Interface)來連線 EVM以太坊客戶端(可以參考 ethereum/evmone 專案)。這是一種解耦的設計,將智慧合約的執行和系統資料處理以及共識解耦了。Ewasm 的虛擬機器是由一個叫做 ewasm/hera 的專案來維護的。

2

信標鏈驗證者:至少鎖定200萬個ETH

主持人: 根據以太坊2.0研究者Justin Drake透露的資訊顯示,Beacon chain(信標鏈)的創始區塊(MIN_GENESIS_TIME)最早將在2020年1月3日誕生(但很可能也會延期)。而在此之前,開發者們將提供一個存款合約,想要當信標鏈驗證者的參與者可提前向該合約地址轉32 ETH,那在這個階段,從技術的角度來看,確定會發生一些什麼,以及可能會發生一些什麼呢?

楊鎮:

據我看到的訊息,這個存款合約可能會在今年9月或者10月釋出到目前的主網,之後就可以開始接受驗證者的註冊。這跟分叉沒有任何關係,只是目前主網上的一個合約而已。這個合約的程式碼已經有了,可以在 https://github.com/ethereum/eth2.0-specs/blob/dev/deposit_contract/contracts/validator_registration.v.py 看到。按目前的設計,這個合約需要接收至少 65536 個不同的地址作為驗證者。為什麼是這個數呢?因為照目前的計劃,Eth 2.0 將支援 1024 個分片鏈,那麼 65536 個註冊驗證者就可以保證每個分片上都分配到至少 64 個驗證者。按每個驗證者需要質押 32 eth 算,這個合約將至少會鎖定超過 200 萬個 eth。所以這肯定是個相對漫長的過程,應該會持續數月。這期間會發生什麼,誰也不知道;但這整個過程一定會很有意思。

主持人 :剛才我們談到了32 ETH這個存款值,它是一個固定的值,為什麼會設定這樣一個值呢?而且在phrase 0,從以太坊1.0轉到以太坊2.0的幣會是單向的,也就是隻能轉入而不能轉回,這樣的設定是出於什麼樣的考慮呢?

張衛家:

這個32ETH存款值實際上是以太坊2.0參與權益證明節點的門檻。從去中心化角度上看,門檻越低, 參與權益證明的節點越多, 越有利於去中心化和增加由加大隨機性帶來的安全性。另一方面, 如果門檻太低,也會因節點過多造成資訊傳遞負擔和敲定時間加長。從以太坊發表的文章上看, 32 ETH 是一個技術和商業都可接受的證明節點存款值。以太坊2.0不是一次性更新替換1.0, 而是分幾個階段進行,包括信標鏈、分片鏈、eWASM虛擬機器等等。 在eWASM(執行層)更新以前,以太坊1.0和2.0的鏈會共存。 以太幣在1.0鏈鎖定並單向流動到2.0提供了可行的適合新舊鏈共存的轉幣機制。

3

Casper共識機制的優缺點

主持人 :我們知道,Beacon chain(信標鏈)是使用的 Casper共識機制,而 Casper又分為 Casper FFG和CBC Casper機制,在phrase 0,以太坊採用的是Casper FFG共識機制。關於這一機制,相對其它PoS或其它型別的共識機制有什麼優點或不足嗎?

阿劍:

據我所知,Casper FFG 相比於其它 PoS 共識機制,最大的優勢在於其 liveness。在 Tendermint 這樣的共識演算法中,如果惡意驗證者控制了 1/3 的權益,就可以讓整條鏈卡死。但在 Casper FFG 中,由於 RANDAO 和 VDF 的執行不受鏈執行的影響,所以可以保證即使某個驗證者委員會中惡意驗證者佔多數,驗證者混洗和出塊權的發放都照常執行,鏈不會卡死。不足當然是需要考慮更多細節。比如隨機數生成的抗偏轉性。

4

談懲罰措施:有了懲罰,共識才有意義

主持人:好的,下面我們討論下Beacon chain(信標鏈)的懲罰措施,目前以太坊2.0有兩種懲罰措施,一種是面向不參與驗證的驗證者,而另一種則是面向惡意行為者,它們具體是怎樣的呢?

楊鎮:

據我瞭解,問題裡說的“不參與驗證的驗證者”一般值得就是掉線/網路故障這種短時間無法進行工作的地址,這個懲罰相對是很輕的,只有當很多驗證者(超過 1/3)同時掉線較長時間,導致信標鏈無法做最終確認時,才會受到較大的懲罰,且這個懲罰是隨時間推移增長的,起初也不會太高。而惡意行為者(比如重複投票),則會直接收到較大的懲罰,比如直接罰沒質押的若干 eth。

阿劍:

懲罰分為兩種,一種是 Slashing,“罰沒”,針對的是對競爭區塊雙重簽名或者錯籤的驗證者;罰沒的最小力度是 1eth,但力度會隨近期被懲罰的驗證者數量而線性上升,如果近期有接近 1/3 的驗證者被罰沒,你就會被秒殺——罰沒所有權益。第二種是 inactivity leak,“怠惰懲罰”,即當有大量驗證者都離線,使信標鏈無法正常敲定區塊的時候,離線的驗證者會被懲罰,懲罰力度也會隨離線時間的上升而不斷遞增,最高達 60.8%

張衛家:

我理解是一個是節點不作為的懲罰,另一個是對惡意作為的懲罰。我認為這種懲罰應該在DAO(社羣自動管理系統)建立起來,有了懲罰共識以後才有意義。

5

隨機性問題:協議並非二選一

主持人:關於PoS協議,隨機性是非常重要的,目前Beacon chain選擇的是RANDAO結構來實現隨機性,而未來,開發者計劃使用可驗證延遲函式(VDF),請楊鎮老師給大家講講RANDAO和可驗證延遲函式(VDF)這兩款隨機抽樣技術的情況。

楊鎮:

RANDAO 就是 random DAO 的意思,其中的 DAO 就是 Decentralized Autonomous Organization 的縮寫,也就是所謂的“去中心化自治組織”。這種方式是透過一個智慧合約來使多人合作一起生成隨機數的方式。它使用了智慧合約開發裡的所謂 commit-reveal 的設計模式。合約應該是可以反覆使用的,也就是應該是一個迴圈狀態機;每次產生一個隨機數的執行過程會分為三個階段:提交、揭示和實際計算。第一個階段是所有參與者各提交一個他們各自隨意指定的輸入資料的雜湊值,等所有人都提交完或者規定時間達到時,進入第二階段,由所有提交人提交之前雜湊值對應的原始資料。如果兩次提交的資料相符,則作為一個有效的計算輸入。待所有人揭示完畢或達到規定時間之後,合約將自動基於有效的計算輸入(應該多於一個固定的最小數量)來計算實際的隨機數。然後合約回到第一階段的狀態,可以重新開始生成隨機數。RANDAO 模式的風險就是:在揭示階段,最後一個提交原始資料的人,是可以看到之前所有其他人的原始資料的(因為所有交易的附加資料都是公開的),可以預知最終的結果。VDF 則是作為一種開源硬體(ASIC)設計的,目的是用來作為對透過 RANDAO 方式產生的隨機數進行再計算來獲得最終結果,它是要與 RANDAO 共同使用的,並不是二選一的關係。也就是說,在 Eth 2.0 中,首先會由所有參與委員會的成員基於 RANDAO 的方式產生一個隨機數,然後由 VDF 將此隨機數作為輸入來計算得到最終的隨機數。VDF 的計算過程是一種無法透過平行計算加速的計算過程,這也就能避免透過平行計算的方式提前獲知結果而從中牟利的可能。目前這個延遲的時間(也就是計算的難度)被設定為 102 分鐘,就是必須要經過 102 分鐘的計算才能得到最終的隨機數。

Mako:

VDF 礦機的研究,目前是以太坊基金會和 filecoin 一起在做,進展好像不是很多。

6

1024個分片:兼顧安全和效能

主持人:剛才,張衛家老師有提到說,以太坊的分片數量被設為了1024個,這些分片之間會互現由合約進行交流,那麼為何會設定為1024這個數字,不是更多也不是更少呢?其中的權衡之道是什麼?此外這也意味著會有131072(1024*128)個驗證者的位置(最優),而屆時如果驗證者數量不夠,會發生一些什麼?

阿劍:

哈哈哈。這個數量咋定出來的我也不知道。可能需要是 2 的次方個吧。另外,增發率也會動態調整來激勵驗證者加入。

Mako:

程式設計師喜歡 1024。

張衛家:

二進位制,肯定是二的次方。1024 不是固定的,如果驗證節點不夠,Vitalik 也能讓基金會執行一些節點。

阿劍:

確實可能是安全和效能的權衡,驗證者不能太少,不然分片就容易被攻破。

楊鎮:

社羣裡的大神解釋過這個問題,說是出於安全性的考慮,基於每個分片至少 128 個驗證者這個設計來確定的 1024 個分片這個數字。我並不是演算法專家,沒法簡單地解釋為什麼 128 個驗證者就是安全的。大家有興趣的話,可以去看 V 神的論文:https://vitalik.ca/files/Ithaca201807_Sharding.pdf對於 Eth 2.0 的分片系統來說,因為每個分片都是獨立的地址空間,所以如果系統中處理的所有交易都不是跨片交易,也就是不依賴於其他分片的資料,那麼整體處理速度理論上確實能提高了 1000 倍;但這個整體效能是會隨著跨片交易比例的提高而顯著降低的。關於跨片交易的處理是分片系統中最複雜的部分,目前也還沒有確定的技術方案。最後有關驗證者數量不夠的問題,最簡單的方案就是讓各個分片排隊輪流出塊,保證能出塊的分片的安全性,但網路整體效能就會相應降低;另外也可以允許所有分片同時出塊,但減少每個分片的驗證者,這樣肯定就會降低每個分片的安全性。這個權衡方案也還在持續討論中,並沒有最終確定。

主持人:根據資料顯示,beacon chain(信標鏈)與分片之間是透過一種稱為交聯(Crosslink)的設計進行週期性通訊的,能否給大家通俗地解釋一下這個設計?

楊鎮:

通俗肯定是做不到了,我嘗試儘量簡單地解釋一下。crosslink 資料中包含了以下幾個欄位:分片號、信標鏈上的父區塊狀態根、開始 epoch、結束 epoch 和分片鏈上的資料狀態根。這裡說的狀態根,就是狀態樹的根節點雜湊(如果你還不明白這是什麼意思,那你大概需要去補補 Eth 1.0 的課了)。epoch 是一個投票週期,大約是 6.4 分鐘,也就是 64 個 slot 週期。這樣就很容易理解了:crosslink 其實就是某個分片在某個 epoch 結束時的資料狀態版不過這裡還需要多解釋一點兒關於信標鏈的設計。crosslink 是 attestation data(大概可以譯為“見證資料”,也就是由驗證者提交的用來證明分片鏈狀態的資料)的一部分,attestation data 則是信標鏈中區塊資料的重要組成部分,所以實際上 crosslink 也就是信標鏈中區塊資料的一部分,是用來表示系統的整體狀態和用來支援跨片交易操作的關鍵資料。

阿劍:

應該可以簡單解釋成:單分片定期將自己的狀態證明存到信標鏈上,作為跨分片通訊所需的密碼學證明材料。

向丹:

再通俗點是否可以理解為:分片時不時需要在信標鏈上報告狀態,crosslink就是分片之間的通關密語。

7

非同步交易VS同步交易

主持人:Vitalik用火車旅館問題來解釋非同步transaction,並且介紹了一個稱為“猛拉”(yank)的解決方案,可以大致講講火車旅館問題,以及這個解決方案的原理嗎?

張衛家:

火車旅館問題的場景是使用者想要購買火車票並預訂酒店,並且希望確保操作是原子的,要麼保留成功,要麼兩者都不成功。如果火車票和酒店預訂應用程式在同一個分片上,這很容易:建立一個嘗試同時進行預訂的事務,要麼兩個預留成功, 要麼丟擲異常並恢復所有內容。但是,如果兩者都在不同的分片上,那就不那麼容易了;Vitalik介紹的解決方案是讓合同本身可以跨越碎片移動;其中合約可以從一個分片“拉”到另一個分片,允許通常駐留在不同分片上的兩個合同臨時移動到同一分片,然後進行同步操作。

主持人:說到非同步交易,自然還有同步交易的概念,Vitalik提到會透過類似Plasma的方法來實現,阿劍老師為我們講講這大概是個什麼樣的思路?

阿劍:

關於同步型的跨分片交易,目前資料比較少。包括 Vitalik 說的用 Plasma 方式來實現我也不瞭解。不過我聽說過 Viltaik 提出過的另一種同步跨分片交易的模式,叫 Merge Block。大意是讓 A 分片的區塊附帶狀態 witness,讓 B 分片的驗證者可以收到區塊及其 witness(技術上來說,B 分片的驗證者變成了 A 分片的無狀態客戶端),然後可以將 A 分片的該區塊與 B 分片的區塊同時執行。另一種模式是在給定時間內讓某分片變成主分片,在該段時間內該分片的驗證者可以任意讀寫其它分片,即其他分片的驗證者也優先執行該分片的區塊,這樣也能創造同步執行。

楊鎮:

補充一句,貌似是用 sparse merkle tree 來做,所以說類似於 plasma(看不懂的童鞋就無視我吧……)

8

狀態租賃:實現起來未必容易

主持人:Phase 2階段對於以太坊2.0平臺而言是極其重要的一個階段,其重新引入了智慧合約,每個分片將基於eWASM管理一個虛擬機器,此外,狀態租賃方案也可能會被引入,這將會帶來什麼影響嗎?

阿劍:

eWASM 和狀態租賃方案的情形我都沒有跟進,一無所知。但狀態租賃會明顯面臨收費問題,不是個簡單的問題。有一位非常棒的開發者叫 Alexey Akhunov,就在做狀態租賃的研究和 EIP,大家可以關注一下。

張衛家:

對於eWASM ,我還不是很瞭解,還在看波卡的WASM是否和EVM比有更多優勢。現在還有微軟的TTI和digital asset DAML。

楊鎮:

其實像以太坊這樣的公共智慧合約平臺,都存在所謂“狀態爆炸”的隱患。也就是當網路(主要是智慧合約)的使用量快速增長的時候,會導致系統儲存需求的爆炸式增長。因為全節點需要維護系統中所有賬戶的狀態、儲存所有合約的狀態,那麼在分片實施之後,由於地址空間增大了 1000 多倍,而使“狀態爆炸”問題到了不得不解決的程度。解決的方案就是要逐步的隨機丟棄歷史資料。時間越久遠的資料,會有更高的機率被全節點丟棄,但從全網來看,即使是久遠的歷史資料,仍然有一定的機率能夠獲取到。那麼這就產生了一種需求,也就是我希望我的歷史交易資料/合約資料能夠被一直保留下來,只要我能付給替我儲存資料的那些全節點一些報酬。這就是所謂“狀態租賃(state rent)”的大致來由。這種租賃行為是可以透過智慧合約相對簡單地實現的。但這個方案目前還處在很早期,最近的更新是在去年年底。所以其具體設計和實際影響如何還不好說。

阿劍:

我主觀上覺得實現起來未必容易,而且會在經濟上引入過多的複雜性。

9

以太坊2.0未來:難言樂觀但罕有其匹

主持人:好的,下面我們進入今天最後的一個問題:有人說以太坊2.0的設計太複雜了,對此Vitalik的回覆是:“在過去的一年裡,它已經變得相當簡單了,且其規範要比黃皮書字數要少,以太坊2.0中的很多東西要比1.0簡單得多……”,另外Justin Drake說phrase 0大約需要指定1024行程式碼,預計phrase1+phrase2的程式碼也是1024行。各位老師,那你們的觀點是什麼呢,以及是否看好以太坊2.0呢?

楊鎮:

好,潑冷水的事我先來,哈哈。目前所有以太坊客戶端的程式碼量肯定都是以萬行為單位來計算的,所以我想問題裡說的 1024 行程式碼,大概指的是核心演算法或者關鍵處理程式碼。然後我覺得單純以程式碼量來衡量系統的複雜程度是不科學的,尤其是從軟體工程師的專業角度來看。因為有些數十萬行程式碼的專案,其實可能非常簡單,而一個幾百行程式碼的專案也可能非常複雜。此外,你說一個能處理 1000 多個區塊鏈的系統比一個只能處理一個區塊鏈的系統簡單,或者一個投票系統比一個擲骰子系統簡單;抱歉,我實在無法認同。我們這期雖然花了這麼多時間來講 Eth 2.0,但我感覺依然並沒有把整個運作過程說的很清晰或者很容易看明白,這足以說明 Eth 2.0 的設計其實並不簡單。我想最大的問題在於這又是一個實驗性的大專案,並且沒有經過足夠的驗證和測試,比如懲罰機制和跨片交易到底能否運轉正常、驗證者不足時網路的表現如何這些問題並沒有令人滿意的解答;Eth 2.0 能否成為第一個成功的 PoS 公鏈系統仍然是我最大的擔憂。從以太坊社羣近一兩年的工程狀況來看,我本人真的樂觀不起來。

張衛家:

先來點輕鬆的。愛因斯坦的質能方程只有一行,E=mc2, 但做出來,需要耗費很長的時間。似乎Github上以太坊2.0的程式碼行數不多, 但以太坊由於規模大,節點之間又是不可信任的, 所以改動每行程式碼都是牽一髮而動全身,影響很大。我個人認為eWASM 階段難度大風險大,更適合大企業來做

阿劍: 我個人也認為 eth2 確實要比 eth2 複雜。客觀上來說這是因為 PoS 和分片的引入,導致系統中出現了很多原本我們不太需要考慮的因素。但會這麼想可能也是因為我們理解得不夠深,等到它真正實現了可能也會覺得稀鬆平常。不過我也認為,以太坊的研究和開發力量罕有其匹,生態是最豐富的,社羣是最活躍的,所以沒有理由不看好以太坊。排除掉那些很大的噪音,你會發現對以太坊的共識比很多人想象中的都要強。

主持人:好的,由於時間關係,關於以太坊2.0的技術之旅我們就到此為止了,其實還有很多重要的技術我們並沒有談及,比如BLS簽名、zk-SNARKs、plasma、狀態通道等技術,也正如老師們所說,這次分享其實也沒法說清楚整個以太坊2.0的設計,最後推薦一下https://ethresear.ch/ 這個網站,上面會有關於以太坊研究社羣的最新成果。

第三場SheKnows活動的主題《etc、bch誰能成為eth的資料層?》就是由Vitalik最近提議所引發的哦,非常期待@小別 和江卓爾老師以及Terry老師的對話。

再次感謝各位嘉賓為我們帶來的精彩回答,感謝ETC亞太社羣對本次活動的大力支援。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;