Difficulty
比特幣:為什麼不能忽略難度參數?
根據最長鏈規則,擁有最多區塊的鏈被認為是比特幣的主鏈。我知道對手需要擁有超過 50% 的網路計算能力才能比網路的其他部分更快地創建其鏈。這些鏈成為最長鏈規則下的主鏈。
然而,這意味著對手堅持網路的難度設置。如果沒有,它可以使用更少的計算能力創建更長的鏈。
我想知道:為什麼不考慮這種設置(對手忽略難度並探勘長鏈)?新加入網路的節點不知道難度,根據最長鏈規則,必須選擇對手的鏈。
嚴格來說,選擇的不是最長的鏈,而是積累了最多工作的鏈(工作證明)。
礦工無法偽造難度的原因是每個節點都會檢查每個新區塊的難度。偽造這一點的攻擊者將永遠無法花費收益,並將與其他節點隔離為已知的壞節點。
新加入的節點確實知道目前的難度。計算起來很簡單,我想你只需要檢查幾個對等節點就可以從區塊鏈中找到相對少量的塊頭數據。這需要很少的時間。
難度根據查找前 2016 個區塊所需的時間每 2016 個區塊調整一次。
因此,(為澄清評論向 Murch 致敬)由於難度僅在每 2016 個區塊發生變化,並且區塊頭包含時間戳和難度目標,因此您只需要在檢查區塊之前幾個區塊的標題。這只是迄今為止在區塊鏈中創建的約 650,000 個區塊的一小部分,因此與同步完整區塊鏈的本地副本相比,它所付出的努力可以忽略不計。
即使新加入的節點是無知的,絕大多數節點都不是新加入的,並且由於幾乎所有節點都獨立檢查和拒絕,導致偽造塊完全無用和無關緊要。
礦工正在生成一組數據的一種散列。精心挑選的數學函式使得這個散列的創建極其昂貴和耗時,但驗證起來卻極其便宜和快速。