跳至主要內容
本頁面使用機器翻譯自英語,可能包含錯誤或不清楚的語言。如需最準確的信息,請參閱英文原文。由於更新頻繁,部分內容可能與英文原文有出入。請加入我們在 Crowdin 上的努力,幫助我們改進本頁面的翻譯。 (Crowdin translation page, Contributing guide)

區塊同步

區塊同步是用 Kaia 區塊鏈的最新區塊和狀態更新節點的過程。 節點運營商可根據自己的硬件規格和服務要求選擇不同的同步方法。

完全同步

完全同步是 Kaia 的默認同步方式,通過使用 --syncmode full 標記或完全省略該標記來激活。 這種方法涉及從 p2p 對等方下載並執行每個區塊(頭和事務),以生成區塊狀態。

狀態持久性選項

在完全同步處理每個數據塊的同時,Kaia 在磁盤上持久存儲狀態數據的數量上提供了靈活性。 這樣,節點操作員就能在數據可訪問性和存儲容量之間取得平衡。 下圖說明了這些選項:

Block sync options

  • ** 存檔模式**:該模式會將每個數據塊的狀態保存到磁盤。 要啟用它,請使用 --gcmode archive 標誌。 以這種模式運行的節點被稱為 存檔節點
  • 完整模式:該模式以特定時間間隔持續保持塊狀態,以優化磁盤使用。 要啟用該功能,請使用 --gcmode full 標記或省略 --gcmode 標記。 以這種模式運行的節點被稱為 全節點。 不要將其與一般的 "完全同步 "方法混淆。

在全節點中,塊狀態每隔 --state.block-interval.NNN(默認值:128)指定的倍數持久化到磁盤。 此外,最近的 --state.tries-in-memory-NNN(默認值:128)區塊的區塊狀態也會保留在內存中,以便為 API 服務。 因此,區塊狀態只有在它是區塊間隔的倍數或最近處理過時才可用。


// State available
> eth.getBalance('0xf39Fd6e51aad88F6F4ce6aB88279cffFb92266', 150000000)
735000000000002
// State absent
> eth.getBalance('0xf39Fd6e51aad88F6F4ce6aB88279cffFb92266', 150000001) 735000000000002 // State absent.getBalance('0xf39Fd6e51aad88F6F4ce6aB88279cffFb92266', 150000001)
Error: missing trie node 64380a8de7bd83a6421c9ad45ae596a0eebbc7b504d061f4a57c61742eadc804 (path )
at web3.js:6812:9(39)
at send (web3.js:5223:62(29))
at<eval>:1:15(4)

信息

應用程序不應假定固定的塊間隔為 128。 雖然這是默認設置,但節點可以配置為使用不同的時間間隔。

選擇正確的方案

應用程序通常需要訪問最新的狀態數據,包括非ces、餘額和合約存儲。 雖然應用程序和開發人員偶爾會利用調試跟蹤 API 來獲取歷史區塊,但這些區塊通常可以通過從最近的存儲狀態重新執行事務來重新創建(例如,根據默認的區塊間隔,最多可在 127 個區塊之前執行)。 因此,對於大多數應用而言,運行一個完整節點是一種經濟高效的選擇。

不過,數據分析通常需要使用歸檔節點。 值得注意的是,即使在查詢歷史共識數據(如驗證器信息或獎勵)時,仍然需要一個存檔節點。 這是因為共識數據來自特定區塊高度的區塊鏈狀態。

總而言之:

  • 全節點:適用於大多數需要通過跟蹤 API 訪問最新狀態數據和偶爾訪問歷史數據的應用程序。
  • 存檔節點:對於需要全面訪問歷史狀態的應用程序(如數據分析工具)來說必不可少。

混合選項:上游 EN

如果您的節點主要提供最新數據,但偶爾也提供歷史數據,那麼請嘗試使用 Upstream EN 功能。 此功能可讓您平衡歸檔節點的存儲要求和完整節點的性能。

Chaindata 快照

Chaindata 快照為完全同步提供了更快的替代方案。 快照是同步節點數據目錄的壓縮歸檔文件(如.tar.gz文件)。 下載和提取快照可以讓新節點快速跟上區塊鏈,而無需單獨處理每個區塊。 更多信息,請參閱 使用 Chaindata 快照

快照同步

目前,Kaia 節點不支持 Snap Sync 方法。 不過,使用鏈數據快照在更快的初始同步方面也有不相上下的優勢。

讓這個頁面變得更好