作为最早出现的加密货币之一,比特币采用了UTXO模型作为其底层存储数据结构。未花费交易输出(UTXOs)代表收到但尚未花费的特定数量的比特币。可以将每个UTXO想象成您钱包中的一张独特的钞票,每张都有其独特的价值。
顾名思义,UTXO是比特币交易的输出。它保持UTXO状态,直到被用作后续交易的输入。当您收到比特币时,实际上是收到一个UTXO。您的钱包中显示的余额是您收到的所有UTXO的总和。
UTXO集合包含在任何给定时间比特币区块链上存在的所有UTXO。比特币节点维护这个集合以验证硬币的存在和所有权,从而帮助防止双重花费,这个问题曾经破坏了早期创建去中心化数字货币的努力。
基于UTXO模型的交易由两部分组成:输入和输出。当用户发起新的交易时,他们的钱包会选择足够的UTXOs来覆盖所需金额。在每一个有效的交易中,所有输入值的总和必须大于所有输出值的总和。这些总和之间的差额代表交易费:
$$ \sum_{\text{inputs}} \text{value} = \sum_{\text{outputs}} \text{value} + \text{fee} $$
类似于现金支付,一个人不能通过撕掉一张10美元的钞票来支付5美元。相反,他们必须使用10美元的钞票并收取找零。UTXO功能类似;它们必须全部花费,任何找零将作为新的UTXO返还。
$$ \text{Change} = \sum_{\text{inputs}}\text{value} -\text{Price} - \text{fee} $$
交易费是BTC用户在交易过程中一个重要的关注点。社区中常常听到抱怨小额交易需要额外的费用,有时会消耗高达80%的交易金额。如前所述,交易中涉及的UTXO数量决定了用户的交易成本。
$$ \text{Transaction size} = \text{input count} \times \text{input size} + \text{output count} \times \text{output size} + 10 $$
其中:
交易的总费用通过将交易大小乘以选定的费率来确定。
$$ \text{Total fee} = \text{Transaction size} \times \text{Fee rate} $$
其中: