先看一个容易被忽略的点:签名有效,不代表钱一定打给你选的那个人。

Bitcoin Core 在 9 月 25 日往开发分支合了一个改动,针对的是 PSBT 里一种很窄的情况。用 SIGHASH_SINGLE 签名时,它本来该把某个输入绑到对应位置的输出上。可如果那个位置压根没有输出,这层绑定就断了。

后果分两种。老式输入下,签名可能变成一个固定哈希值,同一把钥匙控制的其他未花费输出,在结构条件一样时可能被重复用上。SegWit v0 好一些,签名还锁着具体那枚币和金额,但收款地址仍然没被绑住。

私钥没泄露,这是关键区别。问题出在授权:钱包或签名设备可能给你看一个收款人,签出来的东西却认另一个。

现在这个修复只在开发分支,没有确认会进哪个正式版本。所以真正要跟的变量不是 Core 什么时候发版,而是钱包和硬件签名方什么时候去查自己的签名逻辑。