Mining-Theory
礦工是否驗證彼此的區塊?
我知道要探勘一個塊,礦工解決一個密碼問題,並且該解決方案可以很容易地被網路上的其他節點驗證,將新塊附加到他們的區塊鏈中。
但是為什麼礦工同意其他一些礦工在他們之前開采了一個有效的區塊呢?他們為什麼不聲稱其他礦工的區塊無效,即使它實際上不是,並爭取時間自己開採一個?是不是因為所有非礦工都會進行驗證,而礦工不想冒險擁有一條廢棄的鏈?
挖礦是一個隨機的、無進展的過程。礦工本質上是在嘗試找到雜湊的部分原像。每個新的(有效的)候選塊都有完全相同的微小機會產生一個新塊。這意味著找到下一個高度的塊與找到與目前鏈尖競爭的塊一樣可能。
然而,尋找下一個區塊的利潤要高得多:目前的鏈尖已經被轉發到網路的很大一部分,所有其他礦工都在努力尋找它的繼任者。挖礦有實際成本,只有最終成為最佳鏈一部分的區塊才能獲得報酬。為了成功地與目前的鏈尖競爭,礦工必須首先找到競爭區塊,然後再找到另一個區塊,以使其成為最佳鏈的一部分。一個礦工試圖找到兩個區塊,而所有剩餘的礦工一起只需要再找到一個區塊來阻止他,這是沒有意義的。相反,礦工將花費幾分之一秒來驗證目前的鏈尖並嘗試找到下一個區塊。
上述行為有兩個例外:首先,當礦工控制了總算力的很大一部分時,理論上他們可以嘗試通過在發布新發現的塊之前開始探勘它們來不成比例地增加收入,賭博之前找到兩個塊剩下的網路可以。這種攻擊被稱為自私挖礦。其次,當一個礦工控制至少一半的算力時,他們可以通過忽略所有外國區塊並在所謂的多數攻擊中擊敗所有其他算力來維持對創建區塊的壟斷。這是比特幣普遍討論的失敗場景,可能會完全破壞對比特幣的信任。