只给一个人转 $BTC,区块浏览器却列出好几个输出地址,金额加起来还超过实际转账额。这通常是找零输出。
BTC 的记账方式不是账户余额,而是一笔笔未花费交易输出,也就是 UTXO。一个 UTXO 只能花费一次,被选作输入后不能只花掉其中一部分、把剩下的留在原处。所以当你要付的金额小于手里某个 UTXO 的面额时,钱包会把它整个作为输入,然后产生两笔输出:一笔付给收款方,一笔作为找零回到自己的地址。输入总额与这两笔输出之和的差额,就是手续费。
找零容易被误会成“又给别人付了一笔”,其实它只是交易输出之一,接收地址仍由你的钱包控制。手续费也不是找零,它不会作为一笔付款出现在输出列表里。
核对一笔 $BTC 转账时,真正要看的是三样不同的东西:收款输出、属于你自己的找零输出、手续费。区块浏览器会把所有输出都列出来,但这不等于这些钱都付给了对方;把所有输出金额相加当成转账金额,就会把找零算进去。找零地址通常由钱包自动生成,和原来的地址不一定相同,这也是它常被误认成收款方的原因。
找零出现在输入金额大于收款金额加手续费的时候。如果钱包刚好凑出精确金额,也可能没有找零输出。这是 UTXO 记账方式带来的结果,不是 BTC 独有的特性,但理解它,是看懂一笔 BTC 转账的前提。
