以太坊2.0超級全節點、頂級節點、單分片節點解析及探討

買賣虛擬貨幣

譯者按:在比特幣、以太坊1.0、eos等區塊鏈系統中,存在著兩種型別的節點概念:即輕節點(又稱spv節點)以及負責驗證所有交易資料的全節點(或超級節點),而在以太坊接下來的2.0系統規劃當中,節點的劃分將變得更為複雜,這是因為其引入了分片(Sharding)技術。

根據以太坊官方分片FAQ內容當中提到的,該系統的節點將劃分為4類節點,分別是(1)超級全節點(Super-full node),(2)頂級節點(Top-level node),(3)單分片節點(Single-shard node),以及(4)輕節點。那這些節點又是怎麼回事呢,本文旨在解釋這些節點,同時透過以太坊研究社羣(ethresear.ch)成員對該話題的深入討論,以期讓讀者更好地瞭解這些概念。

(圖片來自:Hacked)

來自分片FAQ(譯者注:關於分片技術的討論還在繼續,因此FAQ會不斷更新,以下的內容是最新版本的):

“注意,現在,這樣的系統當中可以存在著幾個‘級別’的節點:

超級全節點:完全下載每個分片的所有校對規則(collation),以及主鏈資料,旨在充分驗證一切;

頂級節點:處理所有主鏈區塊,使得“輕客戶端”可訪問所有的分片;

單分片節點:充當一個頂級節點,但它也會完全下載並驗證其更為關心的,某些具體分片的每個校對規則(collation);

輕節點:僅下載和驗證主鏈區塊的區塊頭資料,除非在某些特定分片狀態下需要讀取某些特定條目,否則這類節點不會處理任何校對規則區塊頭或交易。在這種情況下,它將默克爾分支(Merkle branch)下載到最近的分片校對區塊頭,並從那裡下載狀態期望值的默克爾證明。”

而以太坊研究社羣成員MihailoBjelic對此存有疑問,他在《以太坊2.0節點型別》一帖中提到:

關於 以太坊 2.0當中存在的這些節點型別,我有幾個問題:

1、為什麼這些超級全節點必須要驗證所有的交易(主鏈交易+所有分片交易),這會需要很多的資源,我不明白這一點。儲存所有的資料的確是有意義的(它確保了所有資料的資料可用性),但這也需要大量的磁碟空間和頻寬資源吧?

2、我不知道這些頂級節點是做什麼的,以及為什麼要有它們?

3、單分片節點會定期重新洗牌。如何將資料“移交”給下一個當選節點?

4、所以,輕客戶端只需下載主鏈區塊頭(主鏈= beacon鏈,是嗎?)?

這一切是否都可能會過時(比如當Casper和分片結合在一起時?)

謝謝!

meyer9回答:

1、超級全節點並不是必須要執行的節點。它們只是可能要執行的節點。在具有超級全節點的情況下,一些權益池可能希望這樣做,這樣,對於每個驗證者來說,他們就不必在每個週期都重新同步到不同的分片;

2、頂級節點只驗證beacon鏈,因此,它們只能訪問分片的區塊頭資訊,而不會實際驗證分片交易,或處理分片區塊;

3、單分片節點生成校對規則(collation),並把它們新增到分片鏈中,這就好比詢問比特幣礦工如何將資料移交給下一位比特幣礦工;

4、是的;

jannikluhn:“MihailoBjelic:單分片節點會定期重新洗牌。”

不一定的,只有驗證者是需要被洗牌的,“正常”的單分片節點(例如,來自與該分片上的某個合約進行互動的使用者)可以永久地停留在一個分片鏈上。

MihailoBjelic:

感謝@meyer9 和 @jannikluhn的回答。

“meyer9:超級全節點並不是必須要執行的節點。它們只是可能要執行的節點。在具有超級全節點的情況下,一些權益池可能希望這樣做,這樣,對於每個驗證者來說,他們就不必在每個週期都重新同步到不同的分片;”

如果我們沒有這些超級全節點,我們如何保證整個系統的資料可用性(例如,如果單個分片遭到了破壞或攻擊,並且我們不再擁有其資料的情況下?)

“meyer9:頂級節點只驗證beacon鏈,因此,它們只能訪問分片的區塊頭,而不會實際驗證分片交易,或處理分片區塊;”

節點只做這一點的原因是什麼?我想每個單獨的驗證者都需要這樣做(驗證beacon鏈,並跟蹤所有分片的區塊頭),無論如何,我認為它是一些預設的基礎級功能?

“meyer9:單分片節點生成校對規則(collation),並把它們新增到分片鏈中,這就好比詢問比特幣礦工如何將資料移交給下一位比特幣礦工;”

我相信這種比較是沒有意義的。如果我的想法是對的,“單分片節點”是@JustinDrake在他的簡報中提到的運營者,並且很清楚的是,它們會被重新洗牌,例如每週一次(而比特幣礦工/節點則不會被洗牌)。也就是說,很明顯,當新的驗證者組被選出時,則舊的運營者(單分片節點)應該會把(整個分片鏈)的所有分片資料“移交”給新的運營者(它們沒有這些資料,而只有分片的區塊頭資訊)。現在,當我再思考這個問題的時候,我發現這個問題要比我原先想象地還要複雜,我可能會在這個問題上另開一個新的話題。

“jannikluhn:不一定的,只有驗證者是需要被洗牌的,“正常”的單分片節點(例如,來自與該分片上的某個合約進行互動的使用者)可以永久地停留在一個分片鏈上。”

你能分享一下你是在哪得到的這些資訊嗎?只有驗證者會被重新洗牌?這將徹底改變系統的模式,並引入全新的挑戰和問題(如果這被證實了,我會探討更多的細節)。當然,我們可以擁有由使用者執行的永久性單分片節點,但這些對於分析而言是不相關的(不強制/擔保+not staked ->不能依靠。)

此後,這個分片FAQ的原作者之一,以太坊創始人Vitalik Buterin加入了這個話題的探討。

(圖片來自:Filthy Lucre)

vbuterin:“MihailoBjelic:如果我們沒有這些超級全節點,我們如何保證整個系統的資料可用性(例如,如果單個分片遭到破壞或攻擊,並且我們不再擁有其資料的情況下?)”

由於洗牌的原因,我們就有了一個強大的概率保證,即單個分片不會受到攻擊或破壞,而基本上沒有一個攻擊者擁有整個驗證者集接近50%的份額,如果我們新增了欺詐證明和資料可用性證明(譯者注,可參考《區塊鏈擴容的關鍵:欺詐和資料可用性證明》),整個網路將能夠拒絕掉壞區塊,而不必檢查所有的資料;

“MihailoBjelic:你能分享一下你是在哪得到的這些資訊嗎?只有驗證者會被重新洗牌?”

這些資訊來自於我這裡 ^ _ ^

任何不是驗證者的節點,都只是為自身利益而執行的節點,因此,該節點當然可以聽取和下載,或者不下載,核查或不核查它想要的東西。因此,協議沒有能力強迫其他節點去任何特定的分片,也沒有理由這樣做。

MihailoBjelic:“vbuterin:這些資訊來自於我 ^ _ ^”

這樣哈,那我認為這些資訊是相當可靠了!^_^ :那這意味著分片FAQ和Justin的報告(或者至少是報告的部分)是有衝突的嗎?(譯者注:具有刨根問底的精神,很好)

“vbuterin:任何不是驗證者的節點,都只是為自身利益而執行的節點,因此,該節點當然可以聽取和下載,或者不下載,核查或不核查它想要的東西。因此,協議沒有能力強迫其他節點去任何特定的分片,也沒有理由這樣做。”

我認為,提到這些使用者執行的節點,只會帶來混亂,它們是無關緊要的,這是因為它們(正如您和我都說過的)根本不會提供任何保證,它們只是無束縛的,並且可能(或可能不)驗證及保留分片的資料(或它的任意部分)。驗證者必須在任何時刻都不依賴於這些節點,他們需要的是受束縛(bonded )的節點,並且必須驗證每個分片校對規則(collation),並保留所有分片的資料(整個最新的分片鏈)。每個分片會有多少的節點?如果只是一個節點,那麼會有幾個問題,如果不止一個,還會有其他的問題(同樣,如果我有這個答案,我會深入到更多的細節)。如果這些東西還沒有完全明確,這也是當然可理解的。

drcode1:

要記住的一個細節是,用於分片的“輕客戶端”可能還會負責將資料上傳到全節點,而這通常不是輕客戶端的職責。引用Vitalik等人最近撰寫的輕客戶端規範,我假設它會使用和以太坊2.0當中相同的資料可用性機制:“由輕客戶端接受到的每個share(譯者注:同樣是欺詐和資料可用性證明論文當中的一個重要概念)以及有效默克爾證明,會和所有全節點進行溝通,表明這個輕客戶端已經連線到了全節點(如果這些全節點沒有它們)。”

“MihailoBjelic:我認為,提到這些使用者執行的節點,只會帶來混亂。”

我不是博弈論領域的專家,我只想指出一點,100%的BitTorrent節點是無束縛的( unbonded),它們沒有義務提供資料或驗證:軟體的預設行為(加上一些利他者)可以導致對分散式軟體系統產生有意義影響的強大機制。

MihailoBjelic:感謝 @drcode1!

“drcode1:我只想指出一點,100%的BitTorrent節點是無束縛的( unbonded),它們沒有義務提供資料或驗證”

沒錯,BitTorrent就是一個不可靠的分散式網路(每個人都遇到過不可用的torrent連結)。對於IPFS也是一樣的,這也是為什麼他們要構建Filecoin(如果你希望提供資料可用的保證,則需要有束縛的人員來儲存這些資料,即使這樣,問題也不是微不足道的。)這就是我為什麼會認為,我們根本不應該依賴這些使用者/利他主義者執行節點。也就是說,在討論系統的安全性和保障時,甚至不應該考慮他們。

也就是說,我還是很想知道:

a) 我們將有受束縛的單分片節點(這些節點必須下載並儲存單個分片的所有資料)?

b) 這些節點絕對不會被洗牌嗎?

c) 他們是和提議者(負責提出區塊/校對規則(collation),以及對它們進行表決驗證)相同的實體嗎?

d) 每個分片會有多少這樣的節點?

我剛剛看了Peter Szilagyi和Felix Lange關於以太坊網路的精彩演講,在這裡你可以看到,當時的計劃是讓校對者(collator)不斷切換分片(儘管,目前還是不清楚校對者(collator)是否和提議者/單分片節點相同 :-))

daniel:

非常好的問題!關於這個話題,我已經思考很久了,現在我想提供一些純粹是自己的觀點:

a) 是的!我看不到另一種保證長期資料可用性的方法;

b) 這視情況而定。到目前為止,我認為在實踐過程當中,是不需要對它們進行重新洗牌操作的,但我覺得為了保證可證明的活躍性,可能需要重新洗牌操作。否則,賄賂攻擊者可能會透過不提出任何校對規則(collation)的方式,而造成一個分片被完全拖延;

C)是的!我認為,可透過將長期狀態儲存的責任+交易執行+校對規則提議組合到相同的角色當中,從而實現最高的協同效應(因此能夠帶來效率)。

D)這是一個有趣而開放的問題。如果我們沒有“分配”或“洗牌”執行者,那麼無論如何,我們對此都沒有控制權,這取決於經濟激勵,以實現對所有分片的合理分配。如果我們分配了他們,我還沒有考慮好合理的數字。

譯者後記:關於本文探討的話題,譯者將繼續跟蹤研究者的討論動態,並將在評論欄中呈現出這些最新討論。此外,關於分片的話題,譯者將透過研究人員的討論逐個分解探討。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;