如下圖所示,綠色和黃色是兩名礦工,他們挖到了的新區塊,同時向比特幣網路廣播公佈。
地理位置靠接綠色礦工的節點,首先收集綠色礦工公佈的區塊。
地理位置靠接黃色礦工的節點,首先收集黃色礦工公佈的區塊。
所以,不同的節點,可能同時會有不同版本的區塊鏈。而這兩個版本的區塊鏈,都被礦工繼續開採。
這個時候,比特幣交易的順序不清不楚。
比特幣網路,必須圍繞“哪個版本的區塊鏈,才是‘正確’的區塊鏈?”,尋求共識。
一個規則:
共識規則是:如果出現分支,那麼比特幣網路上的節點繼續保持兩個分支,任何情況下,最長的鏈被確認為——“正確的”鏈。
一些節點收到黃色區塊。另一些節點先收到綠色區塊。
收到黃色區塊的礦工,繼續沿著他們的分支挖礦,就叫分支A。
收到綠色區塊的礦工,繼續沿著他們的分支挖礦,就叫分支B。
如果,分支B的礦工,先挖到下一個區塊——紫色區塊,向網路公佈了這個訊息。
分支A的礦工,注意到分支B最長,會立刻停止分支A的工作,轉換到B分支。
這樣,所有的礦工,又都在同一個分支上挖礦了。比特幣交易的順序統一。
這樣,所有的交易,最終都會被驗證。
而黃色區塊裡記錄的交易,會繼續保持待定狀態,隨後被放到分支B的新區塊裡。
過時塊:
黃色區塊,就被稱為——過時塊 (Stale block)。
是被礦工成功挖掘的塊,因為不包含在最長鏈中,而被丟棄,等待被重新寫入。
補充:
一筆比特幣交易,需要經過6個區塊的確認。換句話說,其後至少要有5個區塊被驗證。即:該交易一共有“6個確認”。6這個數字,是估算得來的。
如果作惡者想進行雙重支付,那麼他必須控制非常巨大的算力,才能保證他作假的資訊,能寫到最長的分支上。控制這麼巨大的算力,幾乎不可能。
6個區塊的確認,給予比特幣網路充分的時間,去統一所有區塊的順序。
結論:
所以,6個區塊的確認,用來——確認該交易在最長分支的區塊裡。