一文圖解以太坊發(fā)展路線
本文講的是通往以太坊的未來之路。Eth2 開發(fā)者團(tuán)隊(duì)將當(dāng)前的以太坊稱為 “eth1”,也就是現(xiàn)在我們所熟知的 PoW 鏈。而未來的以太坊既不是 eth1,也不是 eth2,而是...以太坊:
讓我們來梳理一下現(xiàn)在的以太坊:
用戶想要做一些事情 (“進(jìn)行交易”),因此將其交易發(fā)送給礦工,礦工把它們打包成塊并添加至一條不斷增長的鏈中。礦工運(yùn)行 PoW 共識(shí)機(jī)制 [1],以決定誰來添加下一個(gè)區(qū)塊, 并執(zhí)行區(qū)塊中的交易,以確保交易是有效的。
PoW 也不全是糟糕的,但我需要一個(gè)吸引人的題目
PoW 需要大量硬件運(yùn)行密集的計(jì)算,造成了過高的能量消耗。我們并不會(huì)像大多數(shù)加密貨幣批評(píng)者那樣談?wù)撡Y源浪費(fèi) (他們通常的說辭是“為什么我們要用一種消耗國家資源的支付系統(tǒng)”?),我們所倡導(dǎo)的是,既然我們能夠以相對(duì)較小的消耗去做同樣的事情,那我們就應(yīng)該這樣做。
所以我們選擇向 PoS 過渡,僅用一個(gè)小型服務(wù)器代替大量的挖礦設(shè)備,用驗(yàn)證者代替礦工。
那第二步是怎樣運(yùn)作的?驗(yàn)證者到底在驗(yàn)證什么?
圖:將以太坊的活動(dòng)分為兩部分 (共識(shí)層和執(zhí)行層)
共識(shí)層確保每個(gè)人就某個(gè)正確的數(shù)據(jù)達(dá)成一致。而執(zhí)行層實(shí)際上會(huì)解釋這些數(shù)據(jù),使其有意義。“數(shù)據(jù)”即與區(qū)塊鏈任何形式的交互,如,部署一個(gè)合約、在交易所進(jìn)行交易、發(fā)送支付交易等等...
區(qū)塊鏈的核心是在鏈中添加新的區(qū)塊。當(dāng)有新的區(qū)塊添加時(shí),該區(qū)塊之前的狀態(tài)會(huì)向區(qū)塊后的狀態(tài)遷移。這個(gè)狀態(tài)匯總了從區(qū)塊 0 到 N 的所有數(shù)據(jù)。
例如,如果該狀態(tài)保存著記錄 Alice 和 Bob 余額的賬本,而新區(qū)塊包含了 Bob 向 Alice 支付 10 代幣的記錄,那么這個(gè)新區(qū)塊被添加至區(qū)塊鏈之后,狀態(tài)將會(huì)記錄新的余額信息。“State after block N+1” (區(qū)塊 N+1 之后的狀態(tài)) 那個(gè)圖中右邊的虛線斑點(diǎn)就代表著添加了新區(qū)塊之后的變化,這時(shí)可能會(huì)修改現(xiàn)有狀態(tài) (例如,Alice 和 Bob 的余額),或創(chuàng)建新的狀態(tài) (部署一個(gè)新的合約,或?qū)? Carol 添加到賬本...)
第一步將共識(shí)層與執(zhí)行層解耦;第二步從 PoW 向 PoS 轉(zhuǎn)移
Rollups 和 eth2 主要為了解決上圖計(jì)劃中的第一點(diǎn):去除共識(shí)層與執(zhí)行層的相關(guān)性。那么這項(xiàng)工作的進(jìn)展如何?
自 2020 年 12 月以來,我們同時(shí)擁有著兩條鏈在進(jìn)行:
- 第一條,是 PoS-共識(shí)鏈 (又名,信標(biāo)鏈)
- 第二條,是我們可靠的 PoW-共識(shí)+執(zhí)行鏈 (又名,eth1)
他們同時(shí)運(yùn)行,但他們也可以相互通訊。但是,目前還沒有實(shí)現(xiàn)這種功能...
想要成為 PoS-共識(shí)的驗(yàn)證者,PoW-共識(shí)+執(zhí)行鏈上的用戶需要在存款合約中鎖定 32 ETH,這會(huì)自動(dòng)轉(zhuǎn)移到 PoS-共識(shí)鏈中。一旦驗(yàn)證者被激活,他們就可以開始驗(yàn)證工作和獲取獎(jiǎng)勵(lì)了。
這種無法通訊的情況希望不會(huì)持續(xù)太久。“合并”將 PoS-共識(shí)鏈和 PoW-共識(shí)+執(zhí)行鏈永久地橋接起來,也就是說驗(yàn)證者可以為執(zhí)行層生產(chǎn)區(qū)塊。合并后,我們擁有兩種鏈:
- PoS-共識(shí)鏈
- 一條基于 PoS 的執(zhí)行鏈 (即 “eth1” 鏈)
合并之后,PoS-共識(shí)鏈的驗(yàn)證者將能夠贖回以及提現(xiàn)他們的質(zhì)押存款和獎(jiǎng)勵(lì),并將其發(fā)送回到基于 PoS 的執(zhí)行鏈中。[2]
因此我們需要從 PoW 環(huán)境中轉(zhuǎn)向完全成熟的 PoS 環(huán)境。但是請注意,這一轉(zhuǎn)變并沒有怎么提高區(qū)塊鏈的帶寬 (一個(gè)區(qū)塊打包多少執(zhí)行交易),這是分片要解決的問題。在此之前,讓我們來討論一下,當(dāng)我們只有一條執(zhí)行鏈時(shí),有哪些方法可以提高執(zhí)行的可擴(kuò)展性。
(顏色總結(jié):共識(shí)=紫色,執(zhí)行=綠色,數(shù)據(jù)=黃色)
說到 rollups,這是眾多可用的擴(kuò)容解決方案之一,但從協(xié)議設(shè)計(jì)的角度來看,這種解決方案可能提供了最優(yōu)的折衷方案。這種方案的想法很簡單:通過將數(shù)據(jù)存儲(chǔ)在鏈上 (這些數(shù)據(jù)用于重建狀態(tài)轉(zhuǎn)移的執(zhí)行) 來綜合地處理狀態(tài)轉(zhuǎn)換,并且將狀態(tài)的執(zhí)行放到鏈下。如果有人不同意執(zhí)行的結(jié)果,或者有人一開始就忘記執(zhí)行,數(shù)據(jù)就在鏈上供所有人使用 (可以重新計(jì)算),這是完全無需許可的!
更準(zhǔn)確地說,執(zhí)行所需的數(shù)據(jù) (交易輸入) 與其載體 (交易) 分離,并以節(jié)省空間的方式 “捆綁”起來。同時(shí),rollups 在執(zhí)行鏈 (eth1) 之外運(yùn)行,提交并執(zhí)行數(shù)據(jù)。
用戶需要往執(zhí)行鏈 ("eth1") 上的 rollup 合約質(zhì)押一筆資產(chǎn),才能夠進(jìn)入到 rollup 里,用戶可以在里面進(jìn)行交易。完成之后,用戶可以將資產(chǎn)從 rollup 中轉(zhuǎn)回到執(zhí)行鏈中。
Rollups 的替代方案是什么?大家看一下上圖,讓我們來假設(shè)一下,如果我們用一串串平行的紅色來代替那些垂直的黃色鏈會(huì)怎樣?比如說,如果我們復(fù)制了幾條 eth1 鏈,然后它們之間并排運(yùn)行會(huì)怎么樣?
這里的問題是如何處理并行運(yùn)行的多個(gè)執(zhí)行鏈。如果某條鏈上發(fā)生了什么事情,而其他人需要知道怎么辦呢?這是分片面臨的一個(gè)非常棘手的問題,或者說對(duì)于在多個(gè)鏈中執(zhí)行的方案來說都需要克服的問題。
"Rollups 之間并沒什么不同",讀者可能這么認(rèn)為,本質(zhì)上來說這沒什么錯(cuò)。但是當(dāng)你想要從一個(gè) rollup 轉(zhuǎn)到另一個(gè) rollup 上進(jìn)行交易時(shí),同樣棘手的問題又出現(xiàn)了。然而,關(guān)鍵在于,現(xiàn)在已經(jīng)存在幾種 rollup 設(shè)計(jì)了,并且這些解決方案的可探索空間仍非常廣泛。既然如此,為什么不讓 rollups 先進(jìn)行試驗(yàn),然后再引入一種協(xié)議級(jí)別的方法呢?
這讓我們來到了...
讀者應(yīng)該聽說過區(qū)塊空間不足的事吧?Rollups 確實(shí)需要發(fā)布它們的數(shù)據(jù),但是 eth1 區(qū)塊空間十分稀缺!而且,就像我們所討論過的,跨分片是非常難的。那為了解決這個(gè)問題,我們可以用分片來保存 rollup 需要發(fā)布的數(shù)據(jù)。屆時(shí)很可能會(huì)有 64 個(gè)分片,即現(xiàn)在可用帶寬的 64 倍。而且一個(gè)分片區(qū)塊可能會(huì)比 eth1 鏈區(qū)塊當(dāng)前能夠容納更多的數(shù)據(jù)量。
我需要強(qiáng)調(diào)一下,這并不意味著我們將永遠(yuǎn)排除執(zhí)行分片這個(gè)方案。以 rollup 為中心的以太坊路線圖是我們中短期的發(fā)展目標(biāo),直到我們找到更好的加密基元,以保證能夠?qū)崿F(xiàn)跨多條鏈的執(zhí)行分片。這個(gè)方案很吸引人,需要團(tuán)隊(duì)很多人花費(fèi)很長的時(shí)間去研究。與此同時(shí),我們可以使用 rollups。
這方面還有很多工作要做!首先我們不要忘記,“合并”和“數(shù)據(jù)分片”都是非常復(fù)雜的工作,需要多個(gè)團(tuán)隊(duì)同時(shí)從事其中一項(xiàng)或兩項(xiàng)工作。但在 rollup 方面,也仍有一些有趣的問題有待探索,我僅列出了一部分:
- 實(shí)現(xiàn)用戶和 rollups 之間的大規(guī)模遷移是一個(gè)很酷的概念。如果用戶有足夠多的公共交通工具令其往返 Layer1 (eth1) 和 Layer2 (rollups),那么為什么還要自己開車往返呢?這非常不經(jīng)濟(jì)。
- 如果用戶覺得可以在另外一個(gè) rollup 上做一些更酷的東西 (ta 所在的 rollup 是沒有的),難道 ta 一定得先提現(xiàn)至 L1,然后再從 L1 中存款進(jìn)這個(gè) rollup 中嗎?這未免太浪費(fèi)了。
- 對(duì)于當(dāng)前的鏈上操作來說,rollups 極大地提高了網(wǎng)絡(luò)帶寬,這是毫無疑問的。但是 rollups 仍不是用戶所期望的無限高速公路那樣。仍有很多人想要在 rollups 上做很多事情,有時(shí)甚至是同時(shí)做的!因此 rollups 將不可避免地面臨擁堵問題,但與 L1 這個(gè)尤其擁堵的市場不同 (很快就會(huì)上線 1559 了),rollups 的可探索空間更加廣泛。
- 說到擁堵問題,雖然這更特定于協(xié)議層面,但是我們還將看到 EIP-1559 扮演交通警察的角色,來規(guī)定每個(gè)數(shù)據(jù)分片上發(fā)布多少數(shù)據(jù),確保驗(yàn)證者可以處理這個(gè)數(shù)據(jù)量。如果讀者覺得 eth1 上運(yùn)行 EIP-1559 很酷,那么請期待屆時(shí)會(huì)在 64 條分片鏈上同時(shí)運(yùn)行 1559。那么,rollups 應(yīng)該在哪里發(fā)布它們的數(shù)據(jù)呢?是僅發(fā)布在單個(gè)分片上,使數(shù)據(jù)僅在該分片上可獲取?還是說發(fā)布在多個(gè)分片上,這樣就可以受益于計(jì)劃推出的“錯(cuò)開分片區(qū)塊生產(chǎn)” (shard staggering) 方案?這個(gè)方案由 Vitalik 提出,即分片輪流出塊,這樣發(fā)布數(shù)據(jù)時(shí),距離新區(qū)塊的生成時(shí)間為幾百毫秒以內(nèi),這對(duì)于需要“快速敲定”的應(yīng)用來說是理想選擇。
特此感謝 Danny Ryan 和 Sacha Saint-Leger 的建議。
[1] 我聽說 PoW 不是一種共識(shí)算法,但我認(rèn)為如果使其定義超載了,將其描述為共識(shí)機(jī)制是沒有問題的。
[2] PhiGo 在推特寫道,合并后 (PoW 退出以太坊) 不一定就可以提取質(zhì)押存款。的確,目前合并計(jì)劃更專注于合并部分,而“提款”問題是一項(xiàng)獨(dú)立但相關(guān)的研究工作。