原文標題:《可視化以太坊的未來之路》
今天的以太坊就是 eth2 開發者所稱的「eth1」,也即當前我們熟知和喜愛的 PoW 鏈;明天的以太坊既不是 eth1,也不是 eth2,而就是…以太坊:綜合了在今天的執行層 (eth1) 之上部署 PoS 和分片的一系列 eth2 工作。
我們先來回顧一下今天的以太坊 (eth1):
在今天的以太坊上,當用戶想要做一些事情 (即「事務」),他們會把事務 (transactions) 發送給礦工,然後礦工把事務打包進區塊,並將這些區塊添加到一條不斷增長的區塊鏈 (eth1) 中。礦工運行 PoW 共識機制,以此來決定由誰來添加下一個區塊,礦工也執行區塊中包含的事務,以確保這些事務是有效的。
PoW 需要大量的硬體設備來運行密集運算,進而造成了過高的能耗。在此,我們不會像大多數加密貨幣批評者那樣討論能源浪費問題 (比如「為什麼我們要使用一個消耗<某個國家的>能源的支付系統?」),但如果我們可以消耗絕對更少的 kWh (千瓦時) 來做一些事情,那麼這 (PoW) 就確實是存在能源浪費,我們應該減少能耗。
因此,這將我們帶入 PoS,使用小型的伺服器來取代大量挖礦設備,並使用驗證者 (validator) 取代礦工。
那麼,上圖中的第2步 (即驗證) 是什麼呢?驗證者到底要驗證什麼?
共識層 (consensus layer) 確保所有人都對正確的數據達成共識。執行層 (execution layer) 實際上是「解釋」這些數據,使數據有意義。「數據」是指與區塊鏈進行的任何交互,比如部署一個智能合約,在交易所進行交易,發送一筆付款等等…
區塊鏈的核心是在鏈中引入新的區塊。當新區塊被添加進來時,新區塊進來之前的狀態和進來之後的狀態之間,會發生一次狀態轉換 (state transition)。區塊鏈的當下狀態匯總了之前所有區塊的數據。
例如,如果當前狀態維持著一個記錄了 Alice 和 Bob 的賬戶餘額的賬本,而新區塊中包含了一筆 Bob 向 Alice 支付了 10 枚幣的交易,那麼這個新區塊被添加進區塊鏈中之後,狀態將會記錄新的餘額信息。一個新區塊添加進來之後,要麼會更改當前的狀態 (比如,更新 Alice 和 Bob 的餘額),要麼會創建一個新的狀態 (比如部署一個智能合約,或者將 Carol 新添加進賬本中…)。
根據我們的計劃,Rollups 和 eth2 工作的總體要點就是處理上圖中的第1步,也即將共識與執行解耦 (decorrelate consensus and execution)。那麼,這方面進展如何了呢?
自 2020 年 12 月以來,我們已經有了兩條並行運行的區塊鏈 (見上圖):
- 上方的是 PoS 共識鏈 (即信標鏈)
- 下方的是可靠的 PoW 共識+執行鏈 (即 eth1 鏈)
這兩條鏈並行運行,但它們會相互「交流」,當然目前是單向的…
要成為 PoS 共識鏈 (即信標鏈) 的驗證者,用戶需要在部署於 PoW 共識+執行鏈 (即eth1) 上的存款合約中鎖定 32 ETH,該質押金會自動轉移到 PoS 共識鏈中。一旦驗證者被激活,就可以開始 (對 PoS 共識鏈) 進行驗證並獲取獎勵。
預計這種單向的「交流」將不會持續很長時間。合併這兩條鏈將永久地連接 PoS 共識鏈 (信標鏈) 和 PoW 共識+執行鏈 (eth1) 之間的鴻溝,從而允許驗證者為執行層 (即合併之後切換為 PoS 共識的 eth1 鏈) 生成區塊。因此,合併之後,我們將有兩條鏈:
- 同一條 PoS 共識鏈 (即信標鏈)
- 基於 PoS 的執行鏈 (即切換為 PoS 共識的 eth1 鏈)
合併之後,PoS 共識鏈 (信標鏈) 的驗證者們將終於能夠贖回和提取他們的收益和存款,並將收益和存款發回至 PoS 執行鏈 (eth1) 中。
所有這些使我們從 PoW 環境轉移到了一個完全合格的 PoS 環境中!但需要注意的是,此時並沒有增加這條鏈的帶寬——這是分片 (sharding) 要實現的目標。在這之前,在我們尚且只有一條執行鏈 (即 eth1 鏈) 之際,我們來討論一下如何通過其它方式來對執行進行擴展。
Rollups 是眾多可用的擴展解決方案之一,但從協議設計的角度來看,它可能提供了最優折衷的方案。Rollups 的理念很簡單:通過在鏈上提交重建狀態轉換執行所需的數據,來綜合地處理狀態轉換,並將執行轉移至鏈下進行。如果有人對執行結果有異議,或者有人忘記了在第一時間執行,那麼數據就在那裡等著所有人處理。Rollups 是無需許可的!
更準確地說,在 Rollups 中,執行所需的數據 (事務輸入) 與它的載體 (事務) 是分開的,且這些數據是以節省空間的方式「捆綁」起來。同時,Rollups 在執行鏈 (即eth1鏈) 之外運行,提交數據並加以執行。見下圖:
想要「使用某條 Rollup 鏈」的用戶,需要在該 Rollup 位於執行鏈 (eth1) 上的合約中存儲一些資產,之後用戶就可以在該 Rollup 上做一些事情了,比如使用自己的資產與該 Rollup 鏈上的其它資產進行交易。一旦用戶完成了想要做的事情,就可以將資產從 Rollup 撤回至執行鏈中。就是這樣!
Rollups 有什麼其它替代性方案?如果我們沒有這些並行運行的 Rollps 鏈(上圖中的黃色鏈),而是擁有很多條並行運行的執行鏈(上圖中的紅色鏈),那會如何?比如,如果 eth1 鏈被「複製」,並與其它幾條複製鏈並行運行,那會怎樣?
其中的問題在於我們如何處理幾條平行運行的執行鏈。如果其中某條執行鏈想要知道另一條執行鏈中發生的事情,那該如何做到?這正是分片 (sharding) 遇到的棘手問題 (註:也即所謂的跨分片通信問題)。
你可能會說,「Rollups 差不多也有這樣的問題!」,實際上確實如此。當你在某條 Rollup 鏈上想要與另一條 Rollup 鏈進行交互時,同樣的棘手問題也會出現 (即跨Rollup通信問題)。但重點是,當前存在幾種 Rollup 設計,這一問題的解決方案空間很廣闊,且在很大程度上尚未被探索。因此,在將某種方案納入協議層之前,為何不通過 Rollups 先啟動試驗呢?
這將我們帶向了以 Rollup 為中心的以太坊路線圖。
你聽說過區塊空間的稀缺性吧?Rollups 需要發布數據,而 eth1 的區塊空間是稀缺的!且如上所述,跨分片很難。因此,為什麼不使用分片來保存 Rollups 需要發布的數據呢?藉助於 64 條分片鏈,就能帶來比當前可用的多出 64 倍的帶寬,而且可能更多,因為一個分片區塊將可能保存比當前的 eth1 區塊更多的數據量。
應該強調的是,這並不意味著在分片層的執行功能會永遠被排除在外。當前以 Rollup 為中心的以太坊路線圖是一種短期到中期的前進方式,直到 (例如) 找到更好的加密原語來保證正確地將執行劃分到多條鏈中 (註:即實現可執行分片)。這一切都非常迷人,應該會讓很多人忙上很長一段時間。在此期間,Rollups 是解決之道。
這方面還有很多工作要做!首先,我們不要忘記,合併和數據分片是非常複雜的工作,目前有多個團隊在致力於其中一項或兼顧這兩項工作。而即便是在 Rollup 方面,仍然有一些非常有趣的問題有待探討,以下僅是其中一些:
- 如何大規模地實現用戶向 Rollups 的遷移或者從 Rollups 遷回至鏈上,這是一個很酷的概念。如果你有足夠多的公共交通工具讓你往返於 Layer1 (eth1) 和Layer2 (Rollps) 之間,為何你還要自己開車往返呢?其中的經濟機制是什麼呢?
- 如果你想在臨近的一條 Rollup 鏈做一些事情,因為該 Rollup 中有著一些你所在的 Rollup 中沒有的酷東西,那你該怎麼辦?你是否必須從當前的 Rollup 撤回至 Layer1 上,然後再從 Layer1 轉移至該臨近的 Rollup 中?這似乎相當的不經濟。
- 對於當前的鏈上操作來說,Rollups 是一個巨大的帶寬提升,這是毫無疑問的。但是,Rollups 並不是用戶所期望的無限高速公路。在 Rollups 中,仍然會有很多人想要做很多事情,且有時候是同時發生的!因此,Rollups 將與生俱來地要應對擁堵問題,但與 Layer1 協議保護的擁堵市場 (EIP-1559 很快就會實施) 不同,Rollups 有著更大的設計空間可供探索。
- 說到擁堵問題,這是更特定於協議的,但我們還將看到 EIP-1559 扮演交通警察的角色,來規範每個數據分片上發布的數據量,以確保驗證者能夠處理這個數據量。如果你認為 EIP-1559 機制在一條鏈 (eth1) 上很酷,那麼等到有 64 條分片鏈同時運行該機制時會更酷。那麼,Rollups 應該在哪裡發布它們的數據呢?是將數據僅發布在單個分片上,使數據僅在該條分片上可獲取?還是發布在多個分片上,從而受益於計劃中的分片交錯出塊?其中,分片交錯出塊 (shard staggering) 是 Vitalik 最近提出的想法,即所有分片輪流出塊,這樣 Layer2 項目 (如 Rollups) 在發布數據時,距離一個新區塊的時間間隔不會超過幾百毫秒,這對於需要快速敲定的應用來說是理想選擇。
冷萃財經原創,作者:awing,轉載請註明出處:https://www.lccjd.top/2021/04/24/%e7%94%a8%e5%8f%af%e8%a7%86%e5%8c%96%e6%96%b9%e5%bc%8f%e5%b1%95%e7%8e%b0%e4%bb%a5%e5%a4%aa%e5%9d%8a%e7%8e%b0%e5%9c%a8%e5%92%8c%e6%9c%aa%e6%9d%a5%e4%b9%8b%e8%b7%af/?variant=zh-tw
文章評論