與 Web2 的「黑匣子」系統不同,可驗證性意味着任何人都可以獨立驗證系統的運行方式。以太坊通過確保任何人(甚至在低端設備上)都可以驗證狀態、執行和共識來進一步推動這一點。爲了使以太坊真正可驗證,必須證明三件事: - 狀態:用戶能否確認區塊鏈的當前數據? - 執行:用戶能否確認狀態轉換(STF)有效? - 共識:用戶能否確認選擇了正確的鏈? 以太坊的狀態是任意時間所有賬戶餘額、智能合約存儲和代碼的快照。如何在不下載整個區塊鏈的情況下證明這個狀態是有效的?這就涉及到 Merkle Trees 及其後繼者 Verkle Trees。Merkle 樹創建了從數據到 Merkle 根的「證明路徑」,允許用戶驗證單個數據點,而無需完整的數據集。然而,隨着以太坊狀態的增長,Merkle 證明變得龐大且低效。Verkle Trees 使用「橢圓曲線矢量承諾」縮小證明尺寸。 Verkle 樹不是對每個數據分支進行哈希處理,而是使用加密技巧生成更小的單一證明,有效將證明大小從 330 MB 減少到約 2 KB。 以太坊的執行層運行狀態轉換函數(STF),該函數採用前一個狀態和一個新塊來計算下一個狀態。爲了驗證執行情況,用戶必須重新運行交易 —— 這是一個成本高昂的過程,需要大量存儲和計算能力。以太坊使用附加到區塊的「有效性證明」,而無需重新運行每個塊。通過有效性證明,提議者向輕客戶端證明 STF 執行的正確性。用戶僅驗證 3 個簡單的哈希值:舊狀態根,新狀態根,區塊哈希。 以太坊的混合概率和確定性共識允許低延遲塊生產(slot),並且每個時期(32 slots)都有最終性。如何在不運行完整驗證器的情況下驗證這一過程?同步委員會使用 512 個隨機選擇的驗證者對鏈的頭部進行 27 小時的簽名。輕客戶端無需下載鏈即可驗證此簽名,以確保鏈的正確性。這種方法簡單、高效,但也存在一些風險(無法對不良行爲進行罰沒)。【原文爲英文】