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