比特幣如何選擇獎勵將流向哪個礦工?
假設 100 位具有相似算力的礦工同時嘗試開採同一個區塊並同時完成,比特幣將如何選擇獎勵將分配給哪個礦工?有一些優先協議嗎?
這都是關於機率的。在大約 10 分鐘內,這 100 名礦工中的一名礦工最終將在其他人之前解決給定區塊*的工作證明。*因此,他將把該塊寫入區塊鏈,使用它在coinbase 交易的接收地址欄位中的地址,從而獲得它的獎勵。
如果他們同時開採該區塊會發生什麼
在這種情況下,區塊鏈將在高度X 的塊上臨時分叉,假設 X 是由多個礦工同時開采的塊的數量。這不會永遠持續下去。記住比特幣的黃金法則:. 在這些分叉中,肯定會解決一個(同樣,這一切都與一天結束時的機率有關),這意味著將帶來更多的雜湊值,因此它會比另一個增長得更快(談到區塊高度)。那個將成為目前的區塊鏈。
the longest chain win
*其他分叉會發生什麼?*好吧,它們根本不是有效的區塊鏈。它們包含過時的數據。如果分叉礦工繼續在這些區塊鏈上挖礦,他們將一無所獲,因為他們將在非主要區塊鏈上獲得獎勵
*有一些優先協議嗎?*不,絕對。只是機率。你擁有的雜湊值越多,你就越有可能探勘下一個區塊
*如何計算完成的精確時間(是否使用礦工的電腦時鐘作為時間戳?*來自比特幣維基
如果時間戳大於前 11 個區塊的中位時間戳,並且小於網路調整時間 + 2 小時,則時間戳被視為有效。“網路調整時間”是連接到您的所有節點返回的時間戳的中值。因此,區塊時間戳並不完全準確,也不需要如此。塊時間僅在一兩個小時內準確。每當一個節點連接到另一個節點時,它都會從中獲取一個 UTC 時間戳,並儲存它與節點本地 UTC 的偏移量。網路調整時間是節點本地 UTC 加上所有連接節點的中值偏移量。
比特幣中的時間既不精確也不可靠,每個對等點都可以有自己的時間觀念,每個對等點都有對其他對等點時間的看法,這導致單個對等點了解時間漂移(
adjusted time
)。任何礦工都可以使用過去甚至未來的時間戳進行探勘,但是有一些規則強製過去生成的塊不要太多(使用先前塊的中位時間),並且將來不要生成太多(使用adjusted time
來自已知同行的)話雖如此,採礦是一場競賽,如果同時有許多采礦,網路將根據對等方及其鄰居有暫時的不同觀點(例如,如果你直接連接到一個礦工,你可能會首先從中獲得區塊而如果你沒有直接連接到礦工但你的一個同行有,你很可能也會從那個礦工那裡得到塊,基本上它是關於節點之間的延遲)
那時,您的節點有一個視圖會將這些探勘的塊之一作為您的 TIP,如果您是礦工並且您在其他人在其他分叉上添加塊之前成功找到下一個塊,您可能有機會您的觀點將成為網路其餘部分的有效觀點(如果其他大型礦工不決定忽略您的區塊並嘗試按照自己的願景進行開採,以防他們發現前一個區塊並有這樣做的動機)
好吧,我明白我的解釋可能不太容易理解,因為背後有很多細微差別,無論如何簡短的 ELI5 答案是:當多個礦工同時開採一個區塊時,網路將對其進行整理,等待更長的鏈條從叉子中出現。
編輯 PS 請注意,當所有這些都是我的時候,他們都在自己的觀點中獲得了獎勵,因為他們都認為自己處於鏈條的頂端。但是這些區塊中只有一個會存活下來,因為基於這些分叉的最長鏈將成為有效的,因此其他礦工將不得不將他們自己的觀點回滾到分叉點(因此失去他們認為他們贏得的獎勵)並轉移到現在有效的鏈