什么是UTXO
UTXO:未花费的交易输出,英文全称 Unspent Transaction Output.
自定义UTXO,即可以在发送交易时自主选择具体哪些UTXO,使用更加经济的UTXO组合或者指定花费特定UTXO进行交易。
比特币的交易是由交易输入和交易输出组成,UTXO是交易输入和输出的一部分,每一笔交易都会消耗旧的UTXO并产生新的UTXO。UTXO是Unspent Transaction Output 的简称,即未花费的交易输出。
BTC的UTXO模型和以太坊或银行卡的账户/余额模型有很大的不同。基于UTXO的BTC余额是由若干个UTXO中的BTC数量相加而成。
例如:
A 向 B 转账 1BTC
C 向 B 转账 0.5BTC
此时 B 的BTC地址上有2个UTXO,B的余额就是1.5BTC,B的钱包中有2个UTXO可以使用,分别是:
UTXO1:1BTC
UTXO2:0.5BTC
如果采用的是账户/余额模型,比如以太坊在账户中存储的是一个汇总的ETH余额,即1.5ETH。
UTXO类似于我们的钱包中不同面额的纸币,例如5张100元、6张50元......钱包中有多少钱,无非就是把这些不同面额的纸币加起来后的一个总金额。
当明白了UTXO的概念后,使用UTXO转账的过程就容易理解了,当要进行转账时,支付的就是UTXO或UTXO组合。其实,使用UTXO转账的过程,和我们平时拿纸币去购物支付的过程是一样的。
例如,在上例中,B的地址中有两笔UTXO,分别为 1BTC 和 0.5BTC,现在,B 要向 D 转账0.3BTC,那么,理论上来说 B 有两种转账方案(为了便于理解,转账费用暂不考虑):
第一种方案:B 使用1BTC的UTXO给D转账0.3BTC,会收到0.7BTC的找零;
第二种方案:B 使用0.5BTC的UTXO给 D 转账0.3BTC,会收到0.2BTC找零;
如果 B 向 D 转账1.4 BTC,则需要这两笔 UTXO 都花费出去,然后会收到 0.1BTC 的找零。(为了方便解释,以上案例忽略了矿工费)
矿工费的多少与钱包的类型,花费UTXO的数量,以及输出新UTXO的数量有关。
TokenPocket 的 BTC 钱包是支持自定义 UTXO 功能的,即在转账交易时可以自主选择具体使用哪个/哪些UTXO,从而使用更加经济的UTXO组合或者指定花费特定 UTXO 来进行交易,以达到节省矿工费等目的。