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