在像比特幣這樣的區塊鏈系統中,每個對等點(參與節點)都保留分類賬的完整副本。對等方在接收並驗證新到達的塊時更新其分類帳副本。然而,這些同行分散在全球各地,這些同行之間的網絡延遲差異很大。因此,區塊鏈系統如何保證在區塊傳播後,所有同行完成更新分類賬副本?區塊鏈系統中不同同級之間的分類賬如何保持一致
1
A
回答
2
比特幣並不能保證所有的分類帳的同時變得更新,以下比特幣blockchain爲您提供一致的總賬:
- 驗證的工作削減新的塊與集交易
- 最長連鎖規則
以上擔保如果不超過51%由一個組控制的網絡,您最終將看到一致的分類帳,例如考慮到您的分類帳在塊序列號1001意味着網絡中的所有節點將看到相同的鏈塊,直到1001.
對於您的問題比特幣使用隨機覆蓋網絡來分發新塊(非常類似於八卦算法)。
UPDATE
見節B.傳播法從here:
爲了更新並同步總賬 副本僅交易( TX )的目的,並且塊( 塊 )消息是 相關。這些消息比在網絡上發送的任何其他消息更爲常見,並且可能會增長到相當大的 大小。爲了避免將事務和阻止消息 發送給已經從其他節點接收到它們的節點,它們是 而不是直接轉發。取而代之的是,當 事務或塊已被完全驗證後,通過向鄰居發送 inv 消息來向鄰居宣佈其可用性爲 。 inv 消息包含發送方已收到的一組事務散列和塊散列 ,現在可用 進行請求。一個節點,接收一個 交易或其本地尚未擁有的交易的inv消息,將發出 a getdata 消息給包含 所需信息的散列的inv消息的發件人。塊或交易的實際傳輸是通過單個塊或tx 消息完成的。圖2顯示了廣播中單跳 的協議流。
相關問題
- 1. 如何保持同一個分區
- 2. 系統分區和系統分區中的priv-app之間的區別
- 3. Android Studio中模塊之間保持不同的構建風格
- 4. 如何區分node.js中的不同操作系統發行版?
- 5. HTTPSURLconnection和Apache之間的證書鏈不同(系統)DefaultHttpClient
- 6. 在Drupal <->第三方系統之間同步分類?
- 7. 如何在保持使用一致的同時分擔責任?
- 8. 如何在不同的分隔符之間分割文本,同時保持Java中的分隔符?
- 9. 雙工系統WCF如何區分不同的通道實例?
- 10. 區分具有相同名稱的不同文件系統
- 11. 同步Eclipse工作區,不同的操作系統,如何?
- 12. 不同活動之間區分過渡
- 13. Symfony的1.4:如何在同一模塊有兩種形式之間的區分
- 14. 2個系統之間的同步
- 15. Android的WifiManager RSSI ScanResult.level是否在不同手機之間保持一致?
- 16. 保持類之間的雙向關係
- 17. 如何刪除系統保留分區
- 18. 如何確保不同系統上的相同浮點數?
- 19. 如何同步Java中的類中的系統時間訪問
- 20. 不同塊之間的VHDL同步
- 21. 如何在不同系統之間進行映射
- 22. 如何在「菱形」關係系統中保持外鍵關係一致
- 23. 如何將時間保存在與系統時間不同的變量中?
- 24. 不同模型類型之間的不同關係Laravel
- 25. 如何在不同機器上運行的兩個不同區塊鏈(Hyperledger Fabric)之間共享fabcar數據?
- 26. 設置系統日期,同時保持系統時間使用PowerShell
- 27. 不同的NSUserDefaults在同一個系統
- 28. Malloc中的操作系統之間的不同結果
- 29. Ansible時區模塊失敗(不同操作系統上的不同原因)
- 30. .GetHashCode保證在系統/平臺版本中保持一致?
謝謝@Artem Barger。所以我的理解是(1)對於同伴來說,爲了驗證新收到的交易或塊,它不需要引用區塊鏈中的任何信息。驗證只是爲了驗證交易或塊中的簽名。(2)如果對等分類賬中的當前塊頭(B)高度爲H,但該對等體接收到高度爲H + 10的新塊(B'),則對等體將主動詢問其鄰居之間的所有塊B和B',然後再將B'加入其分類帳。正確? –
由於最長的鏈規則,一般建議等待6個下一個塊,以確保您選擇了正確的鏈,並且是的序列號爲H + 10的塊不會應用於當前高度爲H的分類帳(同時不確定主動提問部分)。 –
如果一個塊在對等體上丟失了,該對等體將如何響應? –