一文說透以太坊 2 0 升級(jí)過程及參與方式。對(duì)于以太坊,2019 年會(huì)是重要的一年,因?yàn)榘凑沼?jì)劃,以太坊 2 0 將要在今年起航,從 PoW 的舊大陸出發(fā)
一文說透以太坊 2.0 升級(jí)過程及參與方式。
對(duì)于以太坊,2019 年會(huì)是重要的一年,因?yàn)榘凑沼?jì)劃,以太坊 2.0 將要在今年起航,從 PoW 的舊大陸出發(fā)前往 PoS 的新大陸。
與此同時(shí),以太坊 1.0 還會(huì)繼續(xù)存在并保持進(jìn)化。以太坊 1.0 運(yùn)行在原主鏈上,以太坊 2.0 運(yùn)行在 Beacon 鏈上。
計(jì)劃中的航程估計(jì)要有兩年,直到 2021 年,在分片鏈能夠?qū)崿F(xiàn)完整的功能后,1.0 才會(huì)把以太坊的實(shí)際運(yùn)行權(quán)交給 2.0,自己則會(huì)退出歷史的主舞臺(tái),作為 2.0 的一個(gè)分片或一個(gè)主存儲(chǔ)合約而存在。
以太坊 2.0 的 Beacon 鏈?zhǔn)侨绾芜\(yùn)行的?ETH (Ether)持有人如何從 PoW 鏈「跨」到 Beacon 鏈?以及,跨還是不跨?我們將在本文試著去探討。
讀懂 Beacon 鏈
先做個(gè)簡單的科普:Beacon 鏈?zhǔn)且粭l全新的 PoS 區(qū)塊鏈,它是以太坊 2.0 的核心組件,卻不是以太坊 2.0 的全部。以下幾點(diǎn)可能是理解 Beacon 鏈的關(guān)鍵:
1、Beacon 鏈?zhǔn)且粭l PoS 鏈,運(yùn)行以太坊的 PoS 協(xié)議 Casper。 2、以太坊 1.0 就是指 PoW 的主鏈,但以太坊 2.0 包括 Beacon 鏈、分片鏈、虛擬機(jī)層三部分,其結(jié)構(gòu)如下圖所示:
3、Beacon 鏈?zhǔn)且蕴?2.0 的中樞,也是 2.0 的第一個(gè)和最重要的一個(gè)組件。如下圖所示,所有分片都會(huì)連接它并與它通信,Beacon 鏈為分片鏈提供安全性和最終確認(rèn)性。
Beacon 鏈主要完成兩個(gè)功能:一是執(zhí)行 PoS 共識(shí),包括維護(hù)驗(yàn)證者集合、選擇驗(yàn)證者組成委員會(huì)、分配驗(yàn)證者對(duì)分片塊進(jìn)行提議或證明、對(duì)驗(yàn)證者實(shí)施獎(jiǎng)勵(lì)和處罰等等。它是驗(yàn)證者參與質(zhì)押系統(tǒng)并根據(jù)所押權(quán)益獲得收益的渠道,也是整個(gè)系統(tǒng)安全性的保障。
第二個(gè)功能是實(shí)現(xiàn)分片的通信。各分片都會(huì)將自己最新狀態(tài)的哈希存到 Beacon 鏈的區(qū)塊上,當(dāng) Beacon 鏈區(qū)塊完成時(shí),相應(yīng)的分片區(qū)塊就被認(rèn)為是最終確定的,其它分片就可確信它們并與之跨分片交易。分片鏈與 Beacon 鏈通過「交聯(lián)」實(shí)現(xiàn)跨分片通信,從而將整個(gè)系統(tǒng)連接在一起。
4、Beacon 鏈上沒有虛擬機(jī),沒有智能合約,也無法處理交易;Beacon 鏈不存儲(chǔ)現(xiàn)行以太坊區(qū)塊鏈上存儲(chǔ)的信息,它只存儲(chǔ)驗(yàn)證者列表和 Attestation。所謂的「Attestation」,是指經(jīng)過確認(rèn)并由驗(yàn)證者簽名的哈希值,它們實(shí)時(shí)記錄著一個(gè)特定分片的狀態(tài)。
5、Beacon 鏈與以太坊 1.0 的 PoW 鏈會(huì)彼此獨(dú)立地運(yùn)行大約兩年。在以太坊 2.0 能夠?qū)崿F(xiàn)完整的功能前(目前預(yù)計(jì)在 2021 年),以太坊都運(yùn)行在 1.0 上,Beacon 鏈上的區(qū)塊沒有什么實(shí)際意義。
以上即是 Beacon 鏈的基本情況。為什么說 Beacon 鏈要到 2021 年才能正式運(yùn)行以太坊?因?yàn)閺囊蕴坏陌l(fā)展路線圖可知,到這一年以太坊 2.0 才能支持智能合約和資產(chǎn)轉(zhuǎn)移,實(shí)現(xiàn)可用性。
2021 年前的以太坊 2.0 長什么樣?
在了解了 Beacon 鏈之后,讓我們簡要介紹一下從現(xiàn)在到 2021 年的以太坊 2.0,會(huì)經(jīng)歷的三個(gè)階段:階段 0、階段、階段 2。
階段 0 (2019 年):啟動(dòng) Beacon 鏈
階段 0 專注于讓 Beacon 鏈上的驗(yàn)證者運(yùn)行起來。用戶可以在鏈上存入 32 個(gè) BETH (Beacon ETH)成為驗(yàn)證者,不過在該階段驗(yàn)證者只管理 Beacon 鏈,此時(shí)沒有分片鏈。
Beacon 鏈在早期會(huì)盡可能保持簡單的迭代設(shè)計(jì),該階段不支持賬戶、資產(chǎn)轉(zhuǎn)移和智能合約。BETH 僅能被驗(yàn)證者使用,不能在鏈上轉(zhuǎn)移,也無法轉(zhuǎn)入交易所交易。
階段 1 (2020 年):啟動(dòng)分片鏈
階段 1 將加入分片鏈組件,實(shí)現(xiàn) Beacon 鏈+分片鏈。但該階段只是試運(yùn)行分片結(jié)構(gòu),并不是真正的用分片實(shí)現(xiàn)擴(kuò)展,Beacon 鏈將分片鏈區(qū)塊視為沒有結(jié)構(gòu)或含義的簡單比特集合。分片鏈此時(shí)依然沒有賬戶、資產(chǎn)和智能合約。
Beacon 鏈將支持 1024 條分片鏈,每條鏈都有一組 128 個(gè)驗(yàn)證者組成的委員會(huì)來驗(yàn)證。Beacon 鏈為每個(gè)分片在每個(gè)周期隨機(jī)選擇分片驗(yàn)證者,分片驗(yàn)證者通過「交聯(lián)」證明分片的內(nèi)容和狀態(tài)。
需要指出,在階段 0 和階段 1,以太坊 1.0 和以太坊 2.0 之間沒有數(shù)據(jù)流通,以太坊依然運(yùn)行在 PoW 鏈。
階段 2 (2021 年):啟動(dòng)虛擬機(jī)層
階段 2 將加入虛擬機(jī)層,它是以太坊 2.0 的最后一個(gè)重要組件。實(shí)現(xiàn) Beacon 鏈+分片鏈+虛擬機(jī)層的以太坊才是一個(gè)我們熟悉的完整的公鏈系統(tǒng),以太坊 2.0 的可用性將在這個(gè)階段正式實(shí)現(xiàn)。
此時(shí),智能合約被引入系統(tǒng),資產(chǎn)也能夠在鏈上自由轉(zhuǎn)移;分片鏈從單純的數(shù)據(jù)標(biāo)記器變成功能完整的區(qū)塊鏈,交聯(lián)操作支持跨分片的通信;一些最常用的開發(fā)工具也可能被移植到以太坊 2.0,以支持 EVM2。EVM2 是以太坊新的虛擬機(jī) eWASM,基于 Web Assembly,支持多種編程語言實(shí)現(xiàn)智能合約。
雖然以太坊的分片技術(shù)路線圖總共包括七個(gè)階段,但在進(jìn)入到階段 2 后,以太坊就將從 PoW 鏈遷移到 PoS 鏈,從 1.0 時(shí)代真正進(jìn)入到 2.0 時(shí)代。
32 ETH 的船票貴不貴
以太坊 2.0 中的新資產(chǎn)叫 BETH,它有兩種生成途徑,一是由以太坊 1.0 中的 ETH 轉(zhuǎn)化而成,1ETH 生成 1 BETH;二是在以太坊 2.0 中質(zhì)押 BETH 參與 Staking,作為驗(yàn)證獎(jiǎng)勵(lì)生成。
由于在階段 0,用戶可以在 Beacon 鏈存入 32 個(gè) BETH 成為驗(yàn)證者,姑且可以理解為花 32ETH 買張船票,跟隨以太坊前往以太坊 2.0 新大陸。問題是,你愿意上船嗎?
鑒于在階段 2 之前 BETH 是不能在賬戶間轉(zhuǎn)移和交易的,以太坊及其各種應(yīng)用也依然運(yùn)行在 PoW 鏈上,所以當(dāng) Beacon 鏈上線后,用戶會(huì)把 ETH 轉(zhuǎn)化為 BETH 的唯一原因是用 BETH 參與 Staking,以獲得更多的 BETH。
根據(jù)之前的資料,ETH 與 BETH 之間的轉(zhuǎn)換是單向的,即只能通過合約用 ETH 生成 BETH,而不能把 BETH 重新?lián)Q為 ETH。
這帶來的一個(gè)問題就是 1 枚 BETH 的價(jià)格上限為 1 ETH,BETH 永遠(yuǎn)不會(huì)比 ETH 更值錢,因?yàn)?1ETH 還包含了一個(gè)從 ETH 轉(zhuǎn)為 BETH 的權(quán)利;同時(shí),轉(zhuǎn)為 BETH 還意味著為期兩年的鎖倉期。
不過以太坊創(chuàng)始人 Vitalik Buterin 最近在一次討論中提到了 ETH 與 BETH 雙向兌換的可能性,以太坊聯(lián)合創(chuàng)始人 Joe Lubin 近日在接受采訪時(shí)也表示可能存在雙向機(jī)制。但雙向機(jī)制可能帶來一個(gè)新的問題:BETH 通過 Staking 增發(fā),但 ETH 不能參與這種增發(fā),雙向兌換對(duì)以太坊 1.0 鏈上的資產(chǎn)是不利的。
以上兩種不同的方案會(huì)影響用戶把資產(chǎn)從 ETH 轉(zhuǎn)為 BETH 的動(dòng)力,進(jìn)而可能影響以太坊從 1.0 過渡到 2.0 的平穩(wěn)性。用戶是否愿意把資產(chǎn)轉(zhuǎn)移到 Beacon 鏈這個(gè)問題會(huì)在階段 2 到來后變得嚴(yán)峻,以太坊采用的解決方案也許會(huì)在這兩年內(nèi)根據(jù)情況不斷地調(diào)整和變化。
既然轉(zhuǎn)換方案未定,我們不妨先看看用戶遷移資產(chǎn)的另一種決定性的動(dòng)力:抵押 BETH 參與 Staking 的收益。
至少在目前階段,用戶并不能通過加入權(quán)益池以任意數(shù)量的 BETH 參與進(jìn)以太坊 2.0 的 Staking,用戶只有在 Beacon 鏈上質(zhì)押 32 BETH (2^5)才可以獲得驗(yàn)證者資格:用戶在當(dāng)前的以太坊 PoW 主鏈上發(fā)送 32ETH 至一個(gè)注冊(cè)合約,合約會(huì)生成一個(gè)「驗(yàn)證者委員會(huì)成員名片」,讓用戶成為以太坊 2.0 的驗(yàn)證者。
BETH 的質(zhì)押回報(bào)率如下表所示,這是 Vitalik Buterin 今年 4 月發(fā)布在 Github 上的一份提案,并且已經(jīng)被添加到以太坊 2.0 的規(guī)范中:
如果總共質(zhì)押了 100 萬個(gè) BETH (2^20),系統(tǒng)每年最多可增發(fā)約 18 萬個(gè) BETH,質(zhì)押最大年回報(bào)率為 18.1%;如果質(zhì)押 1000 萬個(gè) BETH,每年最多可增發(fā)約 57 萬個(gè) BETH,最大年回報(bào)率為 5.72%;質(zhì)押上限為 1.34 億個(gè) BETH (2^27),此時(shí)每年最多可增發(fā)約 209 萬個(gè) BETH,通脹率維持在 2% 以下,回報(bào)率為 1.56%。
以太坊基金會(huì)研究員 Justin Drake 認(rèn)為 3000 萬個(gè) BETH (2^25)的質(zhì)押是最有利于系統(tǒng)健康的,此時(shí)通脹率維持在 1%,回報(bào)率為 3.3%,假設(shè)每個(gè)分片每年平均消耗 1000 BETH 的 Gas,通脹率將降至 0.5%,質(zhì)押者的回報(bào)率將達(dá)到約 5%(鏈聞注:Drake 預(yù)估的是以太坊正式運(yùn)行在 2.0 上時(shí)的最優(yōu)質(zhì)押率)。
這里有兩個(gè)指標(biāo)可以用來做比較:一是如今以太坊上通過金融產(chǎn)品存入以太的回報(bào)率,二是 Tezos 與 Cosmos 等 Staking 項(xiàng)目的回報(bào)率。
驗(yàn)證者需要投入的另一個(gè)成本是運(yùn)營成本,但它似乎在可接受的范圍內(nèi)。
Ethhub 創(chuàng)始人 Eric Conner 在深挖以太坊 2.0 相關(guān)規(guī)范并同相關(guān)研究人員對(duì)話后,對(duì)驗(yàn)證者年度運(yùn)營成本的估計(jì)是:每個(gè) Beacon 節(jié)點(diǎn)需要 120 美元,每增加一個(gè)驗(yàn)證器,即每多質(zhì)押 32 BETH 時(shí)需增加 60 美元。
所以,從回報(bào)率的角度來看,用戶在階段 2 之前把 ETH 轉(zhuǎn)為 BETH 的動(dòng)力可能主要取決于三個(gè)因素:參與 Staking 的 BETH 數(shù)量、ETH 與 BETH 之間的轉(zhuǎn)換方式、32ETH 的門檻。(鏈聞注:本文未涉及幣價(jià)波動(dòng)這一影響因素)
不過無論 32ETH 的「船票」貴不貴,有兩類用戶可能都會(huì)在第一時(shí)間參與進(jìn)以太坊 2.0,他們?yōu)橐蕴?2.0 的運(yùn)行提供支撐,即使 2.0 還沒有正式運(yùn)行以太坊:
一類用戶是區(qū)塊鏈生態(tài)的參與者,尤其是以太坊生態(tài)的參與者,投入 32ETH 是有價(jià)值的;一類用戶是以太坊一直以來的支持者,他們手中 32ETH 的「成本價(jià)」可能并沒有那么高,同時(shí)作為在未來也會(huì)長期持幣的用戶,用 BETH 參與 Staking 可以讓他們獲得更多的 BETH。
如何保證 PoS 鏈的安全性?
Beacon 鏈?zhǔn)?PoS 共識(shí),如果用戶缺乏動(dòng)力把 ETH 轉(zhuǎn)為 BETH 參與 Staking,會(huì)不會(huì)影響以太坊 2.0 的安全性?
實(shí)際上,以太坊 2.0 通過機(jī)制設(shè)計(jì)保證了自身較高的安全門檻。
首先是懲罰機(jī)制。如果驗(yàn)證者有惡意行為,比如同時(shí)給兩個(gè)區(qū)塊投票,其質(zhì)押的代幣就會(huì)被罰沒。
如果以太坊 2.0 共識(shí)失敗,將意味著有 1/3 的活躍驗(yàn)證者違反了消減條件,也就是說,一次成功的攻擊伴隨著的是質(zhì)押代幣總量中的 1/3 被銷毀,這是攻擊者要付出的成本 —— 不同于 PoW,在 PoS 下「作案」是要把「作案工具」一并沒收的。
另一個(gè),是Beacon 鏈的「驗(yàn)證者集-委員會(huì)-證明者」的區(qū)塊驗(yàn)證方式:活躍的驗(yàn)證者構(gòu)成驗(yàn)證者集,該集的一個(gè)隨機(jī)抽樣子集形成委員會(huì),委員會(huì)中的證明者對(duì)區(qū)塊簽名驗(yàn)證。
即使驗(yàn)證者集中有超過 1/3 的驗(yàn)證者是不誠實(shí)的,委員會(huì)被不誠實(shí)驗(yàn)證者掌控(即不誠實(shí)驗(yàn)證者超過 2/3)的概率也很低,并且隨著委員會(huì)驗(yàn)證者數(shù)量的增加,委員會(huì)被掌控的概率迅速降低。
假設(shè)我們有 1000 位驗(yàn)證者,其中 333 位是不誠實(shí)的,當(dāng)一個(gè)委員會(huì)由 1 名成員組成時(shí),該委員會(huì)被不誠實(shí)驗(yàn)證者掌控的概率是 33.3 % ;當(dāng)委員會(huì)由 13 名成員組成時(shí),被掌控的概率則只有 10 %。
以太坊 2.0 在初始階段的委員會(huì)驗(yàn)證者數(shù)量下限是 128 位,即使不誠實(shí)者控制了驗(yàn)證者集中的 1/3,攻擊成功的概率也不到萬億分之一。
以太坊 2.0 如何實(shí)現(xiàn)隨機(jī)性?
在有效的機(jī)制設(shè)計(jì)下,影響以太坊 2.0 安全運(yùn)行的最重要的一個(gè)因素就是隨機(jī)性,Beacon 鏈諸多協(xié)議的執(zhí)行都是基于「隨機(jī)數(shù)」來完成的。因此,我們簡單介紹一下以太坊 2.0 中隨機(jī)性的來源。
以太坊 2.0 是通過 RANDAO + VDF (Verifiable Delay Function,可驗(yàn)證延遲函數(shù))來解決隨機(jī)性問題的。
RANDAO是一種生成隨機(jī)數(shù)的方式,它會(huì)內(nèi)建在 Beacon 鏈的邏輯中,參與者(此處就是驗(yàn)證者)各自獨(dú)立提供一個(gè)隨機(jī)數(shù),RANDAO 將這些隨機(jī)數(shù)相加得到一個(gè)新的數(shù)字,并把該數(shù)字作為隨機(jī)數(shù)輸出。
但 RANDAO 有一個(gè)缺點(diǎn):最后一個(gè)公開隨機(jī)數(shù)的人是可以預(yù)測 / 操縱隨機(jī)數(shù)結(jié)果的。因?yàn)樗狼懊嫒康闹?,所以能夠通過自己出隨機(jī)數(shù)還是不出來影響最終的輸出。因此,我們需要在 RANDAO 之上加入 VDF。
VDF簡化來講是指在輸入一個(gè)值后,需要運(yùn)算很長的一段時(shí)間才能得出結(jié)果,但這個(gè)結(jié)果是可以輕易被驗(yàn)證的。VDF 把 RANDAO 產(chǎn)生出來的隨機(jī)數(shù)作為種子去生成新的隨機(jī)數(shù),而系統(tǒng)使用的是 VDF 提供的新隨機(jī)數(shù)。
因?yàn)?VDF 隨機(jī)數(shù)的計(jì)算時(shí)間足夠長(以太坊 2.0 中, VDF 為 102 分鐘),最后一個(gè)公開隨機(jī)數(shù)的人是無法在自己提供隨機(jī)數(shù)的時(shí)間內(nèi)計(jì)算出結(jié)果的,也就無法通過自己的行為來影響最終的隨機(jī)數(shù)(以太坊 2.0 中,RANDAO 每 6.4 分鐘就完成一個(gè)隨機(jī)數(shù)的輸出,這個(gè)時(shí)間 / 過程也被稱為一個(gè) epoch)。
RANDAO 的周期是 6.4 分鐘,VDF 的周期是 102.4 分鐘,因此以太坊 2.0 中會(huì)有 16 個(gè) VDF 同時(shí)運(yùn)行,為系統(tǒng)每隔 6.4 分鐘生成一個(gè)隨機(jī)數(shù),Beacon 鏈將以此為基礎(chǔ)完成自己的工作。
需要注意的是,區(qū)塊鏈上的隨機(jī)數(shù)問題是個(gè)難題,RANDAO + VDF 同樣也需要被進(jìn)一步驗(yàn)證。
做個(gè)勇敢的探索者
以太坊 2.0 客戶端 Nimbus 的測試網(wǎng)已經(jīng)上線,它被稱作 testnet0,運(yùn)行了一條能夠在節(jié)點(diǎn)間同步信息的 Beacon 鏈,并且節(jié)點(diǎn)可以分布在遠(yuǎn)程的設(shè)備上。
此版本設(shè)置了 400 個(gè)驗(yàn)證者節(jié)點(diǎn)來維護(hù)網(wǎng)絡(luò)的運(yùn)行,其中有 50 個(gè)驗(yàn)證節(jié)點(diǎn)是留給「勇敢的探索者」的,任何人都可以加入。這里我們提供一條小貼士:如果遇到問題,可以在 Status 的 #status-nimbus 頻道進(jìn)行詢問。
使用 Go 開發(fā)的以太坊 2.0 客戶端 Prysm 以及使用 Rust 開發(fā)的 Lighthouse 都即將發(fā)布測試網(wǎng)。如果一切順利,Beacon 鏈,即階段 0 的以太坊 2.0,會(huì)在今年年底上線,就如路線圖中規(guī)劃的一樣。
幾乎所有人都尊重和喜愛以太坊,但人們也會(huì)談到它的「歷史包袱」。如果說以太坊是一艘船,它似乎是一艘笨重的船,難以協(xié)調(diào)、行動(dòng)遲緩。
但笨重的船也有它自己的優(yōu)勢,它有更完備、更安全的基礎(chǔ)設(shè)施、它有更堅(jiān)持、更徹底的分布式路線,如果把目光放長遠(yuǎn),這種船或許才是能承載更多生態(tài)、承擔(dān)更長旅程,最后到達(dá)未知大陸的船。(撰文:李畫)