关于UTXO的Fee计算

一:基础知识

sat 为btc最小单位1 btc = 100000000 sat

假设当前btc价格:¥73,578.16
当前时间矿工费的价格是: 61 sat/byte (不同时间会变化)

钱包的最小转账金额一般是 :

0.0000273 BTC = 2730 sat ≈ 2 元

手续费的计算公式

((148 * nIn) + (34 * nOut) + 10)

其中nIn是input的uxto的个数
其中nOut是output的uxto的个数 ,默认一般是 2

也就是最小的fee 是 花费 1个UTXO的情况:

148 *1 + 34 * 2 + 10 = 226 byte

那就相当于最小的手续费是:

61*226 = 13786 sat ≈ 0.00013 BTC ≈ 10元

结论1:

BTC不适合小额转账,如果转账小于10元的BTC,你转账的付出的矿工费会比你转账的金额高很多。

二:如果把账户中的所有BTC转到另一个账户

情况1:(正常情况)

》假如 uxto 总额为 0.1 btc ≈ 7357.8 元 , fee单价为: 61 sat/byte
》总共 uxto 数量 为 10 个
全部uxto需要的费用是

148 *10 + 34 * 2 + 10 = 1554 byte
1554*61 = 94794 sat = 0.00094794 btc ≈ 69.74 元

所以设置转账数量是 0.1 - 0.00094794 = 0.09905206 ≈ 69.74 就可以转出所有btc
实际到账 7,288.06 元

情况2:(uxto太小太多)

》假如 uxto 总额为 0.00273 btc ≈ 200.8 元, fee单价为: 61 sat/byte
》总共 uxto 数量 为 100 个 每个都是最小单位的数量 0.0000273 btc = 2740 sat

全部uxto需要的费用是

148 *100 + 34 * 2 + 10 = 14878 byte
14,878*61 = 907558 sat = 0.0907558 btc ≈ 6,677 元

此时 全部转出 btc的需要的fee 远大于 btc 的总金额,所以没办法转出。
例子比较极端,说明一个道理,小额的转账会让账户变得难用

情况3:(uxto 有多有少)

假设有uxto 101 个 分别为 总金额为0.02273 ≈ 1,672.4元

0.01 (2个)
0.0000273 (100个)

此时全部转出手续费为

148 *102 + 34 * 2 + 10 = 15,174 byte
15,174*61 = 925,61 sat = 0.0925,61 btc ≈ 6,810.46 元

无法转出

结论2:

BTC的 utxo 越小,个数越多,手续费花费将越高。转出全部的功能未必可能是用户最希望的结果。

你可能感兴趣的:(关于UTXO的Fee计算)