塊中的“確認”欄位是什麼?
區塊中“確認”欄位的重要性是什麼?
接受區塊鏈中的塊需要多少次確認?
比特幣中的塊,因為它們存在於區塊鏈中,實際上並不包含確認欄位。當您在 bitcoin-rpc 或類似文件中查詢一個塊時,會根據您的客戶對區塊鏈目前狀態的了解,將附加資訊添加到該塊中。
一個純塊只包含五個欄位(其中一些有子欄位):
- 幻數(辨識以下資訊是一個塊)
- Blocksize(直到塊結束要讀取多少字節)
- 區塊頭(對於區塊排序/驗證很重要)
- 版本(此塊遵守的“規則”)
- 前一個區塊雜湊(這個區塊建立的區塊的指紋)
- 交易默克爾根(所有區塊交易的指紋)
- 時間戳(UNIX 紀元)
- “nBits”或塊的 PoW 目標的緊湊表達式
- Nonce(區塊礦工用來尋找有效 PoW 解決方案的數字)
- 交易計數(塊中的交易數量)
- 交易清單
回到你的問題,一個塊的“塊確認”計數只是在該塊之上建構了多少其他塊。以以下三塊長的區塊鍊為例:
藍色塊(啟動區塊鏈,因此也稱為創世塊)具有三個確認(它確認自身,加上建立在其上的兩個塊進一步加強了它的合法性)。綠色塊有兩個確認(它確認自己,加上建立在它上面的一個塊進一步加強了它的合法性)。橙色塊只確認自己,給它一個確認。
如果另一個區塊被添加到區塊鏈:
上一張圖片中的所有區塊(藍色、綠色、橙色)都將收到一個額外的確認,因為它們已被進一步“埋葬”在區塊鏈中。
一旦一個區塊存在(因此它會自動確認自己,給它一個確認),它就可以被包含到區塊鏈中。然而,在網路分叉的情況下,情況並非總是如此。一個區塊的確認次數表明該區塊被覆蓋的難度。
在上面顯示的長度為 4 的區塊鏈中,嘗試覆蓋紅色塊只需要引入一個與紅色競爭的塊作為橙色的孩子:
請注意,將黑色塊引入區塊鏈不一定會覆蓋紅色塊。如果礦工選擇在黑色區塊而不是紅色區塊上進行挖礦,則使區塊鏈 [blue-green-orange-black-…] 成為“最長”(真正“最重”,見文章底部)鏈,那麼黑色塊將取代紅色塊。如果礦工選擇在紅塊之上進行挖礦,使區塊鏈 [藍-綠-橙-紅-…] 成為最長鏈,則紅塊不會被替換。為了確保(假設網路礦工出於某種原因沒有明確偏愛紅色塊,並且即使它不是區塊鏈中的最新塊,也可以在它之上探勘)紅色塊被分叉,攻擊者需要引入兩個從橙色分叉的方塊:
然而,要將綠色區塊從網路中分叉出來,攻擊者需要引入至少三個區塊,這些區塊會從藍色區塊建構替代區塊鏈:
為了獲得更高的成功攻擊機會,需要引入四個區塊,從藍色區塊建構替代區塊鏈:
請注意,這種攻擊會產生(可能是有意的)副作用,即從區塊鏈中刪除橙色和紅色塊。
**早些時候,我在提及競爭性區塊鏈分叉時使用了“更長”一詞。雖然實際上以塊為單位測量的最長鏈幾乎總是最好的區塊鏈,但不一定。**比特幣節點不是計算區塊鏈上的塊數,而是選擇“最重”或累積難度最高的區塊鏈。比特幣探勘涉及通過對潛在塊頭(上面簡要描述)重複執行雙 SHA256 計算來“強制”解決問題,以搜尋具有某些屬性的結果雜湊(可能不正確,但基本上總結為“很多前導零”)。更高的難度意味著,平均而言,礦工必須為每個有效的 PoW 解決方案執行更多的工作。“最佳”或“最重”鍊是總難度最高的鏈(通過將每個區塊的難度相加計算得出)。
總而言之,一個區塊只要存在就可以被區塊連結受,並且只要存在就可以得到一個確認。但是,可以通過區塊鏈分叉從區塊鏈中刪除任意深度的塊。
比特幣中的確認概念是衡量一個區塊或交易在區塊鏈中的深度。它測量頂部有多少塊。更多意味著區塊或交易更難恢復,因為攻擊者至少需要做盡可能多的工作來建構那些確認區塊。
根據定義,1 次確認等同於被包含在區塊鏈中。
如果這個問題恰好是關於
getblock
RPC 或類似 API 的輸出:它只是計算頂部有多少塊。如果鏈的末端高度為 426396,而您要查詢的塊高度為 426391,則結果將顯示有 6 個確認(426396 - 426391 + 1 = 6)。