大家好!今天我們要來探討 Ethereum 以太坊的 PoS(權益證明)演進史。以太坊為了提高區塊鏈的效能以及更加地環保,不斷推陳出新,讓整個區塊鏈世界產生了巨大的變革。隨著技術的不斷進步,以太坊也將開始向新的高度挑戰。讓我們一起來探討這個讓人感到振奮的演進過程!
因本文章有較深入的 PoS 介紹,建議已具備基礎 PoW 知識的讀者閱讀。
PoS 名詞解釋
在 PoS 中,有些名詞會和 PoW 稍微不同!
-
Block(區塊)的概念改為 Slot(插槽)與 Epoch(紀元),但 2 者均可共存不影響
- 平均來說,每 12 秒會出一個 Slot,而每 32 個 Slot(= 12 秒 x 32 Slot = 6.4 分鐘)稱為一個 Epoch
-
Difficulty(挖礦難度)改為 Slot PrevRandao(或稱 Block Randomness 隨機數)
-
Miner(礦工)改為 Validator(驗證者)與負責出塊的 Slot Proposer(提議者)
-
目前,若要成為 Validator,需使用 Validator 私鑰及 Withdrawal 私鑰來建置不停機的驗證節點,接著將帶有以下指定 Data + 32 ETH 的交易打到 Deposit 合約中:
-
pubkey(48 Bytes):Validator 公鑰,鏈上唯一識別用
-
withdrawal_credentials(32 Bytes):將 Withdrawal 公鑰作 SHA256 後,將最左側 2 位元由 0x00(BLS WITHDRAWAL 前綴)替換而得
-
signature(96 Bytes):由 Validator 私鑰向 (pubkey, withdrawal_credentials, deposit_amount) 資料進行簽名
-
deposit_data_root(32 Bytes):由上述 pubkey、withdrawal_credentials、signature 建立 Hash Tree,並取得其 Hash Tree Root 而得
-
-
Slot 與 Epoch、Validator 與 Proposer
成為 Slot Proposer 要做的事
在下一個 Epoch 到來前,每個 Slot 會透過 Randao 隨機數指定 1 位 Validator 成為此 Slot 的 Proposer,而他要完成 2 件事!
-
第 1 件事:建立區塊,並讓其他 Validator 進行驗證及投票
-
理想上,Slot Proposer 會在最新的區塊後面,直接建置下一個區塊,如同 PoW 時期以維持最長鏈原則
-
但實際上,可能會因 P2P 網路延遲、惡意節點嘗試攻擊等,導致 Slot Proposer 未必能在最新的區塊後面建置下一個區塊,造成區塊鏈分岔。這時,需請其他的 Validator 進行區塊投票,得票高者即可成為下一個區塊
-
若惡意節點故意在同一個 Slot 時段內建立 2 個區塊,則會被施以嚴重的大幅削減(Slash)處罰(從質押的 ETH 中一次性罰款)並退出網路
-
-
第 2 件事:提出一個隨機數種子 S,並公開 Hash(S) 結果
- 因為少了過去 PoW 的算力競爭,但直接指定 Proposer 有違去中心化,所以需要一個由眾多 Slot Proposer 一同決定的 Randao 隨機數,用來選定下一個 Epoch 的 Slot Proposer 們
第 1 件與第 2 件事不斷重複,使得區塊鏈不斷地產生新區塊
Slot 的 Validator 數量推算
在說明每個區塊及 Epoch 需要多少票數前,先進行目前 Slot 的 Validator 數量推算!
-
回顧一下:每 12 秒為一個 Slot,而每 32 個 Slot 為 1 個 Epoch
-
由 Beaconscan 網站可得知,目前撰文時全球總共約有 512,000 名以太坊 Validator
-
所以,每 1 個 Epoch 約會有 512,000 名 Validator 進行投票
-
平均下來,每 1 個 Slot 約會有 512,000 / 32 = 16,000 名 Validator 進行投票
-
每個 Validator 要做的事
扣除負責出塊的 Slot Proposer,剩下 N - 1(N 是 16,000)的 Validator 需在每個 Slot 中完成 Attestation 工作,即向支持的區塊及 Epoch 來進行投票!
-
投票 1:向支持的 Epoch(對應的 Checkpoint Slot)投票(或稱之為 Casper FFG 共識)
-
支持的 Epoch 包含需同時選定 Target Epoch 及 Source Epoch(可參考下圖)
-
Target 為 Validator 認同當下所在的 Epoch
-
Source 為 Validator 認同最近的 Epoch(通常為上一個 Epoch)
-
-
若某個 Target Epoch 結束,並得到超過 2 / 3 Validator(即 512,000 x 2 / 3 = 341,333)的票數,則此 Epoch 標示為 Justified
- 故最快要等上 1 Epoch = 6.4 分鐘的時間
-
承上,若此 Target 緊連的 Source Epoch 也得到 2 / 3 票數(通常 2 者為連續的 Epoch),則此 Source Epoch 標示為 Finalized
-
所以,最快要等上 2 Epoch = 12.8 分鐘的時間
-
Epoch Finalized 之前的區塊規定不可再被更改
-
-
Justified 與 Finalized 的 Epoch 判斷方式
-
投票 2:向支持的區塊投票(或稱之為 LMD-GHOST Fork Choice Rule 共識)
-
可對過去 1 Epoch 內的 Slot 區塊進行投票
-
如果 Validator 有以下行為會無法拿到獎勵
-
投給舊的、錯誤的區塊(可能投票期間未同步至最新區塊所致)
-
投票經常延遲或設備離線
- 但如果網路出現 4 個 Epoch 都沒被 Finalized 的情況(進入 Inactivity Leak 期),則會有罰款
-
-
如果 Validator 有以下行為會進行嚴重(Slash)處罰
-
同個私鑰同時存在兩臺不同機器上導致同一 Epoch 時間內有 2 次對區塊的投票行為
-
將機器遷移時,沒有將資料庫也遷移,導致遷移的機器向同一區塊重覆投票的行為
-
-
最後,如果被 Slash 處罰一次或因罰款導致餘額低於 16 ETH,則會被強制踢出網路
- 從 beaconcha 統計數據可得知,自信標鏈上線以來被 Slash 總共有 229 名 Validator,大多為非惡意的機器設置錯誤導致,約佔整體 Validator 的 0.045%
-
本節重點整理
-
PoS 是由鏈上所質押的 ETH 作擔保,來維持分散式共識(若伺服器停機、提交延遲、或提交錯誤共識內容則會有罰款),好處是:環保,且質押的 ETH 平均有 4% 年化報酬
-
但此時要自建 24 小時不停機節點 + 質押至少 32 ETH,門檻過高
-
對於僅有少量 ETH 卻又想參與 PoS 網路的散戶該怎辦?
-
所以,像是 Lido 等服務商,就有提供收取質押獎勵的 10% 作為手續費,讓散戶進行小額質押
- 而且,更特別的是 Lido 還提供質押 ETH 兌換 stETH 代幣,讓散戶可在二級市場進行 stETH 交易
-
-
從 Dune 統計數據可得知,目前所有質押的 ETH 約佔總供應量約 14.66%
(2)2022 年 9 月 PoS 信標鏈與 PoW 以太坊完成合併
眾所期待的 PoS 以太坊終於在 2022 年 9 月 15 日完成合併(The Merge)!此時,只能使用 Validator 進行質押挖礦,而使用顯卡挖礦的礦工時代也真正地成為了過去!
雖然,一般使用者仍可按照過去 PoW 使用方式進行 ETH 轉帳或合約交易;但實際上經過 The Merge 升級後,以太坊節點已拆分成 Execution Layer(EL)執行層及 Consensus Layer(CL)共識層了
以太坊節點區分 CL 及 EL 層
在 The Merge 後採用了 PoS 共識,雖然 PoW 機制被移除,但是 PoW 的 Excution Layer 卻合併到 Beacon Chain 中
-
Execution Layer(EL)執行層仍與 PoW 時一樣進行:
-
執行 EVM 虛擬機
-
但是,當區塊分岔時,取代 PoW 機制,會由 CL 層告知哪一個區塊是 Head Block
-
-
Consensus Layer(CL)共識層就負責:
-
進行 Proof of Stake 共識
-
當區塊分岔時,採 LMD-GHOST Fork Choice Rule 共識來決定
-
The Merge 升級前,Execution Layer 的內容
完成 The Merge 升級後,Execution Layer 的內容與過去 PoW 時期相同
然而, 對於執行以太坊節點的營運者,可以決定將 CL 節點(如:Lighthouse)、EL 節點(如:Geth)拆分建立,並使用元件所提供的 Engine API 來進行溝通。甚至可執行其中一個元件,另一個元件則與其他節點共用
本節重點整理
-
The Merge 合併之後,將以 PoS 的取代 PoW 以太坊,無法使用顯示卡挖礦
-
但此時 Validator 們仍無法贖回已質押的以太幣,所以才會有下一個重大的升級:上海硬分岔
(3)2023 年第 2 季以太坊信標鏈進行上海硬分岔升級
以太坊 PoS 信標鏈於 The Merge 後另一項重大的升級:上海硬分岔,終於讓為數眾多的的 Validator 開放讓為數眾多質押 ETH 的贖回申請,但考量到系統的穩定性(如:避免 Validator 數量驟減,影響共識安全及穩定等),每個 Epoch 可退出的 Validator 或 ETH 數量是有限制的!
質押退出機制
關於欲將已質押的 ETH 贖回,除了您需等待 2023 年第 2 季上海硬分岔升級完成外,Validator 還需將 EL/CL 節點升級、在 CL 節點上修改收益地址等前置作業,即可進行 ETH 贖回請求啦!分為 2 種形式:
關於前置作業細節可參考 imToken 先前發佈的「上海升級,和你有關嗎?」文章!
-
部份贖回(Partial Withdrawals):將超過 32 ETH 的其他 ETH(不論是質押 or 獎勵)給贖回
- 因目前一個 12 秒的 Slot 最多只能有 16 次的部份贖回額度,以全網有 512,000 Validator 來計算,平均每個 Validiator 要等 4.44 天才能收到 ETH
-
全部贖回(Full Withdrawals)並退出 Validator 角色
-
因目前一個 6.4 分鐘的 Epoch 只能退出 6 名 Validator,所以會依照申請的順序來進行全部贖回
- 註:實際上,為避免一次大量 Validator 退出網路而導致安全性問題,所以每個 Epoch 可退出 Validator 數量會依照全網 Validator 總數來進行限制(可參考下方表格)
-
而以上無論是部份贖回,還是全部贖回,因為都在 CL 節點上廣播請求,所以也均無需 Gas 費用
每個 Epoch 可退出 Validator 數量會依照全網 Validator 總數來進行限制
上線前需充份測試
另外,此次升級還需在各個測試網上進行充份測試,才會正式上線!
-
2023/02/07 可提款的 Zhejiang 測試網上線
-
2023/02/28 進行 Sepolia 測試網的上海硬分岔升級
-
2023/03 進行 Goerli 測試網的上海硬分岔升級
還有其他的提案
而且,這次升級除了 EIP-4895(允許驗證者提取質押的代幣)是主要提案外,還會一同實現以下 EIP 提案:
-
EIP-3651 預熱 COINBASE:啟動「COINBASE」地址的預熱功能,降低交易手續費消耗
-
EIP-3855 增加 PUSH0 指令:將常用的「常數 0 推送」操作變成一個指令,將可減少合約程式碼大小
-
EIP-3860 限制和計價 initcode:增加合約部署規範,避免部署程式碼過大佔用空間
-
EIP-6049 新增 SELFDESTRUCT 停用警告:更新 SELFDESTRUCT 指令的文件說明,警告使用者該指令未來將被停用
未來,本專刊將會為重要的 EIP 提案來撰寫文章進行說明
本節重點整理
-
開放質押的 ETH 贖回,但基於安全理由,每個 Epoc(約 6.4 分鐘)只能退出 6 個驗證者(因此每天約有 1,350 個驗證者 or 43,200 ETH 可退出。
-
若您剛好是以太坊信標鏈的 Validator,強烈建議在上海升級前閱讀「上海升級,和你有關嗎?」文章,來了解這次上海升級時您一定要做的幾件事情!
(4)結論
綜觀整個 PoS 演進史,以太坊始終保持著為用戶提供最優秀的使用體驗和開發環境的初衷。PoW 到 PoS,不斷的改變也帶給了我們更加高效和環保的區塊鏈世界。上海硬分岔升級將為以太坊帶來更多的可能性;在未來,隨著這一系列 EIP 提案的引入,Ethereum 將越來越容易地融入日常生活中,並且讓人們都可享受到區塊鏈帶來的安全性與方便性。讓我們一起期待以太坊的更美好未來!
5)參考資料
-
中文
-
以太坊 Safe Head 機制介紹(一)
-
Eth 2.0 的共識層和執行層分工及 The Merge 影響
-
-
英文
-
Blocknative - A Staker's Guide to Ethereum Slashing & Other Penalties
-
ETH Withdrawals FAQ
-
How does the NEW Ethereum work?
-
Proof of Stake Rewards and Penalties
-