这期介绍一下比特币区别于以太坊账户的 UTXO(Unspent Transaction Output)模型。
你的 BTC 钱包接收了两笔 BTC 转账,一笔是 3 BTC,一笔是 5 BTC ,共计8个 BTC 。
这时你的钱包里是有两个 UTXO 的,一个是 3BTC 的 UTXO,一个是 5 BTC 的 UTXO。
当你要转账给 A 一笔 6个 BTC 时,矿工会将你的这笔「交易」放到内存池,等待打包,你的两个 UTXO 作为这笔交易的 Input 。
这时,因为交易还未被打包,所以你的 BTC 钱包还是显示 8 BTC 的余额。
你想着干等着也不是事,不如向提莫转一笔 1 BTC 吧。于是你又发起一笔 1 BTC 转账,收款地址为提莫,但这笔交易会被比特币网络定义为「非法交易」。
因为你的两个 UTXO 已经在转给 A 时使用了,现在正在队列中,你却要把 UTXO 拿来再用一次,这就是比特币网络的 Double Spent(双花)。
当你转给 A 的交易成功后,你会收到 2个 BTC 的 「找零」,这 2 个 BTC 作为一个新的 UTXO 重新被你拥有。
你才可以再次发送交易,为了方便大家理解,以上交易过程没有加入矿工费,实际操作中需要考虑矿工费的支出。
小知识:在以上交易中,找零通常会回到一个叫「找零地址」的地址中。
在 imToken 的 BTC 钱包里,可以添加很多的子地址,这个找零地址和子地址是同一回事吗?
找零地址和子地址只是一个助记词的不同推导导路径,子地址通常用来对外收款,找零地址顾名思义就是用来找零的。在 imToken 的 BTC 钱包里,你所有地址的资产是互通的,只要保管好助记词,就掌握了所有 BTC 地址的资产。
如果你是使用明文私钥导入的 BTC 钱包,那就无法生成子地址,找零地址也会回到发款地址上。