比特币没有账户概念。在 imToken 里你看到的 BTC 钱包余额是该助记词下所有地址的 UTXO 数量总额。
UTXO 有两种来源,一种是收到别人给你的转账,另一种是你转出时的找零。UTXO(unspent transaction output)中文名叫未花费输出。
假设你的 BTC 钱包分别收到了10笔 BTC 转入(合计3.3个 BTC),分别是:
5笔0.2 BTC金额的转入,3笔 0.1 BTC的转入,2笔 1 BTC的转入 。
如果你的 BTC 钱包没有进行过转出,那此时你的 BTC 钱包余额为3.3个 BTC。其中 UTXO 数量为 10 个。
当你看了这篇文章,希望打赏提莫 3 个 BTC 时。
你通过钱包授权签名,解锁 2个 1 BTC 的 UTXO ,5个 0.2 BTC 的 UTXO ,和1个 0.1 BTC的 UTXO 。其中7个 UTXO (价值3BTC)打包到区块里,这 3个 BTC 作为一个全新的 UTXO 发送给提莫,0.1 BTC 作为矿工费加入这个区块的Coinbase奖励中。(矿工费的支出不占用交易体积)
提莫得到一个金额为 3 BTC 的 UTXO。
你的 BTC 钱包剩余 2个 UTXO(0.1 BTC),合计 0.2 BTC。
关于比特币矿工费的计算:
交易体积( 148byte * input数量 + 34byte* output数量 + 10 (±40)) X 实时矿工费 (单位 sat/b 聪/每字节)
当你动用钱包里的 UTXO 时,它就变成了 input 这么一个状态, output 指向收款地址。在上面这笔转账中,你动用了 8 个 UTXO,所以 input 数量是 8 个。
所以得出结论:
BTC 转账时候需要动用的 UTXO 越多,转账所需要的矿工费也就越高。
如何降低矿工费:
1.减少 UTXO 数量,尽量避免频繁接收小额的 UTXO 。
以上面的3.3 BTC 为例,将你的 10个 UTXO 转到新地址,它在新的钱包地址里变成了 1 个新的 UTXO ,下次用新地址转账, input 也只有一个,所需要的矿工费自然就少了。
2.根据 https://bitcoinfees.earn.com/ 查看实时矿工费,在矿工费低的时候进行转账。
参考《精通比特币》与 Sun 总的分享。