# 3. Synchronization - Polkadot 網絡互動需求: 許多應用程序需要從 Polkadot 網絡獲取資訊,以進行各種操作。 ### 不同類型的節點需求不同: - $Validator$: 需要訪問完整的網絡狀態,包括歷史數據和最新狀態。 - $Light\ client$: 只需要驗證特定資訊,例如帳戶餘額。 ## 同步協議: #### $Warp\ Sync$: 針對輕客戶,提供最少的必要信息。 - 特點: 只下載 block header 中 authority set 變更的部分,並驗證 GRANDPA。 - 優勢: 同步速度最快,適合只對最新狀態有需求的節點。 #### $Fast\ Sync$: 針對特定需求,快速獲取所需信息。 - 特點: 下載完整的 block header 歷史,並驗證 authority set changes,然後下載並導入狀態,並最終切換到全同步。 - 優勢: 比全同步更快,適合需要執行特定功能的節點。 - 下載區塊頭 -> 驗證 authority set changes -> 下載狀態 -> 切換到全同步 #### $Full\ Sync$: 獲取所有網絡信息。 - 特點: 下載整個區塊鏈,適用於各種節點。 - 優勢: 數據完整,適合 Validator 使用。 ### Consensus Authority Set Polkadot 的核心概念: 在 Polkadot 網路中,每個 consensus engines(驗證節點)都有一組自己的 nodes。 - 節點權限:某些有權力對網絡的狀態做出決定,例如新增一個區塊。 - List of authorities: 有一個 list 表示哪些 public key 的 node 目前有權力。 ### "Runtime"-to-Consensus Engine Message - Authority set 更新: Polkadot 的權威列表會隨著區塊鏈狀態的變化而更新。 - Runtime: Runtime 有權限更改 Authority set,並將 Authority set 的變更訊息打包並更新 block header。 - Polkadot Host: 檢查 block header 並廣撥給 consensus engines。 - Consensus engines: 會根據收到的共識消息,更新其內部的Authority set,並影響後續區塊的生成和驗證。 ## 導入和驗證區塊 ### 區塊驗證 - 確保區塊合法性: 區塊驗證是為了確認一個新產生的區塊是否符合規範,可以被添加到區塊鏈中。 - 一致性檢查: 驗證區塊是否與現有的區塊鏈狀態一致,並且能夠引導系統進入一個新的、有效的狀態。 ### 區塊驗證的流程: - 1. 接收新區塊: 新區塊可以來自其他節點或本機的共識引擎。 - 2. 驗證作者權: - Polkadot 主機負責: 檢查產生這個區塊的節點是否擁有在這個時間點生成區塊的權力。 - 依據共識協議: 根據 Polkadot 的共識協議(如 BABE)來判斷。 - 3. 驗證交易有效性: - Polkadot Host 與 Runtime 合作: Host 將區塊中的交易提交給 Runtime 驗證。 - 驗證: Runtime 會模擬執行這些交易,檢查是否會導致狀態的不一致或違反任何規則。 - 成功: 如果通過上述驗證,則這個區塊被認為是有效的,可以添加到區塊鏈中。 - 失敗: 如果驗證失敗,則這個區塊將被丟棄。 - 狀態更新: 如果交易有效,運行時會更新系統的狀態,Host 會將新的狀態持久化到存儲中。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up