僅供教育參考,不構成安全或交易建議。輕量用戶端只驗證其設定之協定與證明涵蓋的物件;請確認特定鏈、分叉、檢查點、標頭狀態、服務提供者和未經驗證的資料範圍。
直接答案
輕量用戶端是一種驗證軟體,它追蹤區塊鏈時所需的本機執行、狀態和歷史資料少於完整節點。輕節點是執行這類軟體的裝置或程序。在權益證明以太坊上,共識輕量用戶端從近期可信任的最終確定檢查點啟動,並驗證能辨識分叉的同步委員會更新,以維護樂觀標頭和最終確定標頭;它不會重播每筆 EVM 交易。
這個經過驗證的共識視圖只是第一層信任錨。若要驗證帳戶或合約儲存空間的值,用戶端必須將已認證的信標鏈標頭連結至執行酬載標頭,選定其中的 stateRoot,並以該根驗證帳戶或儲存空間證明。缺少所需證明的一般 RPC 回應仍只是服務提供者的主張。共識簽章不會自動證明交易歷史、收據、呼叫追蹤、資料可用性、應用程式行為或長期可檢索性。
運作機制
- 鎖定網路與信任根:鏈身分、創世驗證者根和創世時間、分叉時程與預設值、目前時鐘、用戶端版本,以及近期可信任的最終確定弱主觀性檢查點。透過彼此獨立且經過認證的來源交叉核對檢查點;節點意見一致無法修復惡意起始根。
- 為可信任區塊根取得
LightClientBootstrap。驗證啟動物件的標頭、目前同步委員會及其 Merkle 分支,然後初始化LightClientStore。若鏈、分叉摘要、廣義索引或序列化結構與所設定分叉不符,應拒絕處理。 - 按同步委員會週期處理
LightClientUpdate物件。在輪替委員會前,驗證時槽、參與位元、BLS 聚合簽章與域、目前及下一委員會分支、最終性分支和單調性。分叉升級可能改變物件欄位與廣義索引,因此 Altair 常數並非永久通用值。 - 分別維護
optimistic_header和finalized_header政策。樂觀更新能提供較新的資訊,但重組或資料扣留風險更高;最終確定更新的共識狀態較強,卻可能有所落後。應用程式必須明確選擇合適的標頭,不能把最新回應重新標為最終確定。 - 錨定執行資料。驗證已認證輕量用戶端標頭所攜帶的執行酬載標頭及其分支,再把每項帳戶或儲存空間查詢綁定至該執行
stateRoot、區塊雜湊和最終性狀態。在以太坊上,eth_getProof可傳回帳戶證明及指定儲存空間證明;應在本機驗證節點、路徑、值和不存在性。 - 盤點每個未經驗證的範圍。餘額證明不會認證交易收據、事件紀錄查詢、呼叫追蹤、呼叫模擬、記憶體池、代幣標籤、預言機、blob、歷史區間,也不會證明服務提供者沒有省略結果。每種必要物件都應有證明、獨立重建、完整節點備援方案或明確的信任假設。
- 依失敗即關閉原則運作。記錄檢查點、分叉、樂觀與最終確定根、執行區塊與狀態根、證明節點、服務提供者和時間戳記。強制執行最大陳舊期限,分散服務提供者與網路路徑,保護查詢隱私,測試日蝕攻擊與停機復原;輕量用戶端的證明範圍不足時,應使用完整節點或其他驗證系統。
計算範例
- 同步委員會整數邊界。 對於
512人委員會,規範中的超多數測試為participants * 3 >= 512 * 2。參與者為341人時,341 / 512 = 66.6015625%且1,023 < 1,024,測試不通過。參與者為342人時,342 / 512 = 66.796875%且1,026 >= 1,024,測試通過。這只驗證所設定的更新規則,不能證明每名委員或每個實作都是誠實的。 - 標頭時鐘。 教學範例中的檢查點位於時槽
10,000,被認證標頭位於10,064,其最終確定標頭位於10,032。按12 seconds/slot,被認證標頭比檢查點晚64 * 12 = 768 seconds = 12 minutes 48 seconds,而最終確定標頭落後被認證標頭32 * 12 = 384 seconds = 6 minutes 24 seconds。時槽時間不保證網路傳遞,也不構成固定牆上時鐘時間的最終性服務承諾。 - 精簡分支,有限主張。 在包含
2^20個葉節點的理想平衡樹中,單一葉節點分支有20個同層雜湊。按32 bytes/hash計,共640 bytes;與8 MiB = 8,388,608 bytes的物件相比,該分支占0.00762939453125%,減少99.99237060546875%。該分支只證明葉節點到根的關係,不證明其他位元組可用。 - 證明與裸 RPC。 在最終確定的執行
stateRoot下,經驗證的帳戶證明得出3.25 ETH,而未經證明的 RPC 回應聲稱是3.30 ETH。差額為0.05 ETH,且裸回應高出0.05 / 3.30 = 1.5151515152%。應接受在所選根下證明的值,但不能據此推斷稍後的餘額、收據、歷史結果或代幣身分。
風險
- 設定錯誤的鏈、創世驗證者根、創世時間或預設值。
- 從惡意、陳舊或未最終確定的檢查點啟動。
- 只使用一個未經認證的檢查點來源,或接受長程分叉。
- 本機時鐘漂移導致時槽、週期、域或陳舊性判斷錯誤。
- 使用過時的分叉時程、物件結構或廣義索引。
- 未驗證同步委員會參與度、BLS 簽章或域。
- 遺漏委員會輪替,或接受無效的目前或下一委員會。
- 把樂觀標頭當成最終確定標頭。
- 連結錯誤的信標鏈標頭、執行酬載或執行區塊雜湊。
- 對錯誤的
stateRoot驗證帳戶或儲存空間證明。 - 接受格式錯誤的 trie 節點、路徑、編碼或不存在性證明。
- 把不支援或沒有證明的 RPC 方法視為已驗證。
- 收到陳舊、受審查、不完整或偽造的服務提供者回應。
- 表面獨立的服務提供者共同受控,或遭遇日蝕、Sybil 攻擊。
- 提供證明的完整節點修剪或停止服務,造成活性喪失。
- 混淆共識有效性與執行重播或應用程式正確性。
- 混淆有效證明與資料可用性或永久可檢索性。
- 缺少應用程式所需的收據、事件紀錄、追蹤、區塊內容或歷史。
- 用戶端實作、相依套件、二進位檔案或分叉升級失敗。
- 向服務提供者或節點洩露查詢、IP、帳戶和交易隱私。
常見誤解
- 輕量用戶端只是較小的完整節點,或是遠端 RPC 的另一個名稱。
- 同步委員會標頭通過驗證後,每項 RPC 回應都可信任。
- 最新的樂觀標頭等同於最終確定標頭。
- Merkle 證明或共識簽章能證明資料可用性和完整歷史。
- 使用輕量用戶端會自動取得完整節點的隱私、活性與抗審查能力。
相關主題
來源
- Light clients - Ethereum.org(查閱日期:2026-08-13)
- Altair Light Client – Sync Protocol - Ethereum Consensus Specs(查閱日期:2026-08-13)
- Altair Light Client – Light Client - Ethereum Consensus Specs(查閱日期:2026-08-13)
- Electra Light Client – Sync Protocol - Ethereum Consensus Specs(查閱日期:2026-08-13)
- Weak subjectivity - Ethereum.org(查閱日期:2026-08-13)
- eth_getProof - Ethereum Execution APIs(查閱日期:2026-08-13)
- Merkle Patricia Trie - Ethereum.org(查閱日期:2026-08-13)
- Data availability - Ethereum.org(查閱日期:2026-08-13)