前言:以太坊phase 0的核心是信標鏈,它負責(zé)協(xié)調(diào)以太坊網(wǎng)絡(luò)。作為驗證者,Ta是如何參與ETH2.0網(wǎng)絡(luò)的?本文從驗證者的視角非常簡潔地闡述了驗證者的參與過程,很適合想成為ETH2.0網(wǎng)絡(luò)驗證者的讀者閱讀。本文作者是Alex T,由“藍狐筆記”的“SIEN”翻譯。
本文試圖用簡單的語言來解釋信標鏈的工作方式。在ETH2.0中,信標鏈是整個網(wǎng)絡(luò)的骨干,以非常復(fù)雜的方式協(xié)調(diào)所有一切,因此,下面的闡述有意地進行了大量的簡化。為了簡單起見,我將主要考慮網(wǎng)絡(luò)和驗證者正常工作的情況,并忽視大多數(shù)毫無疑問會發(fā)生的惡意行為。諸如罰款、消減以及孤塊、重組等事情在這里暫不描述,后續(xù)再表。
信標鏈是一個區(qū)塊鏈,從本質(zhì)上講,是連接在一起的區(qū)塊的鏈,但有一些驚喜。
我們的旅程從一個不為人知的英雄開始,Ta就是驗證者。驗證者將其32 個ETH的“小金庫”鎖入在當(dāng)前ETH1.0網(wǎng)絡(luò)上的質(zhì)押合約中,以便通過運行驗證者節(jié)點來積極參與ETH2.0網(wǎng)絡(luò)。
在驗證者出發(fā)之前,需要一些先決條件。理想情況下,驗證者有權(quán)訪問ETH1.0節(jié)點和信標鏈客戶端節(jié)點,兩者均已同步。
一旦我們的英雄(藍狐筆記:此處指驗證者)將其ETH存入質(zhì)押合約,他的ETH2.0之旅便開始了。存儲過程的一部分是,他為其信標鏈的ETH獲得了公鑰、冷熱私鑰。通過瀏覽器,公鑰可用來查看驗證者狀態(tài)和活動。熱私鑰用于投票和提議,而冷私鑰應(yīng)該離線存儲,因為它是金鑰匙,它允許將來讓你訪問你的ETH。
需要注意的是,這里有一件非常重要的事情,一旦你發(fā)送了質(zhì)押金,你必須保證驗證者客戶端處于運行狀態(tài),直到你停止成為驗證者。在Phase 0階段,如果你退出,你將無法重新加入成為驗證者,同時也無法轉(zhuǎn)移資金。否則,你會失去ETH。(藍狐筆記:這個提示很重要,一定要保證驗證者客戶端的正常運行,以避免產(chǎn)生損失)
驗證者的第二步是等待大約7.5個小時(當(dāng)前是1024個ETH1.0區(qū)塊和1024個ETH2.0 slot),以確保存儲的交易無法被逆轉(zhuǎn)。驗證者利用這段時間來設(shè)置一個可用的驗證者客戶端,添加熱私鑰并將其連接到先前設(shè)置的信標鏈客戶端。
一旦等待結(jié)束,存儲資金被信標鏈識別,驗證者被添加到激活隊列中。在這個隊列中,可以猜想,我們會繼續(xù)等待,這取決于隊列中有多少其他的驗證者。現(xiàn)在已有327,680個激活的驗證者,每個epoch(周期)只有4個驗證者可以活躍。
要想理解epoch,需要先了解什么是slot(插槽)。slot是12秒的時間間隔,可以生產(chǎn)一個區(qū)塊。最終這是一個區(qū)塊鏈,因此,我們必須在某個時間點產(chǎn)生區(qū)塊??誷lot可以存在,且它們被稱為跳過slot。
為了確保事情能夠井然有序,slot在一起組成分組,在一個epoch一次32個slot。這分散了一些信標鏈客戶端需要做的一些操作,這反過來應(yīng)該減少運行所述客戶端的計算機的計算負擔(dān)。
在隊列中排隊后,驗證者終于被激活。在每個epoch開始前,驗證者都會得到一份花名冊。在這個花名冊中,他會看到每個epoch,跟他的一些同行一起,他需要投票決定將哪些區(qū)塊包含到一個slot中。在某些epoch,他看到他也有責(zé)任為slot提議區(qū)塊,而其他人可以投票。
在每個epoch之前,信標鏈(使用特殊形式的隨機數(shù)生成)的每個slot選擇一個驗證者來提議區(qū)塊。
它也采用整個可用的驗證者池,將他們分成每個epoch的slot數(shù),然后進一步將其分成上述的組,也就是委員會。委員會可以將其選票匯總在一起。最后,對于每個epoch,每個驗證者需要按照指示進行一次投票,并且如果被選中,則將需要提議一個區(qū)塊。
回到我們的主角,驗證者,我們發(fā)現(xiàn)他的生活相當(dāng)單調(diào)。正如我提到的那樣,他花了很多epoch詢問信標鏈客戶端在每個epoch前他需要做什么,之后再嘗試去執(zhí)行。然后每個epoch他需要去投票(也稱為去證明或去確認),以使得其他人提議的區(qū)塊被包括進來??紤]到所有的可用信息,它會真誠地執(zhí)行操作。并且,通常來說,僅查看一個帶有正確信息的提議區(qū)塊是件簡單任務(wù)。
時不時地會發(fā)生一些讓人激動的事情,我們的驗證者被選擇去提議區(qū)塊。一旦相應(yīng)的slot出現(xiàn),它就會從網(wǎng)絡(luò)上查看可以看到的內(nèi)容,上一個區(qū)塊是什么(也稱為網(wǎng)絡(luò)頭)以及可以看到在網(wǎng)絡(luò)上等待被包含進區(qū)塊中的驗證。隨后,它將所有這些信息打包進入一個新區(qū)塊,然后將其發(fā)送到網(wǎng)絡(luò)。
它收集到的信息越多發(fā)送越快,它可以收到的潛在獎勵就越多,如果該區(qū)塊被包含在規(guī)范鏈中的話。在提交該區(qū)塊后,假定一切都正確,通過收到的證明數(shù)量,它會看到該區(qū)塊在隨后的區(qū)塊中被其他同行驗證。
在一個epoch結(jié)束之后,信標鏈還將ETH發(fā)放給正確履行職責(zé)的驗證者。其中一些發(fā)給投票的人,更大部分發(fā)給提議區(qū)塊的人。但是,如果沒能正確完成任務(wù),人們也會遭到罰款。更糟糕的是,如果驗證者因為惡意行為,或因為技術(shù)困難,導(dǎo)致發(fā)生諸如在同一slot提議兩個區(qū)塊之類的事情,他們會被消減,這意味著會損失更多的資金且從鏈中被踢出。
區(qū)塊鏈是一個個區(qū)塊逐個構(gòu)建起來的,通過使用最后一個可用區(qū)塊作為父塊,每個區(qū)塊查看之前slot中的區(qū)塊,將自己錨定到鏈上。不過,由于現(xiàn)實世界中的事情都不是童話,因此,諸如網(wǎng)絡(luò)延遲之類的事情會導(dǎo)致產(chǎn)生很多問題,因為并不是所有的驗證者都有相同的情況。延遲意味著一些驗證者可以看到某些提議的區(qū)塊,而其他人可能看不到。
為了解決這個問題,必須在驗證者客戶端中引入一個稱為“分叉選擇”的強大實體。其目的有點類似于法官。在每個slot,它會檢查自己擁有的所有可用信息,并且如果考慮鏈的歷史存在多種選擇,它會嘗試選擇其中一個,選擇回溯到構(gòu)建時刻獲得投票數(shù)最多的那個。這個機制可以確保它只有一個規(guī)范鏈,但它有個稱為重組的副作用,可能在短期內(nèi)對鏈進行重組。當(dāng)重組發(fā)生時,獎勵和懲罰也會發(fā)生改變,以反映新鏈的歷史和履行的職責(zé)。
如果總驗證者池中至少有三分之二的投票贊成同一區(qū)塊代表一個epoch的開頭,那么,該epoch被認為是鏈中的有效部分。
合理性提供一個合理的確定性,即是說,鏈不會通過重組而改變。為了確定鏈不會發(fā)生改變,當(dāng)有一個連續(xù)的其他epoch已經(jīng)被證明且建立在其上時,該epoch會被視為具有最終性。換言之,具有最終性的epoch是被已經(jīng)證明的epoch,而其子epoch也是被證明的。
總的來說,這就是信標鏈驗證者的旅程:
· 同步信標鏈客戶端
· 發(fā)送32 ETH質(zhì)押金到存儲合約
· 啟動驗證者客戶端
· 等待,直到質(zhì)押存款被確認,且被添加進入驗證者激活隊列
· 運行并確保驗證者客戶端持續(xù)運行:
-對區(qū)塊進行投票/證明,以使其包含到鏈上
-被要求時提議新區(qū)塊
· 獲得收益$$$
本文簡要提及或忽略了以下主題,這些主題都需要用專門文章來闡述:
*隨機數(shù)的生成—RANDAO
*分叉選擇規(guī)則—Casper FFG
*最終性
*獎勵和懲罰計算方法
*消減
*驗證者生命周期,包括自愿和強制退出
*任何與Phase 1+相關(guān)的內(nèi)容
*任何技術(shù)性的內(nèi)容,例如BLS簽名、SSZ編碼或數(shù)據(jù)結(jié)構(gòu)
責(zé)任編輯:ct
評論
查看更多