Signature
儘管有 BIP62/66,為什麼 2015 年 10 月的交易延展性事件可能發生?
最近交易延展性的重新出現是造成大量 Tx 被雙花的原因(2015 年 10 月)。
/r/Bitcoin 發布了一些由 @amaclin 負責的 C++ 程式碼。
我了解,基於此原始碼,交易延展性“利用”只是調整某些 Txs(即非 P2SH Txs)的 DER 簽名並重新廣播 Tx(免責聲明:我不知道 C++,所以這些都是有根據的猜測) .
BIP62 處理了許多問題,其中包括對規範 DER 簽名的要求:我的印像是規範 DER 簽名是在 BIP66 中實現的。
- 有人可以澄清@amaclin 的程式碼在做什麼嗎?
- 如果 BIP66 是在幾週前實施的,為什麼這個漏洞是可能的?
BIP 66 中實現的規範 DER 簽名修復了 BIP 62 的問題 #1(非 DER 編碼的 ECDSA 簽名)
Amacilin 的程式碼利用 BIP 62(固有 ECSDA 簽名延展性)中的問題 #5,並在此處解釋:https ://github.com/bitcoin/bitcoin/commit/a81cd96805ce6b65cca3a40ebbd3b2eb428abb7b
通過要求籤名在拉取請求 6769 中具有低 S 編碼來解決此問題:https ://github.com/bitcoin/bitcoin/pull/6769 。請注意,此修復僅防止變異的交易被中繼(沒有低 S 編碼的交易仍然可以被探勘成塊)。