如果兩個礦工用兩組不同的交易探勘兩個區塊會發生什麼?
如果兩個礦工從記憶體池中挑選出兩組不同的交易,它們是不相互依賴的。
那麼兩個礦工可以同時探勘兩個區塊而不創建分叉嗎?
所以礦工 1 完成了區塊,礦工 2 發現該區塊與他的區塊無關,所以他繼續探勘並在大約一秒鐘後將該區塊添加到礦工 1 的區塊中?
我假設只有在開采的兩個區塊都有兩個區塊中都存在的交易時才會發生分叉
不,每個塊必須在標頭中引用它的前驅塊,並且區塊鏈在每個高度只有一個塊。因此,第二個礦工必須修改他們正在探勘的區塊模板,以建立在剛剛發現的區塊之上。他們需要在 Coinbase 交易中更新前代區塊的雜湊值和區塊鏈高度。否則,他們將找到的區塊將與剛剛發布的區塊競爭,而不是寫出區塊鏈。
如果沒有任何交易已經包含在區塊鏈中,那麼塊模板的其餘部分可以保持不變。
但是,您的問題在我看來就像您認為搜尋區塊有進展一樣。挖礦是一個無進展的過程,每次嘗試都可能獨立成功,也可能不成功。因此,對於每個礦工來說,嘗試包含最活躍的交易(按最高費率)並在發布帶有新的最活躍交易的區塊時切換到新的區塊模板將是一種更有利可圖的策略。
哦,具有諷刺意味的是……我剛剛在 Stackoverflow 上回答了完全相同的問題。我將在這裡複製答案:
你可以想像兩個相互競爭的礦工創建區塊。如果礦工沒有區塊 N,他將繼續嘗試探勘該區塊。如果他在挖出區塊 N 後收到,礦工會忽略它,我們在區塊鏈中有一個臨時分叉,有兩個分支,區塊 N+1 將有兩個不同的版本。現在決定哪個分支存活的基本上是探勘速度更快的分支。一個任意的共識規則是較長的鏈總是正確的鏈。當存在更長的鏈時,所有礦工都同意這條鍊是正確的。
之所以可行,是因為在比特幣中探勘一個塊的機率在 10 分鐘內(或一般的塊時間)足夠寬。
下圖可以看作是隨著時間的推移探勘一個塊的機率(以比特幣為單位)。
這就是為什麼在很短的時間內創建區塊鍊是錯誤的。因為如果時間很短(比如 10 秒),在區塊鏈穩定之前會有大量的分叉。