北京時間9月15日14時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都可以被認為已經最終確定。
北京時間9月5日19:26最終確認的Epoch和正在處理區塊的Epoch
15、最終確定性問題(Finality issues)
如果某個epoch的投票率低於66.6%(=參與率),則該epoch不能成立。正如在“最終確定”概念提到的,需要連續三個被證明的epoch才能達成最終確定性。只要鏈不能達到這個狀態,就存在最終確定性問題。
在存在最終確定性問題期間,驗證者隊列將被暫停,新的驗證者不能加入網絡,但是,餘額小於16 ETH的非活躍驗證者將被踢出網絡。這使得網絡更加穩定,參與率也更高。