視覺化以太坊的未來之路

買賣虛擬貨幣

撰文:Barnabé Monnot,以太坊基金會研究員

頭圖來源:

u/willmington_w

編輯:南風

以下內容改編自作者於4月9日(週五)的演講內容。非常感謝 Danny Ryan 和 Sacha Saint-Leger 的建議。

本文是關於通往未來以太坊的道路。今天的以太坊就是 eth2 開發者所稱的“eth2”,也即當前我們熟知和喜愛的 PoW 鏈;明天的以太坊既不是 eth2,也不是 eth2,而就是...以太坊:綜合了在今天的執行層 (eth2) 之上部署 PoS 和分片的一系列 eth2 工作。

我們先來回顧一下今天的以太坊 (eth2):

今天的eth2 鏈的運作方式

在今天的以太坊上,當使用者想要做一些事情 (即“事務”),他們會把事務 (transactions) 傳送給礦工,然後礦工把事務打包進區塊,並將這些區塊新增到一條不斷增長的區塊鏈 (eth2) 中。礦工執行 PoW 共識機制,以此來決定由誰來新增下一個區塊,礦工也執行區塊中包含的事務,以確保這些事務是有效的。

PoS 替代 PoW:驗證者替代礦工,小型伺服器替代大量挖礦裝置

PoW 需要大量的硬體裝置來執行密集運算,進而造成了過高的能耗。在此,我們不會像大多數加密貨幣批評者那樣討論能源浪費問題 (比如“為什麼我們要使用一個消耗<某個國家的>能源的支付系統?”),但如果我們可以消耗絕對更少的 kWh (千瓦時) 來做一些事情,那麼這 (PoW) 就確實是存在能源浪費,我們應該減少能耗。

因此,這將我們帶入 PoS,使用小型的伺服器來取代大量挖礦裝置,並使用驗證者 (validator) 取代礦工。

在 PoS 中,如果驗證者不執行驗證工作 (圖中第2步),則將會適當地損失質押金

那麼,上圖中的第2步 (即驗證) 是什麼呢?驗證者到底要驗證什麼?

我們可以將以太坊的活動分為兩部分:共識層→“哪個是正確的資料?”;執行層→“資料的含義是什麼?”

共識層 (consensus layer) 確保所有人都對正確的資料達成共識。執行層 (execution layer) 實際上是“解釋”這些資料,使資料有意義。“資料”是指與區塊鏈進行的任何互動,比如部署一個智慧合約,在交易所進行交易,傳送一筆付款等等...

區塊鏈的核心是在鏈中引入新的區塊。當新區塊被新增進來時,新區塊進來之前的狀態和進來之後的狀態之間,會發生一次狀態轉換 (state transition)。區塊鏈的當下狀態彙總了之前所有區塊的資料。

例如,如果當前狀態維持著一個記錄了 Alice 和 Bob 的賬戶餘額的賬本,而新區塊中包含了一筆 Bob 向 Alice 支付了 10 枚幣的交易,那麼這個新區塊被新增進區塊鏈中之後,狀態將會記錄新的餘額資訊。一個新區塊新增進來之後,要麼會更改當前的狀態 (比如,更新 Alice 和 Bob 的餘額),要麼會建立一個新的狀態 (比如部署一個智慧合約,或者將 Carol 新新增進賬本中...)。

根據以太坊計劃,第1步是將共識與執行解耦;第2步是把PoW共識換成PoS共識

根據我們的計劃,Rollups 和 eth2 工作的總體要點就是處理上圖中的第1步,也即將共識與執行解耦 (decorrelate consensus and execution)。那麼,這方面進展如何了呢?

第1步已經完成了!

自 2020 年 12 月以來,我們已經有了兩條並行執行的區塊鏈 (見上圖):

上方的是 PoS 共識鏈 (即信標鏈)

下方的是可靠的 PoW 共識+執行鏈 (即 eth2 鏈)

這兩條鏈並行執行,但它們會相互“交流”,當然目前是單向的...

如何成為一名驗證者?

要成為 PoS 共識鏈 (即信標鏈) 的驗證者,使用者需要在部署於 PoW 共識+執行鏈 (即eth2) 上的存款合約中鎖定 32 ETH,該質押金會自動轉移到 PoS 共識鏈中。一旦驗證者被啟用,就可以開始 (對 PoS 共識鏈) 進行驗證並獲取獎勵。

合併之後,信標鏈 (紫色) 是共識鏈,切換為 PoS 共識的 eth2 鏈 (紅色) 將作為執行鏈。什麼時候實現合併?可能在2021年實現...

預計這種單向的“交流”將不會持續很長時間。合併這兩條鏈將永久地連線 PoS 共識鏈 (信標鏈) 和 PoW 共識+執行鏈 (eth2) 之間的鴻溝,從而允許驗證者為執行層 (即合併之後切換為 PoS 共識的 eth2 鏈) 生成區塊。因此,合併之後,我們將有兩條鏈:

同一條 PoS 共識鏈 (即信標鏈)

基於 PoS 的執行鏈 (即切換為PoS 共識的 eth2 鏈)

合併之後,PoS 共識鏈 (信標鏈) 的驗證者們將終於能夠贖回和提取他們的收益和存款,並將收益和存款發回至 PoS 執行鏈 (eth2) 中。

所有這些使我們從 PoW 環境轉移到了一個完全合格的 PoS 環境中!但需要注意的是,此時並沒有增加這條鏈的頻寬——這是分片 (sharding) 要實現的目標。在這之前,在我們尚且只有一條執行鏈 (即 eth2 鏈) 之際,我們來討論一下如何透過其它方式來對執行進行擴充套件。

擴充套件計劃:1. 將執行轉移至鏈下;2. 將資料提交至鏈上。

Rollups 是眾多可用的擴充套件解決方案之一,但從協議設計的角度來看,它可能提供了最優折衷的方案。Rollups 的理念很簡單:透過在鏈上提交重建狀態轉換執行所需的資料,來綜合地處理狀態轉換,並將執行轉移至鏈下進行。如果有人對執行結果有異議,或者有人忘記了在第一時間執行,那麼資料就在那裡等著所有人處理。Rollups 是無需許可的!

更準確地說,在 Rollups 中,執行所需的資料 (事務輸入) 與它的載體 (事務) 是分開的,且這些資料是以節省空間的方式“捆綁”起來。同時,Rollups 在執行鏈 (即eth2鏈) 之外執行,提交資料並加以執行。見下圖:

如今 eth2 鏈的擴充套件正在發生,Rollups 已經部署,其它擴充套件方案也在開發中。

想要“使用某條 Rollup 鏈”的使用者,需要在該 Rollup 位於執行鏈 (eth2) 上的合約中儲存一些資產,之後使用者就可以在該 Rollup 上做一些事情了,比如使用自己的資產與該 Rollup 鏈上的其它資產進行交易。一旦使用者完成了想要做的事情,就可以將資產從 Rollup 撤回至執行鏈中。就是這樣!

Rollups 有什麼其它替代性方案?如果我們沒有這些並行執行的 Rollps 鏈(上圖中的黃色鏈),而是擁有很多條並行執行的執行鏈(上圖中的紅色鏈),那會如何?比如,如果 eth2 鏈被“複製”,並與其它幾條複製鏈並行執行,那會怎樣?

其中的問題在於我們如何處理幾條平行執行的執行鏈。如果其中某條執行鏈想要知道另一條執行鏈中發生的事情,那該如何做到?這正是分片 (sharding)遇到的棘手問題 (注:也即所謂的跨分片通訊問題)。

你可能會說,“Rollups 差不多也有這樣的問題!”,實際上確實如此。當你在某條 Rollup 鏈上想要與另一條 Rollup 鏈進行互動時,同樣的棘手問題也會出現(即跨Rollup通訊問題)。但重點是,當前存在幾種 Rollup 設計,這一問題的解決方案空間很廣闊,且在很大程度上尚未被探索。因此,在將某種方案納入協議層之前,為何不透過 Rollups 先啟動試驗呢?

這將我們帶向了以 Rollup 為中心的以太坊路線圖[1]。

以 Rollup 為中心的 eth2:使用分片來儲存 Rollups 釋出的資料

你聽說過區塊空間的稀缺性吧?Rollups 需要釋出資料,而 eth2 的區塊空間是稀缺的!且如上所述,跨分片很難。因此,為什麼不使用分片來儲存 Rollups 需要釋出的資料呢?藉助於 64 條分片鏈,就能帶來比當前可用的多出 64 倍的頻寬,而且可能更多,因為一個分片區塊將可能儲存比當前的 eth2 區塊更多的資料量。

應該強調的是,這並不意味著在分片層的執行功能會永遠被排除在外。當前以 Rollup 為中心的以太坊路線圖是一種短期到中期的前進方式,直到 (例如) 找到更好的加密原語來保證正確地將執行劃分到多條鏈中 (注:即實現可執行分片)。這一切都非常迷人,應該會讓很多人忙上很長一段時間。在此期間,Rollups 是解決之道。

每條 Rollup 鏈都是其自身的“執行環境”:如何輕鬆地遷往/遷出 Rollup?我們可以進行跨Rollup操作嗎?Rollups 應該如何處理擁堵問題?

這方面還有很多工作要做!首先,我們不要忘記,合併和資料分片是非常複雜的工作,目前有多個團隊在致力於其中一項或兼顧這兩項工作。而即便是在 Rollup 方面,仍然有一些非常有趣的問題有待探討,以下僅是其中一些:

如何大規模地實現使用者向 Rollups 的遷移或者從 Rollups 遷回至鏈上[2],這是一個很酷的概念。如果你有足夠多的公共交通工具讓你往返於 Layer1 (eth2) 和 Layer2 (Rollps) 之間,為何你還要自己開車往返呢?其中的經濟機制是什麼呢?

如果你想在臨近的一條 Rollup 鏈做一些事情,因為該 Rollup 中有著一些你所在的 Rollup 中沒有的酷東西,那你該怎麼辦?你是否必須從當前的 Rollup 撤回至 Layer1 上,然後再從 Layer1 轉移至該臨近的 Rollup 中?這似乎相當的不經濟。

對於當前的鏈上操作來說,Rollups 是一個巨大的頻寬提升,這是毫無疑問的。但是,Rollups 並不是使用者所期望的無限高速公路。在 Rollups 中,仍然會有很多人想要做很多事情,且有時候是同時發生的!因此,Rollups 將與生俱來地要應對擁堵問題,但與 Layer1 協議保護的擁堵市場 (EIP-1559 很快就會實施) 不同,Rollups 有著更大的設計空間可供探索。

說到擁堵問題,這是更特定於協議的,但我們還將看到 EIP-1559 扮演交通警察的角色,來規範每個資料分片上釋出的資料量,以確保驗證者能夠處理這個資料量。如果你認為 EIP-1559 機制在一條鏈 (eth2) 上很酷,那麼等到有 64 條分片鏈同時執行該機制時會更酷。那麼,Rollups 應該在哪裡釋出它們的資料呢?是將資料僅釋出在單個分片上,使資料僅在該條分片上可獲取?還是釋出在多個分片上,從而受益於計劃中的分片交錯出塊?其中,分片交錯出塊 (shard staggering) 是 Vitalik 最近提出的想法,即所有分片輪流出塊,這樣 Layer2 專案 (如 Rollups) 在釋出資料時,距離一個新區塊的時間間隔不會超過幾百毫秒,這對於需要快速敲定的應用來說是理想選擇,詳見👉[3]。

原文連結:

https://barnabe.substack.com/p/eth2

正文中涉及的連結:

[1]:https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698

[2]:https://ethresear.ch/t/mass-migration-to-prevent-user-lockin-in-rollup/7701

[3]:https://ethresear.ch/t/simple-approach-to-incentivizing-shard-staggering/9149

免責聲明:

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

推荐阅读

;