無狀態客戶端:以太坊去中心化之路

作者:YQ,AltLayer創辦人;譯:金色財經cryptonaitive

隨著以太坊的使用增加,運行完整節點變得對資源和頻寬要求更高。這導致越來越少的人能夠運行完整節點,降低了網路的去中心化程度。此外,隨著交易需求的增加,以太坊在擴展方面面臨困境,導致網路擁塞和高昂的Gas費。

Vitalik於2017年提出的無狀態用戶端為解決以太坊面臨的去中心化挑戰提供了潛在解決方案。無狀態客戶端的關鍵思想是減少運行完整節點所需的儲存和頻寬要求,使更多的人能夠參與並使網路去中心化。本文將深入探討無狀態客戶端的工作原理以及它們的潛在優缺點。

什麼是以太坊狀態?

要理解無狀態客戶端,我們首先需要了解以太坊中的「狀態」概念。以太坊狀態是指以太坊世界中所有帳戶、合約、餘額、nonce和儲存的當前狀態。它可以被視為在給定時間點上儲存以太坊網路的所有相關資訊的資料庫。

狀態以Merkle Patricia trie的形式持久化,實質上是一個修改過的Merkle樹,用於儲存key-value對。該trie的根哈希總結了整個狀態。每個新區塊,根據該區塊中的交易,狀態會更新。新的狀態根哈希包含在區塊頭中。

隨著時間的推移,隨著越來越多的帳戶、合約和交易被添加,以太坊的狀態變得越來越龐大。目前,狀態的大小超過1TB,每年增加數十GB。這種不斷增長的狀態是去中心化問題的根本原因。

為什麼狀態增長會造成問題

以太坊狀態大小的增加導致了一些關鍵問題:

●新節點同步時間較長-新節點同步所有歷史狀態改變需要很長時間。這增加了運行新的完整節點的難度,阻礙了去中心化。新節點從創世區塊同步到最新狀態目前需要多天,甚至數週,對於消費者硬體來說,這是一個阻礙有效啟動新節點並允許更多參與者加入網路的主要障礙。

● 硬體需求增加-更大的狀態需要更多的儲存、記憶體和處理能力來儲存、存取和更新。這使得資源較少的使用者無法運行節點。運行一個完全同步的以太坊節點現在至少需要一個具有1-2TB容量的SSD。這對許多潛在的節點運營者來說是無法企及的。

● 頻寬使用增加-新區塊的廣播必須也包含更新後的狀態,需要更多的頻寬。這會增加節點運營者的成本。目前,狀態主導大多數區塊廣播,因此區塊大小不斷增長。更多的頻寬轉化為節點運營者的更高成本。

● 區塊驗證變慢-讀取和更新較大的狀態使區塊驗證變慢,限制了交易吞吐量。每筆交易都需要多次讀寫儲存以更新餘額、nonce、合約狀態等。較大的狀態意味著每個區塊的讀取/寫入更多,減少了每秒可以處理的交易數量。

● 永久儲存成本-一旦資料加入狀態中,就必須永久儲存。這導致unbounded狀態增長。目前沒有主動刪除舊的和未使用的狀態資料的機制。因此,只要以太坊繼續運行,狀態保留成本就會無限增加。

什麼是無狀態客戶端

無狀態客戶端提供了一種在不需要存取完整以太坊狀態的情況下驗證新區塊的方法。它們利用稱為「witnesses」的密碼證明來證明區塊中狀態變更的有效性,而無需特定的狀態資料。

無狀態客戶端工作方式如下:

1.客戶端僅儲存區塊頭和狀態根,而不是完整的狀態資料。區塊頭包含在處理該區塊之後狀態trie的根哈希等元資料。

2.在驗證新區塊時,客戶端與區塊一起接收到一個「witness」。這個witness是一組梅克爾證明,證明了交易中特定的狀態更新是有效的。

3.witness包含特定狀態值的Merkle證明,用於處理交易。例如,帳戶餘額或合約儲存的更新。

4.客戶端使用witness來確保交易對最後已知狀態根的有效性。證明驗證狀態變更與先前的根相符。

5.如果有效,客戶端更新到區塊頭中提供的新狀態根。這個新的狀態根將用於驗證下一個區塊。

透過使用witness驗證狀態,而不是在本地儲存完整的狀態,無狀態客戶端獲得了一些優勢:

● 非常快速的同步時間-無需完全同步歷史狀態變更。無狀態客戶端幾乎可以瞬間同步,只需區塊頭即可。

●低儲存需求-狀態根僅為32位元組。而不是數百GB的狀態,只需要區塊頭。

● 較少的頻寬使用-只傳輸區塊頭和witnesses,而不是完整的狀態。頻寬使用最小化。

● 快速驗證-witnesses僅包含小型的相關狀態子集。只證明已更新的帳戶/儲存是有用的。

● 輕鬆支援輕型客戶端-輕客戶端可以輕鬆驗證證明。輕客戶端模型與無狀態驗證非常相容。

無狀態客戶端的挑戰

雖然無狀態客戶端帶來了一些重大好處,但也存在一些顯著的技術挑戰:

● witness大小-witnesses可能過大而無法有效傳輸。如果使用完整的Merkle證明,它們可能會超過區塊大小的限制。

● witness的創建-產生最佳的witness對於區塊提議者來說是複雜的。提議者必須組裝正確的證明片段來驗證每個交易。

● 沒有witness激勵-提供witness沒有直接的獎勵。與挖礦不同,witness的創建沒有內建的激勵機制。

● 暫存資料-witnesses在某一時間點證明狀態,需要再生。 witness不能在狀態發展過程中被重複使用。

● 狀態儲存-仍需要有人維護完整的狀態以產生witness。無狀態驗證依賴於有狀態的witness產生。

● 複雜的應用-有些合約可能依賴較大的狀態子集,使witness變得臃腫。例如,每個交易更新許多儲存槽的合約。

可能的解決方案

研究人員提出了各種解決方案來解決這些挑戰:

● Verkle樹-用於減小witness大小的特殊資料結構。 Verkle樹使用簡潔的密碼承諾來最小化證明大小。

● witness快取-提議者可以維護最近的witness以便重複使用。快取可能再次有用的witness可以攤提創建成本。

● 協議激勵-提供有用witness的獎勵機制。新的激勵結構可以補償witness的創建。

● 中間狀態根-隨時間追蹤根以避免重新產生證明。維護部分根可以重複使用witness片段。

● 狀態租金-要求支付以長期維護狀態,修剪未使用的狀態。租金強制清理過時的儲存以限制證明大小。

● 分區witness模型-在提議者和驗證者之間分割狀態處理。一些專用的提議者節點產生witness。

這些方法之間存在權衡,需要進一步的研究來發現最佳實現。幸運的是,零知識密碼學領域的快速創新可能為高效無狀態客戶端帶來新的可能性。

潛在影響

如果技術障礙能夠被克服,無狀態客戶端可能會顯著推動以太坊的發展:

● 更快的同步和驗證以支援更高的交易吞吐量。無狀態驗證將大大加速區塊處理。

● 減少運作節點所需的資源,提高去中心化程度。筆記型電腦和業餘愛好者可能真實地運行完整節點。

● 更好地支援行動錢包等輕客戶端。狀態證明與輕客戶端模型高度相容。

● 更順暢地引入分片,在分片之間進行無狀態驗證。跨分片交易可以利用高效率的狀態證明。

● 刪除和修剪不再有用的舊狀態資料的能力。狀態成長可以被積極管理,而不是無限成長。

● 節點運作者更靈活地根據需求自訂狀態的能力。節點可以根據用例自訂狀態保留策略。

● 過渡到運算和頻寬更重要於儲存的模型。架構向更加雲端友善的模型發生變化。

也存在一些潛在的風險,例如增加對DDoS攻擊的脆弱性以及只有少數節點運營商可靠地儲存區塊鏈歷史。然而,密碼學證明可以減少這些風險。總體而言,無狀態客戶端是克服以太坊當前限制的最有前途的方法之一。

結論

隨著採用的增加,以太坊不斷增長的狀態大小對去中心化構成了挑戰。無狀態客戶端透過使節點能夠驗證交易而無需完整的區塊鏈狀態來提供一種解決方案。這最終可能使行動手機能夠運行以太坊節點,從而大大提高了去中心化程度。

Total
0
Shares
Related Posts