乾貨 | 給工程師的 ETH 2.0 指南,Part-1
什麼是以太坊 2.0?
ETH2.0 是以太坊的計劃升級方案。在接下來的幾年裡,ETH2.0 的設計者們計劃完全革新以太坊的共識系統,並引入以太坊現有的世界狀態。由於涉及面極廣,我們也無法準確地說明 ETH2.0 將包括或者不包括哪些內容。ETH 2.0 的研究已經有一定的規模了,有不少團隊致力於早期實現。 目前,ETH2.0 設計者暫時計劃的工作有分片,Casper,狀態租金以及 eWASM 虛擬機器 。初代客戶端測試正在進行中,並且預計在 三個月內 (2019 第一季度)推出功能更精簡的 ETH2.0 測試網。首先,ETH2.0 將從以太坊主鏈獲取 ETH(但無需依賴其安全性),但是設計者計劃最終能夠轉變這種關係:將 ETH2.0 作為主鏈,ETH1.X 作為其管理的一條分片鏈。
那麼這對工程師來說意味著什麼呢?
如果你是一名計劃部署 ETH2.0 智慧合約的 Solidity 或者 Dapp 開發者,那麼你會遇上很多變化。ETH2.0 會完全替代 ETH1.0,我們在 ETH1.0 上編寫智慧合約時所作的假設,到了 ETH2.0 可能就不現實了。 我們為 ETH1.X 編寫的工具以及合約可能需要為 ETH2.0 完全重構 。值得慶幸的是,我們有幾年的準備時間來建設生態系統。
ETH2.0 計劃分多個階段推出,與其說是系統升級,更像是產品釋出。為了幫助推動這一計劃,我想討論一下當前的研究路線圖並介紹一些工程進展。
分階段推出
目前, 分片路線圖 (ETH2.0 路線圖的兩倍)已經列出了七個階段。只有 第 0 階段 有詳實規範,並且能收到 定期更新 。 第 1 階段的規範 相比之下就沒那麼清晰了,而且它似乎 還沒有進入積極的開發 階段。第 1 階段後的路線圖變成了目標列表而不再是技術文件。例如,在第 2 階段,路線圖連結到 ethresear.ch 的次數是其連結到 github 的三倍。因為任何更進一步的內容都更像是推測,而不像是工程,因此我們具體討論的內容只有第 0 階段,第 1 階段以及第 2 階段,不過我們還將簡單討論一些後期階段的可能方向。
第 0 階段-信標鏈
第 0 階段引入了“信標鏈”。ETH2.0 設計者希望信標鏈未來成為 ETH2.0 生態的中心,成為所有其他分片安全和驗證的根源。一旦部署好,信標鏈將使用 Casper FFG 演算法執行權益證明。 信標鏈的早期迭代被設計得儘可能簡單,因此第 0 階段不支援智慧合約,賬戶,資產轉移,同時也沒有包含任何分片。信標鏈上的 ETH 無法在鏈上轉移,這意味著使用者無法將其存放在交易所。
BETH:新以太
信標 ETH(BETH)是一種只能由 stakers(“驗證者”)在信標鏈上使用的新資產。其通過兩種方式產生:1)作為驗證信標鏈的獎勵(在第 1 階段之後,還有驗證分片獎勵),2)任何 ETH1.X 使用者可以通過 ETH1.X 合約 使用 1 ETH 購買 BETH 。該合約將這一行為稱為“存款”。工程師一眼就可以看出來:該合約沒有提款功能。這是因為第 0 階段無法從信標鏈中提取 BETH。 也就是說,一旦將 ETH 存入 ETH1.X 驗證者註冊合約,ETH1.X 以太就被徹底銷燬了 。信標鏈驗證者一直關注該合約,並提交相應存款資訊給信標鏈,從而為存款方生成新的 BETH 。因此我們預計在 ETH 被髮送給驗證者註冊合約後不久,新的 BETH 就會在信標鏈上生成。對存款的短期審查是有可能的,但是在 Casper 規則下,永久審查不太可能。
實現第 2 階段後我們才可以在信標鏈上作 ETH 轉賬,而且我不相信在 ETH1.X 完全融入分片生態系統前有方法將 BETH 撤回到 ETH1.X 鏈上。鑑於第 0 階段還不完全,而且還沒有可靠的第 1 階段相關規範。看起來可以合理地假設,BETH 將在至少兩年內作為獨立且不可轉移的資產存在。一旦第 2 階段完成,BETH 將可以從分片中轉入轉出;而 ETH 就沒有這種便利性了。
這種方式不太可能造成重大的經濟問題。過去,像 BETH 這樣預發行、功能少的代幣都是憑藉借據在交易所進行交易的。例如。在 Tezos 眾籌期間推出的 HitBit 以及 BitMEX XTZ 期貨市場。如果對 BETH 有相應需求,我們期待看到一個充滿活力且支援 BETH 交易和質押的交易所生態系統。然而,看起來不太可能有這樣的需求。因為BETH 是一個不良投資,從 ETH 到 BETH 的單向掛接給了 BETH 一個價格上限。這意味著 BETH 不可能比 ETH 更值錢,而只會比 ETH 更廉價。
第0階段+ —— Staking
使用者可以通過在信標鏈上質押 32 BETH 成為驗證者。在第 0 階段,驗證者將只能管理信標鏈。從第 1 階段開始,驗證者還將管理 1024 個分片鏈。信標鏈(以及各分片鏈)將使用 Casper FFG 來確定最終區塊。FFG 是一種權益證明演算法,可以罰沒惡意行為(如鏈中止和分叉)參與者的權益。精明的讀者們會注意到“以太坊3.0”分片路線圖中的Casper CBC 可以說是 FFG 的堂兄——雖然完整的討論 FFG (當然還有 CBC!)超出了這個帖子的範圍,但是我真心推薦大家閱讀一下 Vitalik關於 PoW/FFG 混合共識的說明 ,他關於 最少罰沒條件的帖子 以及 FFG 論文
Staker 是做什麼的?
分片的目的是在節點之間拆分狀態資訊,而不需要任何節點掌握網路全貌。因此沒有驗證者可以驗證所有分片。相反,信標鏈將協調分片的驗證工作。每個輪次(64 個區塊或者 6.4 分鐘),信標鏈將 對驗證者進行 混洗,並 將他們分配給一個分片 。分配到一個分片的一組驗證者被稱作委員會。委員會由 128 名成員 組成。在第 0 階段,這意味著每 6 分鐘信標鏈就會重新混洗、選取一次,選出下一個六分鐘裡承擔職責的委員會。在第 1 階段,信標鏈將為 1024 個分片分別指定一個驗證者委員會。這個方法看起來思路清晰但是實現十分複雜。它涉及 多階段隨機數生成 以及 可驗證的延遲函式 ,以進一步阻止操控委員會選擇的企圖。
由於委員會的工作十分重要,ETH2.0 隨機選擇委員會並且時常輪換委員會。委員會負責保證它們所在分片的安全性、活性以及完整性,並負責證明信標鏈上的分片狀態。它們是信標鏈可以獲取分片狀態的唯一方式,反之亦然。隨機地從驗證者池中選擇組成委員會的驗證者可以最大限度地減少整個委員會撒謊的可能性。時常輪換委員會可以減輕惡意委員會可以造成的傷害。換句話說,對惡意驗證者以及試圖使自己利益最大化的驗證者來說,很難將委員會選擇作為攻擊網路的工具。此外,如果他們偶然獲得了對分片委員會的控制,他們的控制無法超過 64 個區塊 。
給工程師的權益證明說明
儘管總結 ETH1.X 的工作量證明以及 ETH2.0 權益證明之間的差別仍在持續進行中,但需要提醒的是,一些 PoW/PoS 特性的差異確實直接影響到了工程師。例如,PoW 鏈支援 無狀態 SPV 驗證 以及 工作量證明的非互動證明 ——總的來說就是遠端狀態跟蹤,而 PoS 則禁止任何無狀態通訊(low-state communication)。因為弱主觀性(Subjectivity)使我們無法實現關於狀態的輕量級證明。換句話說, 權益證明中的遠端狀態證明將包含與 PoW 無狀態 SPV 證明大致相同的資料量,但是需要先驗證整個 PoS 歷史 。相反,無狀態 SPV 證明不需驗證其他資訊。這意味著在主觀的權益證明環境中,跨分片或者跨鏈應用減少了功能且增加了開銷。
第 1 階段 —— 分片
第 1 階段旨在對分片鏈的內容(而不是它的功用)建立共識。換句話說, 這是對分片結構的實驗性執行,而不是嘗試用分片進行擴充套件 。信標鏈將分片的區塊視為沒有結構或意義的簡單位元(bits)集合。分片鏈目前還沒有賬戶,資產或者智慧合約。信標鏈在每個時間段(epoch)為每個分片隨機選擇的分片驗證者,只負責對每個區塊的內容達成共識。至於分片的區塊中有什麼樣的資訊是無關緊要的,只要所有的委員會成員能在分片上定期地達成共識並更新信標鏈就可以。
分片的驗證者通過交聯(crosslinking)的過程去驗證分片的內容和狀態。簡單地說,委員會成員必須在信標鏈上寫入關於分片的可驗證資訊(比如:默克爾根)。在第 2 階段或者之後,交聯可以支援跨片通訊。一旦信標鏈已經從多個委員處收到了 給定交聯準確 性 的證據 ,那麼信標鏈就可以信任這個交聯是這個分片的真實表示,而不用去驗證整個分片。如果委員會成員不能對交聯的有效性達成共識,那麼,肯定有委員會成員是錯誤的,應該被罰沒(slashed)。 所有分片的安全性根基是:驗證者的不端行為最終會被信標鏈發現並給予處罰 。
第 1 階段沒有什麼特別有趣的東西。從根本上說,這是一個用於交聯和分片引用信標鏈的對稱機制的引導啟動階段。設計者似乎很自信這些機制能行得通。主要的開放性問題都是圍繞著規範和實現策略。考慮到第 0 階段花了大約一年多的時間才形成一個像樣的規範文件,我預計第 1 階段要用的時間也差不多。有趣的是,第 0 階段的實現是和規範同時進行的。從測試網路釋出至今不到三個月的時間,第 0 階段的規範還在經常變化。這意味著,將來 ETH2.0 的各個階段在開發時也會有很大的變數。雖然樂觀主義者告訴我 6 個月的時間就夠,但是很容易看出,第 0 階段進入測試之後,第 1 階段需要 12-18 個月的開發時間。
第 2 階段 —— 智慧合約
第 2 階段最終會帶來一個類似 Ethereum 的系統。伴隨著第 2 階段的發行,分片鏈從簡單的資料容器過渡到結構化的鏈狀態。從這一階段開始,系統會重新引入智慧合約,BETH 也會變成可以轉讓的資產。每個分片會管理一個基於 eWASM (我們將把它稱作 “EVM2”)的虛擬機器。我們希望 EVM2 可以支援賬戶,合約,狀態這些我們在 Solidity 中熟悉的抽象概念。但是大量的後臺更改可能會破壞大多數現存的工具。不過還好,eWASM 團隊已經為 solc,truffle 和 ganache 做了一些基礎工作。我們預期在第 2 階段的測試網(testnet)之前或者在這期間,大多數常見的工具會被移植去支援 EVM2。
狀態租金(state rent),很有可能包含在第 2 階段中,給現在的 Solidity 工程師提出了一些有趣的挑戰。狀態出租將要求合約開發者和使用者隨著時間的遷移為 EVM2 的儲存付費,而不是無期限儲存程式碼和資料。通過確保未使用的資訊隨著時間的推移移出狀態,可以防止狀態資料膨脹。這個設計的目標是讓使用者而不是全節點為狀態的花銷買單。現在已經 提出 了 很多 不同的 模型 ,但是還不確定採用哪種方案。
有趣的是,從一些 以太坊升級計劃 和著名的 以太坊核心開發者 的推薦來看,狀態租金可能是不同的路線圖中唯一重疊的部分。因此我強烈建議先計劃讓當前部署的合約支付狀態租金,並設計模型以便將來把狀態租金轉移到使用者身上。我們不知道狀態租金的具體設計,但是我們應該做計劃。
除了上面那些,我不知道還應該在階段 2 中去期待些什麼。目前還處於研究的早期階段,有一些很主要的問題沒被解決。考慮到不正式的規範和開發過程,以及第 2 階段在第 1 階段 之上的擴充套件範圍,認為第 2 階段在 2020 年之前發行似乎是不合理的。也就是說,雖然 ETH2.0 可能今年發行,但是不要期望 ETH2.0 能在 2020 年前支援資產流轉和智慧合約。
原文連結: https://hackernoon.com/what-to-expect-when-eths-expecting-80cb4951afcd
作者:James Prestwich
翻譯&校對:Aisling, 奇奇 & 阿劍
本文由作者授權 EthFans 翻譯及再出版。