Transactions

如果兩個礦工在其中一個驗證他的區塊並將其附加到區塊鏈時,他們的區塊中有一些相同的交易會發生什麼?

  • August 24, 2022

讓我們假設 2 位礦工 A 和 B 正在添加/驗證交易並建構一個區塊。兩個區塊都包含 50 個相同的交易。所有其他交易都不同。現在一位礦工 B 解決了數學難題並將他的塊附加到鏈上。那麼礦工 A 的另一個區塊中的剩餘交易會發生什麼?這些是否會自動從沒有成功的區塊中刪除,並且礦工需要添加 50 個不同的區塊?還是礦工 A 需要從零開始?這是如何解決的,這是否真的發生在現實中?

讓我們假設 2 位礦工 A 和 B 正在添加/驗證交易並建構一個區塊。兩個區塊都包含 50 個相同的交易。所有其他交易都不同。現在一位礦工 B 解決了數學難題並將他的塊附加到鏈上。那麼礦工 A 的另一個區塊中的剩餘交易會發生什麼?

當礦工 A 收到 B 建構的區塊時,A 將刪除其記憶體池中與該區塊衝突的交易,在您的情況下,至少包括 50 個常見交易。

後續塊候選 A 嘗試建構將從該記憶體池中提取,該記憶體池已更新為不再包含衝突。

這些是否會自動從沒有成功的區塊中刪除,並且礦工需要添加 50 個不同的區塊?

塊一旦生成就無法更改,但您的場景中的 A 從未構造過塊。A 一直在基於其記憶體池建構候選塊(不滿足工作證明),並且記憶體池發生了變化,因此未來的候選者將反映這種變化。

還是礦工 A 需要從零開始?

礦工 A 一直在不斷地“重新開始”。對於 A 中的礦工來說,交易是從記憶體池中提取的,還是它所建構的區塊在兩次嘗試之間發生了變化,這完全無關緊要。和其他任何嘗試一樣,這只是一次新的嘗試。

重要的是要看到採礦是無進展的。沒有一個特殊的區塊是所有礦工都在爭先恐後地尋找的。有無數種潛在有效的解決方案,礦工們都在尋找不同的解決方案。探勘通過構造候選塊、計算它們的雜湊來進行,如果雜湊沒有足夠的零,則繼續另一個候選塊。每次嘗試都有相同的成功機率,與礦工已經嘗試過多少候選人無關,也與其他人已經嘗試過多少候選人無關。

這是如何解決的,這是否真的發生在現實中?

是的,它一直在發生。每次有人找到一個塊時,所有其他礦工都會更新他們的記憶體池,以便他們未來的候選塊反映找到塊之後的狀態。

那麼礦工 A 的另一個區塊中的剩餘交易會發生什麼?

礦工 A 需要建構一個不包含已開採交易的新區塊,並為新區塊“解決數學難題”。

這些是否會自動從沒有成功的區塊中刪除,並且礦工需要添加 50 個不同的區塊?

他們的探勘軟體應該建構一個不包含來自現在探勘的塊的交易的新塊。(如果不是這樣,那可能是一個代價高昂的錯誤,因為它可以成功探勘一個被網路其餘部分拒絕的塊。)它不需要添加正好50 個新塊,在某些情況下如果一些新的交易特別大。

還是礦工 A 需要從零開始?這是如何解決的,這是否真的發生在現實中?

實際上,礦工 A 需要從零開始,是的。它不需要重新驗證已經驗證過的交易,但在挖礦方面,它會再次從頭開始區塊建構和挖礦過程。它在現實中經常發生,因為礦工競爭開采的各個區塊中的交易之間會有很大的重疊。

引用自:https://bitcoin.stackexchange.com/questions/115015