為什麼礦工需要廣播包含比特幣完整交易的區塊?
有誰知道為什麼比特幣要求礦工廣播包含完整交易的區塊?
當使用者想要在 Bitcion 上進行支付時,他/她需要廣播一個簽名的交易,礦工會將所有交易收集到一個交易池中。之後,當礦工成功挖出一個 1MB 的區塊時,他/她將廣播這個區塊,其中包括數千筆交易。我的問題是,為什麼礦工不能只在塊中包含交易雜湊,以便可以包含更多交易?
在目前版本的比特幣核心中,大多數交易只轉發一次,所有交易只驗證一次。
比特幣中的新區塊和交易通常通過使用(庫存)消息向對等方公佈
inv
。因此,塊通過其標頭的散列來標識,而事務由完整事務(也稱為txid
)的散列來標識。接收到inv
消息的對等方將通過請求塊頭、完整塊、緊湊塊、Merkle 塊或交易數據(如果需要)來響應。交易僅在較舊的比特幣核心實現上中繼兩次,這些實現總是在對等點第一次宣佈時請求完整塊。較新的實現使用緊湊塊,它僅傳輸塊頭、交易編碼以及發送節點在收到塊本身時沒有的少數交易。節點不會重新驗證他們已經在他們的記憶體池中擁有的交易,因為交易在節點將它們添加到他們的記憶體池之前得到驗證。
交易的完整列表必須儲存在區塊鏈中,以允許新的對等方獨立驗證比特幣的整個交易歷史。
你在評論中提到
They can still put full transactions to the full blockchain
。這正是他們正在做的事情。完整的區塊鏈只是塊的集合。由於塊包含完整的交易,交易在區塊鏈中。如果塊僅包含交易雜湊,原始交易數據將不得不單獨儲存和傳輸。這增加了更多成本。
基於大多數節點將在其記憶體池中擁有最多交易的假設,已經有人提議允許節點廣播 tx 雜湊列表和塊頭。然後他們可以在驗證和保存之前自己組裝完整的塊,從網路請求任何失去的交易。
但是,我不確定是否實施了任何此類提議。