Block

為什麼礦工需要廣播包含比特幣完整交易的區塊?

  • April 27, 2018

有誰知道為什麼比特幣要求礦工廣播包含完整交易的區塊?

當使用者想要在 Bitcion 上進行支付時,他/她需要廣播一個簽名的交易,礦工會將所有交易收集到一個交易池中。之後,當礦工成功挖出一個 1MB 的區塊時,他/她將廣播這個區塊,其中包括數千筆交易。我的問題是,為什麼礦工不能只在塊中包含交易雜湊,以便可以包含更多交易?

在目前版本的比特幣核心中,大多數交易只轉發一次,所有交易只驗證一次。

比特幣中的新區塊和交易通常通過使用(庫存)消息向對等方公佈inv。因此,塊通過其標頭的散列來標識,而事務由完整事務(也稱為txid)的散列來標識。接收到inv消息的對等方將通過請求塊頭、完整塊、緊湊塊、Merkle 塊或交易數據(如果需要)來響應。

交易僅在較舊的比特幣核心實現上中繼兩次,這些實現總是在對等點第一次宣佈時請求完整塊。較新的實現使用緊湊塊,它僅傳輸塊頭、交易編碼以及發送節點在收到塊本身時沒有的少數交易。節點不會重新驗證他們已經在他們的記憶體池中擁有的交易,因為交易在節點將它們添加到他們的記憶體池之前得到驗證。

傳統中繼、高頻寬和低頻寬緊湊塊的比較 通過緊湊塊常見問題解答

交易的完整列表必須儲存在區塊鏈中,以允許新的對等方獨立驗證比特幣的整個交易歷史。

你在評論中提到They can still put full transactions to the full blockchain。這正是他們正在做的事情。完整的區塊鏈只是塊的集合。由於塊包含完整的交易,交易在區塊鏈中。

如果塊僅包含交易雜湊,原始交易數據將不得不單獨儲存和傳輸。這增加了更多成本。

基於大多數節點將在其記憶體池中擁有最多交易的假設,已經有人提議允許節點廣播 tx 雜湊列表和塊頭。然後他們可以在驗證和保存之前自己組裝完整的塊,從網路請求任何失去的交易。

但是,我不確定是否實施了任何此類提議。

引用自:https://bitcoin.stackexchange.com/questions/74441