假设算例:0.0100 = 0.0060 + 0.0039 + 0.0001 BTC;费用不是一个输出。
假设算例:0.0100 = 0.0060 + 0.0039 + 0.0001 BTC;费用不是一个输出。

图片资料:官方来源

查看完整图片 ↗

比特币地址会变,常见原因是钱包在一笔交易里同时用到两类地址:给付款方的收款地址,以及把剩余金额收回自己钱包的找零地址。要先把这两者分开:当你付款给别人时,收款输出属于对方,找零通常回到自己;你自己收款时,可轮换地址给对方使用。地址变化本身不等于账户换了,也不等于钱包“自动生成了新账户”。

一笔交易如何分配金额

比特币交易由输入和输出组成。输入整笔消耗此前收到的某个UTXO(未花费交易输出),不能只花其中一部分;输出重新分配金额,可能有一个或多个,分别指向不同地址。输入总额减去全部输出总额,差额就是矿工费。矿工费不是单独列出的一个输出,而是输入与输出之间的差额。

钱包显示的余额,是它控制的多个UTXO之和,不是某个地址上固定不变的数。因此,花掉一笔旧UTXO、拿回一笔找零,余额可以基本不变,但地址已经换了。

用一组假设数字说明

假设你此前收到一笔0.01 BTC的UTXO,现在要付给对方0.006 BTC,找零0.0039 BTC,费用0.0001 BTC:

项目 金额(BTC) 说明
输入 0.01 整笔消耗旧UTXO
输出1:收款 0.006 付给对方的地址
输出2:找零 0.0039 回到你钱包控制的地址
矿工费 0.0001 输入减全部输出
核对 0.01 = 0.006 + 0.0039 + 0.0001 差额即费

这组数字只是假设,用来说明结构,不代表任何真实交易,也不能据此承诺每笔交易都有找零。如果应付金额加手续费恰好等于某个UTXO的金额,就不需要找零,交易可能只有收款输出;输出数量也不一定只有两个,可能因付款对象或钱包构造方式而更多。

找零地址和收款地址各自解决什么

收款地址是给外部付款方使用的地址。你向别人收钱时,对方交易里的收款输出指向你的地址;你付钱给别人时,这笔交易的收款输出属于对方。找零地址则是钱包为收回剩余金额而使用的地址,通常由你自己的钱包控制。

地址轮换主要服务于隐私。链上交易公开可查,如果长期复用同一地址,外部观察者更容易把多笔交易关联到同一实体。使用新地址接收收款、用新地址接收找零,可以降低这种关联。但地址轮换不改变拥有权:只要相关私钥仍由同一个钱包管理,这些UTXO就还是你的。现代钱包常采用分层确定性(HD)结构,从一个根种子派生出一系列子密钥和地址,所以钱包能自动换地址,用户不必逐个记录。

需要补充的是,恢复钱包并不总是只靠根种子:还可能依赖正确的派生路径,设置了附加口令的钱包还需要该口令。地址变了,不代表备份方式可以简化成“记住一个地址”。

怎么判断哪个是收款、哪个是找零

  1. 看输入:是否整笔引用此前的某个UTXO,而不是按金额拆着花。
  2. 看输出:是否有一个输出接近应付金额,另有输出承接剩余金额。
  3. 看归属:承接剩余的地址是否由自己钱包派生、能否由自己花费。
  4. 看差额:输入总额减输出总额是矿工费,不要把它误认成“丢失的找零”。

这四步只能帮助理解交易结构,不能仅凭链上金额断定某个输出一定是找零,因为输出归属最终取决于地址由谁控制。

地址变化的核心是交易输出结构:收款地址给外部,找零地址通常回自己,输入减全部输出的差额是矿工费。找零可能存在也可能不存在,取决于输入金额与应付金额是否恰好匹配。收款地址轮换和找零地址要分开理解;地址轮换改善隐私,不改变谁拥有这些币。

资料来源