(示意圖/取自pixabay)
台灣時間9月15日下午2點42分左右,以太坊正式完成合併。以太坊在區塊高度15537393觸發合併機制,並產出首個PoS區塊,高度為15537394,以太坊共識正式從PoW轉為PoS機制。
以太坊進入後合併時代,你對以太坊2.0瞭解多少?本文用15個概念帶你深入瞭解它。
1、信標鏈(Beacon chain)
信標鏈向以太坊1.0引入了權益證明,與以太坊1.0並行運行,信標鏈也被稱為協調層。
信標鏈具有一下作用:
- 分配驗證者的職責
- 確認檢查點
- 執行協議級隨機數位生成器(RNG)
- 促進信標鏈運行
- 投票決定分叉鏈頭
2、Slots
32 Slot = 1 Epoch
1 slot的時間是12秒,隨機選擇的驗證者在此時間內提議一個區塊,每個slot中可能有也可能沒有區區塊。
全部驗證者被分成多個委員會,由一個或多個單獨的委員會負責驗證每個slot。
委員會中有一個驗證者將被選為聚合者(aggregator),而其他127個驗證者將進行驗證。
在每個Epoch之後,各委員會的驗證者被混合併合併到新的委員會。每個委員會至少有128名驗證者。
3、Epoch
1 Epoch = 32 Slot
1個Epoch表示32個slot的數量,大約耗時6.4分鐘。
當涉及到驗證者隊列和最終確定性時,Epoch扮演著重要的角色。
4、存款合約
存款合約是通過以太坊1.0上的智慧合約到達以太坊2.0的網關。
智慧合約接受任何最少1個ETH和有效輸入數據的交易。
以太坊2.0信標節點監聽存款合約,並運用輸入數據來信任各驗證者節點。
5、輸入數據
輸入數據,也稱為存款數據,是用戶生成的,長度為842個字符的序列。
它表示驗證者公鑰和取款公鑰,由驗證者私鑰簽名,輸入數據需要添加到交易和存款合約中,以便由信標鏈辨識。
6、驗證者(Validator)
驗證者需要在以太坊1.0鏈上的驗證者存款合約中,存入32個ETH。
驗證者營運業者必須運行一個驗證者節點,驗證者的職責是提議區塊和簽署證明,驗證者必須至少保證一半的線上時長,才能獲得正向回報。
符合啟動資格&預估啟動
具體參考下文關於等待啟動驗證者的相關術語解釋,保證金存款已經過ETH2鏈「符合激活條件」時間戳辨識。
如果存在等待啟動驗證者隊列,則需計算預估啟動時間戳。
7、唯一索引(Unique Index)
每個驗證者都會接收屬於自己的唯一索引。
8、當前餘額 & 有效餘額(Current Balance和Effective Balance)
當前餘額表示驗證者目前持有的ETH數量;有效餘額表示由當前餘額計算的值,用於確定驗證者獲得的獎勵或懲罰的大小。
有效餘額永遠不得超過32 ETH。
為了增加有效餘額,驗證者要求「有效餘額 + 1.25 ETH」。換換句話說,如果有效餘額為20 ETH,則需要當前餘額為21.25 ETH,才能獲得21的有效餘額以太坊。
如上例所示,有效餘額將在低於閾值0.25時進行調整。
以下是說明有效餘額如何變化的例子:
- 如果當前餘額為32.00 ETH,有效餘額為32.00 ETH。
- 如果當前餘額從22.00 ETH下降到21.76 ETH,有效餘額將為22.00 ETH。
- 如果當前餘額增加到22.25 ETH、且有效餘額為21 ETH,則有效餘額增加到22 ETH。
9、舉報人(Slasher)
Slasher自成實體,但需要一個信標節點來接收證明。
為了通過驗證者發現惡意行為,slasher遍歷所有接收到的證明,直到發現罰沒攻擊。
被發現的罰沒被廣播到網路中,下一個區塊提議者將證明添加到區塊中,區塊提議者會因為罰沒惡意驗證者而獲得獎勵。
然而,舉報人(Slasher)不會得到獎勵。
可罰沒的罪行
證明者違規(Attestation Violation)
- 雙重投票:驗證者在同一個epoch簽署兩個衝突的證明。
- 環繞投票:驗證者環繞另一個證明簽署證明。
提議者違規(Proposer Violation)
- 雙重區塊提議:一個區塊提議者為同一個slot簽署兩個衝突區塊。
10、證明(Attestation)
驗證區塊有效性的證明者(Attester)進行的投票。
11、區塊提議者(Block Proposer)
信標鏈所選擇的驗證者,提議出下一個區塊,每個slot只能有一個有效區塊。
12、區塊狀態(Block Status)
- 已提議區塊(Proposed):區塊通過驗證被驗證者提議。
- 提議中區塊(Scheduled):驗證者正在提交數據。
- 漏塊(Missed/Skipped):提議者沒有在既定時間內成功提議區塊,所以該區塊被漏掉了。
- 孤塊(Orphaned):為了理解該術語,我們來看下圖,其中數字1-9代表slot。
1、slot1的驗證者提議區塊「a」。
2、slot2的驗證者提議區塊「b」。
3、slot4被漏掉了,因為驗證者沒有提議任何區塊(如離線)。
4、在slot5/6出現了分叉:驗證者(5)提議了一個區塊,但是驗證者(6)沒有收到相關信息(例如,該區塊到達該驗證者的速度不夠快)。所以驗證者(6)根據從驗證者(3)那裡看到的最新資訊提議了一個區塊。
5、分叉選擇規則在這裡起關鍵作用,決定了可用鏈中那條鏈是規範鏈。
13、驗證者生命週期
(1)已存入保證金
32 ETH已存入ETH1存款合約,該狀態將維持7小時左右,這為在ETH1鏈受到攻擊時提供了安全性。
(2)等待啟動
等待在ETH2上啟動。
在驗證者進入驗證者隊列之前,它們需要經其他活躍的驗證者投票加入,每4小時進行一次投票。
- 直到網路中有327680個活躍驗證者之前,每個epoch可以啟動4個驗證者。每增加65536(=4 * 16384)個活躍驗證者,驗證者啟動率就相應增加1個點。
- 此後每個epoch可啟動5個驗證者,則需要327680個活躍驗證者,也就是每天1125個驗證者。
- 每個epoch啟動6個驗證者,則需要393216個活躍驗證者,也就是每天1350個驗證者。
- 每個epoch啟動7個驗證者,則需要458752個活躍驗證者,也就是每天1575個驗證者。
- 每個epoch啟動8個驗證者,則需要524288個活躍驗證者,也就是每天1800個驗證者。
- 每個epoch啟動9個驗證者,則需要589824個活躍驗證者,也就是每天2025個驗證者。
- 每個epoch啟動10個驗證者,則需要655360個活躍驗證者,也就是每天2200個驗證者。
- 激活數量隨啟動驗證者數量的增加而增加,其限制為激活驗證者集除以64.000。
(3)活躍驗證者(Active Validator)
當前正在確認和提議的塊(=區塊提議者)
驗證者將保持活動狀態,直到:
- 其餘額低於16 ETH(被踢出網路)
- 自願退出
- 被罰沒
(4)被罰沒驗證者(Slashing Validator)
驗證者是惡意驗證者,將被罰沒並踢出系統。
懲罰(Penalty)是一S種消極的獎勵(如離線),「罰沒(Slashing)是重大的懲罰(≥1/32的質押餘額)和強制退出......」Justin Drake說。
(5)正退出的驗證者(Exiting Validator)
- 踢出網路:驗證者餘額低於閾值,被踢出網路。
- 退出網路:自願退出,取款密鑰持有人可提取相應驗證者餘額的當前餘額。
14、最終確定(Finalization)
在以太坊2.0中,至少有三分之二的驗證者必須誠實,因此,如果存在兩個相互競爭的epoch,並且三分之一的驗證者決定實施惡意行為,他們將受到懲罰,誠實的人會得到獎賞。
為了確定一個Epoch是否已經最終確定,驗證者必須同意連續的最新兩個Epoch(=「被證明的」),然後所有之前的Epoch都可以被認為已經最終確定。
15、最終確定性問題(Finality issues)
如果某個epoch的投票率低於66.6%(=參與率),則該epoch不能成立。
正如在「最終確定」概念提到的,需要連續三個被證明的epoch才能達成最終確定性,只要鏈不能達到這個狀態,就存在最終確定性問題。
在存在最終確定性問題期間,驗證者隊列將被暫停,新的驗證者不能加入網路。
但是,餘額小於16 ETH的非活躍驗證者將被踢出網絡,這使得網路更加穩定,參與率也更高。
本文為金色財經授權刊登,原文標題為「金色觀察 | 以太坊後合併時代 15個概念帶你深入瞭解以太坊2.0」