Bitcoin-Core
交易是否包含在一個塊中,或者只是一個塊中包含的 Merkle-root 雜湊
在將區塊廣播到比特幣區塊鏈之前,區塊交易是包含在區塊中還是僅它們的雜湊包含在區塊中。當我在網上沖浪時,我遇到了兩張非常模糊的圖像,因為在圖 1 中的交易超出了區塊,而在圖 2 中,交易包含在了區塊中,圖像如下所示:
圖-2
圖 1 中的交易不在塊中,圖 2 中的交易包含在塊中
在您的圖片 1 中,交易未顯示為塊外。它們顯示在*“塊頭”之外*
您的圖片 1 的標題為“簡化的比特幣區塊鏈”。您應該注意不要將簡化圖解釋為完全準確。第二張圖也是簡化的,並不是塊中數據的完整規範。
這兩個圖表都具有誤導性元素。例如第一張圖中的箭頭方向。在第二張圖中包含“工作證明”,就好像它是儲存在塊結構中的數據項一樣。它不是。
交易是否包含在一個塊中,或者只是一個塊中包含的 Merkle-root 雜湊
造成這種混亂的原因是
- 區塊雜湊僅包括區塊頭†。
- 區塊數據包括區塊頭和所有交易數據。
†區塊的雜湊不直接包含交易數據。交易數據是間接包含的。
塊頭中的一項是 Merkle 根。Merkle 根是由交易數據的重複成對散列產生的散列。這樣做的結果是,改變任何交易都會導致不同的區塊雜湊。
看
Merkle 樹根存在並儲存在Block header中。
交易本身就是默克爾樹的葉子。
merkle 樹用於將交易附加到塊頭。
因此,在比特幣中,Block是Block header和Transactions