Mining-Pools
礦工何時向區塊鏈添加新區塊?
我對區塊鏈有點陌生,我正在努力理解。
據我了解,當新交易發生時,它會被添加到礦池中,礦工會優先考慮這些交易(例如按費用金額)並選擇一些交易將它們添加到區塊(最大 1MB)。
但也有可能某些塊是空的(沒有交易)。
那麼,如果某些區塊是空的,這是否意味著新區塊的創建會在特定時間開始呢?(它有像每 5 分鐘或類似的時間表嗎?)
還是有什麼東西會觸發礦工創建一個新區塊?
一筆交易的流程是這樣的:
- 使用者創建和送出交易
- 節點八卦網路中的交易,驗證它們,將它們添加到它們的記憶體池並轉發它們
- 礦工從他們的記憶體池中選擇交易來建構區塊模板
- 找到一個包含已送出交易的新區塊並確認交易
礦工們不斷地開採——他們每個人都在努力尋找新的區塊。當一個區塊頭的雜湊值低於難度目標時,就會發現一個區塊。在散列之前,無法知道候選塊頭是否是有效塊。由於每個礦工都試圖向自己支付挖礦獎勵,他們都有獨特的區塊模板(由於他們的交易不匹配,交易的 Merkle 根不同)。這意味著每個礦工都在搜尋以前看不見的候選區塊並找到一個新區塊基本上歸結為一個獨立的隨機事件,每個區塊模板的機會微乎其微。有時只需要幾秒鐘就可以找到一個新塊,有時則需要一個多小時。難度會自動重新定位,以將預期的區塊間隔保持在 10 分鐘左右。
每當聽到新交易時,礦工都會不斷更新他們的區塊模板。正如您所說,他們選擇費用最高的交易,以建構將收取最多費用的塊模板。
當礦工聽到新區塊時,他們會短暫使用一個不包含任何交易的空區塊模板。礦工這樣做是為了避免包含前一個區塊已經包含的交易,這會使他們的新區塊發生衝突和無效。一旦礦工處理了前一個區塊,他們就會再次建構一個帶有交易的新區塊模板並使用它。因此,如果在前一個塊之後幾秒鐘發現新塊,或者實際上沒有等待確認的交易,我們通常只會看到空塊。