Transactions
將先前金額包含在 SegWit 簽名過程中的理由是什麼?
當花費一個 P2PKH 輸出時,我們散列的“數據”僅包括來自先前交易的輸出腳本,但是當花費一個 P2WPKH(新的序列化)時,我們還包括來自先前交易的金額欄位(BIP-143 規範中的 #6)。為什麼?
它不是特別需要並且可能被認為是多餘的,因為該資訊通常隱含在輸入中引用的交易點中。然而,這種形式的交易序列化允許錢包軟體明確承諾交易中涉及的費用。如果假設您正在使用擁有私鑰的硬體錢包,同時使用僅限手錶的線上錢包,這將特別有用。由於線上錢包知道你的私鑰控制的所有 UTXO,它可以有效地創建一個消耗一些輸入的交易。
要知道你為交易支付了多少費用,硬體錢包必須查詢引用的輸入,獲取該交易的所有輸出(可能非常大),然後只有它會知道這個特定的費用是多少交易。否則,如果不是這樣,創建交易的軟體可能會撒謊,實際上在你不知情的情況下將消耗的比特幣的很大一部分轉化為費用。然而,將輸入金額作為簽名承諾的消息的一部分,意味著硬體錢包軟體明確知道金額,因此可以為使用者提供準確的費用衡量標準。