在使用 BTC、Doge、LTC、BCH 等账户转账时,你可能会注意到,交易详情中的发起地址与你的账户地址不同,或在你设置的收款人地址之外出现了其他收款地址。
以上图为例,Alice 的账户地址为 bc1p9wzw…hej46,转了 0.00008 BTC 给收款人 Bob,Bob 的地址是 bc1pum2…egs3p。但当 Alice 打开这笔转账记录的详情页时发现,交易发起地址为 bc1pkyccky…st20w,同时在代币转移记录中,除了收款人 Bob 的地址 bc1pum2…egs3p,另外还出现了一个收款地址 bc1pfa…z0se0(专业术语称呼它为找零地址)。
这里有两个你可能会觉得疑惑的点:
- 为什么账户地址与交易详情页中的发起地址不一致
- 为什么除了收款人地址外,还有一个找零地址
先来回答第二个问题,找零地址是什么?回顾一下现金的找零机制,当 Alice 去商店买东西,Alice 从钱包中拿出一张面额为 100 元的纸币给了店员 Bob,但商品只值 80 元,Bob 就会给 Alice 找零 20 元,Alice 接过钱放入钱包中。而数字货币世界里的找零机制也是类似的,如果 Alice 账户地址里有 10 个 BTC,转 8 个给 Bob(收款人地址),而剩下需找零的 2 个 BTC 则会进入钱包自动为 Alice 创建好的找零地址,而不是返回 Alice 原来的账户地址。
在 BTC、Doge、LTC、BCH 网络的找零机制中,每笔交易都由输入(资金来源)和输出(资金去向)组成。找零地址就是当输入金额大于输出金额时,剩余的部分(即找零)被发送到的地址。
这种设计是为了让交易更加安全和私密,避免所有代币都存放在同一个地址中。因为如果只有一个地址,那么一旦外界获取了你的地址,就能追踪到你的所有交易记录。而通过找零地址机制,你的代币分散存储在不同的地址,别人就很难获取你的资产信息。
接下来再来回答第一个问题,为什么账户地址与交易详情页中的发起地址不一致。
以比特币账户为例,账户首页显示的是你的比特币主地址,也叫账户地址,但当你转账时,钱不一定是从账户地址中去出,钱包会从你账户地址中的代币,和找零地址中的代币(过往转账时获得的找零)中选择合适的金额作为转账输入,如果选择的是过往转账创建的找零地址,那么这次交易的发起地址就是以前的找零地址,与账户地址不一样。而如果这一次转账的输入总额超过了转账的数量和矿工费用,剩余的代币便又会被发送到新的找零地址。
但请注意,当你在账户首页查看账户余额时,它会汇集所有地址,包括你用来接收钱的主地址、子地址以及找零地址钱包中的代币数量总和。此外,尽管你有很多不同的地址,但由于钱包是通过一套助记词来管理所有这些地址的。所以只要你备份了这套助记词,你就可以控制钱包中的所有代币,无论它们存放在哪个地址。
需要注意的是,如果你的账户是通过私钥导入的,由于单个私钥无法生成找零地址,找零将会返回至原地址。
相关阅读: