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

新手Dec 25, 2023
本文詳細介紹了以太坊的去中心化解決方案——無狀態客戶端,併解釋了什麽是狀態,以及它的背景、原理和解決方案。
無狀態客戶端:以太坊上的去中心化之路

隨著以太坊使用量的增加,運行完整節點將更加耗能、需要更多的帶寬。因此,能夠運行完整節點的人變得更少,從而降低了網絡的去中心化程度。此外,隨著交易需求的增加,以太坊難以擴展,導緻網絡擁塞和高昂的Gas費。

2017 年,Vitalik 提出了無狀態客戶端,爲以太坊麵臨的去中心化挑戰提供了可能的解決方案。無狀態客戶端背後的關鍵思想是減少運行全節點的存儲和帶寬要求,使更多人可以參與網絡併使網絡去中心化。本文將深入探討無狀態客戶端的工作方式及其潛在的優缺點。

什麽是以太坊狀態?

要了解無狀態客戶端,我們首先需要了解以太坊中“狀態”的概念。以太坊狀態是指以太坊世界中所有賬戶、合約、餘額、隨機數和存儲的當前狀態。它可以被視爲是一個數據庫,存儲給定時間點與以太坊網絡相關的所有信息。

狀態保存在 Merkle Patricia trie 中,它本質上是一個修改後的 Merkle 樹,用於存儲鍵值對。該trie的根哈希總結了整個狀態。在每個新區塊之後,狀態會根據該區塊中的交易進行更新。新的狀態根哈希包含在塊頭中。

隨著時間的推移,添加了越來越多的賬戶、合約和交易,以太坊狀態變得越來越大。如今,狀態大小已超過1TB,併且每年以數十 GB 的速度增長。這種不斷增長的狀態是去中心化問題的根源。

爲什麽狀態增長會帶來問題?

以太坊狀態規模的增加導緻了幾個關鍵問題:

  • 新節點的衕步時間更長:新節點通過處理所有歷史狀態來進行更改需要花費極長的時間來衕步。這使得運行新的完整節點變得更加睏難,從而阻礙了去中心化。目前,在消費類硬件上,從創世衕步新節點需要幾天甚至幾周的時間。這是有效啟動新節點併允許更多參與者加入網絡麵臨的主要障礙。
  • 增加的硬件要求:更大的狀態需要更多的存儲、內存和處理能力來存儲、訪問和更新。這會阻止資源較少的用戶運行節點。現在,運行完全衕步的以太坊節點至少需要容量爲1-2TB 的 SSD。這對於許多潛在的節點運營者來説是遙不可及的。
  • 更多帶寬使用:新塊的廣播還必鬚包括更新的狀態,需要更多帶寬。這增加了節點運營者的成本。目前,國家主導著大多數區塊廣播,因此區塊大小持續增長。更多帶寬意味著節點運營者的成本更高。
  • 區塊驗證速度較慢:讀取和更新較大的狀態會使區塊驗證速度變慢,從而限製交易吞吐量。每個交易都需要多次存儲讀取和寫入來更新餘額、隨機數、合約狀態等。較大的狀態意味著每個區塊有更多的讀取/寫入,從而減少每秒可以處理的交易數量。
  • 永久存儲成本:一旦數據被添加到狀態中,它就必鬚被永久存儲。這創造了無限製的狀態增長。目前還沒有主動刪除舊的和未使用的狀態數據的機製。因此,隻要以太坊繼續運行,狀態保留成本就會無限增加。

無狀態客戶端詳解

無狀態客戶端提供了一種驗證新區塊的方法,而無需訪問完整的以太坊狀態。他們利用稱爲“見證人”的加密證明來證明區塊中狀態更改的有效性,而無需底層狀態數據。

以下是無狀態客戶端的高級工作方式:

  • 客戶端僅存儲塊頭和狀態根,而不存儲完整的狀態數據。塊頭包含元數據,例如處理該塊後狀態樹的根哈希。
  • 當驗證一個新區塊時,客戶端會收到一個“見證人”以及該區塊。該見證人是一組 Merkle 證明,證明交易的特定狀態更新是有效的。
  • 見證人包含處理交易所需的特定狀態值的 Merkle 證明。例如,帳戶餘額或合約存儲已更新。
  • 客戶端使用見證來確保交易相對於最後已知的狀態根是有效的。這些證據證明狀態更改與之前的根匹配。
  • 如果有效,客戶端會更新到區塊頭中提供的新狀態根。這個新的狀態根將用於驗證下一個區塊。

通過使用見證人來驗證狀態而不是在本地存儲完整狀態,無狀態客戶端穫得了幾個優勢:

  • 非常快的衕步時間:無需重播歷史狀態更改。無狀態客戶端幾乎可以立即與區塊頭衕步。
  • 存儲要求低:狀態根隻有32字節。隻需要區塊頭,而不是數百 GB 的狀態。
  • 帶寬更少:僅傳輸區塊頭和見證人,而不傳輸完整狀態。帶寬使用量被最小化。
  • 快速驗證:見證人僅包含較小的相關狀態子集。僅證明所涉及的更新帳戶/存儲。
  • 輕鬆的輕客戶端支持:輕客戶端可以輕鬆驗證證明。輕客戶端模型與無狀態驗證非常兼容。

無狀態客戶端麵臨的挑戰

雖然無狀態客戶端具有一些主要優勢,但也麵臨者需要剋服的重大的技術挑戰:

  • 見證人大小:見證人可能太大而無法有效進行傳輸。如果使用完整的 Merkle 證明,它們可能會超出區塊大小限製。
  • 見證人創建:生成最佳見證人對於區塊提議者來説很覆雜。提議者必鬚組裝正確的證明片段來驗證每筆交易。
  • 沒有見證人獎勵:提供見證人不會穫得直接獎勵。與挖礦不衕,見證人創建沒有內置的激勵結構。
  • 臨時數據:見證人證明某一時間點的狀態,需要重新生成。隨著狀態的進展,證人不能被重覆使用。
  • 狀態存儲:仍然需要有人維護完整的狀態來産生見證人。無狀態驗證依賴於有狀態見證生成。
  • 覆雜的應用程序:一些合約可能依賴於大型狀態子集、膨脹的見證人。例如,每筆交易更新許多存儲插槽的合約。

可能的解決方案

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

  • Verkle 樹:用於減少見證大小的特殊數據結構。Verkle 樹使用簡潔的加密承諾來最小化證明大小。
  • 見證緩存:提議者可維護最近的見證以供重用。緩存可能相關的見證人會再次攤銷創建成本。
  • 協議激勵:提供有用見證人的獎勵機製。新的激勵結構可以補償見證人的創建。
  • 中間狀態根:長時間跟蹤根以避免重新生成證明。維護部分根可以重用見證片段。
  • 狀態租金:需要付款以長期維持狀態,修剪未使用的狀態。租金迫使陳舊的存儲得到清理以限製證明大小。
  • 分區見證模型:提議者和驗證者之間的分離狀態處理。讓一些專用的提議者節點生成見證人。

需要權衡選擇這些方法,進一步研究它們以髮現最佳實施方案。值得慶幸的是,零知識密碼學的快速創新可爲高效的無狀態客戶端開辟新的可能性。

潛在影響

如果能夠剋服技術障礙,無狀態客戶端可以顯著推進以太坊:

  • 實施更快的衕步和驗證,以支持更高的事務吞吐量。無狀態驗證將大大加快塊處理速度。
  • 減少運行節點的資源需求,提高去中心化程度。筆記本電腦和愛好者實際上可以運行完整節點。
  • 更好地支持移動錢包等輕客戶端。狀態證明與輕客戶端模型高度兼容。
  • 更順利地引入分片,併在分片之間進行無狀態驗證。跨分片交易可利用有效的狀態證明。
  • 能夠刪除和修剪不再有用的舊狀態數據。可積極管理狀態增長,而不是使其無限製。
  • 節點運營者可更靈活地根據需要自定義狀態。節點可根據用例定製狀態保留策略。
  • 過渡到計算和帶寬比存儲更重要的模型。將架構轉曏更加雲友好的模型。

還有一些潛在的風險,例如容易受到 DDoS 攻擊的可能性增加以及區塊鏈歷史記録僅由少數節點運營者可靠地存儲。然而,加密證明可以降低這些風險。總體而言,無狀態客戶端是剋服以太坊當前限製的最有希望的方法之一。

結語

隨著採用率的增加,以太坊不斷增長的狀態規模給去中心化帶來了挑戰。無狀態客戶端提供了一種出路,使節點能夠在沒有完整區塊鏈狀態的情況下驗證交易。這最終可能允許手機運行以太坊節點,從而大大提高去中心化程度。

聲明:

  1. 本文轉載自[Mirror],著作權歸屬原作者[YQ],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。

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

新手Dec 25, 2023
本文詳細介紹了以太坊的去中心化解決方案——無狀態客戶端,併解釋了什麽是狀態,以及它的背景、原理和解決方案。
無狀態客戶端:以太坊上的去中心化之路

隨著以太坊使用量的增加,運行完整節點將更加耗能、需要更多的帶寬。因此,能夠運行完整節點的人變得更少,從而降低了網絡的去中心化程度。此外,隨著交易需求的增加,以太坊難以擴展,導緻網絡擁塞和高昂的Gas費。

2017 年,Vitalik 提出了無狀態客戶端,爲以太坊麵臨的去中心化挑戰提供了可能的解決方案。無狀態客戶端背後的關鍵思想是減少運行全節點的存儲和帶寬要求,使更多人可以參與網絡併使網絡去中心化。本文將深入探討無狀態客戶端的工作方式及其潛在的優缺點。

什麽是以太坊狀態?

要了解無狀態客戶端,我們首先需要了解以太坊中“狀態”的概念。以太坊狀態是指以太坊世界中所有賬戶、合約、餘額、隨機數和存儲的當前狀態。它可以被視爲是一個數據庫,存儲給定時間點與以太坊網絡相關的所有信息。

狀態保存在 Merkle Patricia trie 中,它本質上是一個修改後的 Merkle 樹,用於存儲鍵值對。該trie的根哈希總結了整個狀態。在每個新區塊之後,狀態會根據該區塊中的交易進行更新。新的狀態根哈希包含在塊頭中。

隨著時間的推移,添加了越來越多的賬戶、合約和交易,以太坊狀態變得越來越大。如今,狀態大小已超過1TB,併且每年以數十 GB 的速度增長。這種不斷增長的狀態是去中心化問題的根源。

爲什麽狀態增長會帶來問題?

以太坊狀態規模的增加導緻了幾個關鍵問題:

  • 新節點的衕步時間更長:新節點通過處理所有歷史狀態來進行更改需要花費極長的時間來衕步。這使得運行新的完整節點變得更加睏難,從而阻礙了去中心化。目前,在消費類硬件上,從創世衕步新節點需要幾天甚至幾周的時間。這是有效啟動新節點併允許更多參與者加入網絡麵臨的主要障礙。
  • 增加的硬件要求:更大的狀態需要更多的存儲、內存和處理能力來存儲、訪問和更新。這會阻止資源較少的用戶運行節點。現在,運行完全衕步的以太坊節點至少需要容量爲1-2TB 的 SSD。這對於許多潛在的節點運營者來説是遙不可及的。
  • 更多帶寬使用:新塊的廣播還必鬚包括更新的狀態,需要更多帶寬。這增加了節點運營者的成本。目前,國家主導著大多數區塊廣播,因此區塊大小持續增長。更多帶寬意味著節點運營者的成本更高。
  • 區塊驗證速度較慢:讀取和更新較大的狀態會使區塊驗證速度變慢,從而限製交易吞吐量。每個交易都需要多次存儲讀取和寫入來更新餘額、隨機數、合約狀態等。較大的狀態意味著每個區塊有更多的讀取/寫入,從而減少每秒可以處理的交易數量。
  • 永久存儲成本:一旦數據被添加到狀態中,它就必鬚被永久存儲。這創造了無限製的狀態增長。目前還沒有主動刪除舊的和未使用的狀態數據的機製。因此,隻要以太坊繼續運行,狀態保留成本就會無限增加。

無狀態客戶端詳解

無狀態客戶端提供了一種驗證新區塊的方法,而無需訪問完整的以太坊狀態。他們利用稱爲“見證人”的加密證明來證明區塊中狀態更改的有效性,而無需底層狀態數據。

以下是無狀態客戶端的高級工作方式:

  • 客戶端僅存儲塊頭和狀態根,而不存儲完整的狀態數據。塊頭包含元數據,例如處理該塊後狀態樹的根哈希。
  • 當驗證一個新區塊時,客戶端會收到一個“見證人”以及該區塊。該見證人是一組 Merkle 證明,證明交易的特定狀態更新是有效的。
  • 見證人包含處理交易所需的特定狀態值的 Merkle 證明。例如,帳戶餘額或合約存儲已更新。
  • 客戶端使用見證來確保交易相對於最後已知的狀態根是有效的。這些證據證明狀態更改與之前的根匹配。
  • 如果有效,客戶端會更新到區塊頭中提供的新狀態根。這個新的狀態根將用於驗證下一個區塊。

通過使用見證人來驗證狀態而不是在本地存儲完整狀態,無狀態客戶端穫得了幾個優勢:

  • 非常快的衕步時間:無需重播歷史狀態更改。無狀態客戶端幾乎可以立即與區塊頭衕步。
  • 存儲要求低:狀態根隻有32字節。隻需要區塊頭,而不是數百 GB 的狀態。
  • 帶寬更少:僅傳輸區塊頭和見證人,而不傳輸完整狀態。帶寬使用量被最小化。
  • 快速驗證:見證人僅包含較小的相關狀態子集。僅證明所涉及的更新帳戶/存儲。
  • 輕鬆的輕客戶端支持:輕客戶端可以輕鬆驗證證明。輕客戶端模型與無狀態驗證非常兼容。

無狀態客戶端麵臨的挑戰

雖然無狀態客戶端具有一些主要優勢,但也麵臨者需要剋服的重大的技術挑戰:

  • 見證人大小:見證人可能太大而無法有效進行傳輸。如果使用完整的 Merkle 證明,它們可能會超出區塊大小限製。
  • 見證人創建:生成最佳見證人對於區塊提議者來説很覆雜。提議者必鬚組裝正確的證明片段來驗證每筆交易。
  • 沒有見證人獎勵:提供見證人不會穫得直接獎勵。與挖礦不衕,見證人創建沒有內置的激勵結構。
  • 臨時數據:見證人證明某一時間點的狀態,需要重新生成。隨著狀態的進展,證人不能被重覆使用。
  • 狀態存儲:仍然需要有人維護完整的狀態來産生見證人。無狀態驗證依賴於有狀態見證生成。
  • 覆雜的應用程序:一些合約可能依賴於大型狀態子集、膨脹的見證人。例如,每筆交易更新許多存儲插槽的合約。

可能的解決方案

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

  • Verkle 樹:用於減少見證大小的特殊數據結構。Verkle 樹使用簡潔的加密承諾來最小化證明大小。
  • 見證緩存:提議者可維護最近的見證以供重用。緩存可能相關的見證人會再次攤銷創建成本。
  • 協議激勵:提供有用見證人的獎勵機製。新的激勵結構可以補償見證人的創建。
  • 中間狀態根:長時間跟蹤根以避免重新生成證明。維護部分根可以重用見證片段。
  • 狀態租金:需要付款以長期維持狀態,修剪未使用的狀態。租金迫使陳舊的存儲得到清理以限製證明大小。
  • 分區見證模型:提議者和驗證者之間的分離狀態處理。讓一些專用的提議者節點生成見證人。

需要權衡選擇這些方法,進一步研究它們以髮現最佳實施方案。值得慶幸的是,零知識密碼學的快速創新可爲高效的無狀態客戶端開辟新的可能性。

潛在影響

如果能夠剋服技術障礙,無狀態客戶端可以顯著推進以太坊:

  • 實施更快的衕步和驗證,以支持更高的事務吞吐量。無狀態驗證將大大加快塊處理速度。
  • 減少運行節點的資源需求,提高去中心化程度。筆記本電腦和愛好者實際上可以運行完整節點。
  • 更好地支持移動錢包等輕客戶端。狀態證明與輕客戶端模型高度兼容。
  • 更順利地引入分片,併在分片之間進行無狀態驗證。跨分片交易可利用有效的狀態證明。
  • 能夠刪除和修剪不再有用的舊狀態數據。可積極管理狀態增長,而不是使其無限製。
  • 節點運營者可更靈活地根據需要自定義狀態。節點可根據用例定製狀態保留策略。
  • 過渡到計算和帶寬比存儲更重要的模型。將架構轉曏更加雲友好的模型。

還有一些潛在的風險,例如容易受到 DDoS 攻擊的可能性增加以及區塊鏈歷史記録僅由少數節點運營者可靠地存儲。然而,加密證明可以降低這些風險。總體而言,無狀態客戶端是剋服以太坊當前限製的最有希望的方法之一。

結語

隨著採用率的增加,以太坊不斷增長的狀態規模給去中心化帶來了挑戰。無狀態客戶端提供了一種出路,使節點能夠在沒有完整區塊鏈狀態的情況下驗證交易。這最終可能允許手機運行以太坊節點,從而大大提高去中心化程度。

聲明:

  1. 本文轉載自[Mirror],著作權歸屬原作者[YQ],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!