Go-Ethereum
為什麼快速同步不是預設設置?
據我了解,快速同步具有完全同步的所有安全保證,但速度更快。那是對的嗎?如果是這樣,為什麼快速同步不是預設設置?
兩個原因:
- 與完全同步相比,快速同步確實還有一個額外的弱點。只要攻擊者可以使您與主鏈隔離(例如感染您的路由器),它就可能建構您的節點將相信的任意狀態(詳細資訊在https://github.com/ethereum/go-ethereum/pull/ 1889 年,弱點部分)。這就是為什麼快速同步只是一種一次性同步機制的原因:人們可能會在最初同步時驗證它們確實是最新的並且正確,但之後可能會假設沒有任何問題。欺騙快速同步既困難又昂貴,但經過“足夠”的試驗,你最終可以做到。通過在初始同步之後禁用快速同步,我們無法對它發起現實攻擊。
- 快速同步不保留過去的過渡數據(例如半年前的帳戶持有的數據),僅在完成時保留相對新鮮的網路視圖(過去 8-10 小時),(從那時起它將充當完整節點)。因此,如果我們預設啟用,那麼對於區塊瀏覽器來說將是不利的。
然而,希望 Geth 1.5 將實現狀態修剪,我們將通過它來實現“歸檔”和“完整”節點的分離。然後存檔節點將關閉修剪和快速同步,而完整節點將打開修剪和快速同步。至少這是計劃:)