Blockchain

基本區塊鏈實現:給定節點上的區塊鏈如何與另一個節點上的區塊鏈“同步”?

  • August 18, 2018

以下是我對區塊鏈執行流程的理解:

考慮兩個節點,node1node2。假設有 10 個使用者在node1. 他們正在製造transactions,但由於沒有block開採,這些都沒有真正進行。

當一個blockIS 最終被探勘出來時,這些unconfirmed transactions被放入block並執行 - 並且該塊被添加到區塊node1's鏈中。然後,通過consensus protocol, node1's blockchainin “同步” withnode2's blockchain以便它們都攜帶相同的副本。

我的問題是:這種“同步”是如何發生的?你只是提供node2's blockchain它目前沒有的塊嗎?或者你是否像這樣通過引用傳遞 node1 的區塊鏈:node_2_blockchain = node_1_blockchain

每個節點使用點對點機制將鏈數據**的副本與其對等點同步。**該協議由ÐΞVp2p Wire Protocol定義,指示節點之間如何共享數據。區塊頭、區塊主體、待處理的交易是分開傳輸的(例如,請參閱Go 乙太坊客戶端 Geth 中的同步是如何完成的)。有些以RLP 格式編碼。

最後,整個區塊數據以序列化的形式傳輸到對等節點。這不是參考,否則我們將不會在網路中擁有冗餘數據,並且如果原始節點發生故障,則沒有人可以訪問數據。

每個節點都有自己的本地鍵/值數據庫,其類型取決於每個客戶端軟體的選擇來儲存整個數據。一些非確定性或易失性數據僅儲存在記憶體數據庫或結構中,並且僅在完全穩定後才寫入磁碟。

引用自:https://ethereum.stackexchange.com/questions/54634