UTXO是什么?比特币的“零钱”系统

CG区块链 知识百科 2025-07-02 10:11:41 0

想象你用现金买一杯15元的咖啡:钱包里有一张10元和一张20元,你只能给20元,对方找你5元。比特币的钱不是存在“账户余额”里,而是像这些一张张的钞票——这就是UTXO。

image.png

UTXO是什么?

UTXO的全称是“未花费的交易输出”,可以理解成比特币世界里的“钞票”。每一张“钞票”(UTXO)都有固定金额,使用时必须整张花掉,不能拆开。比如你有一个0.5 BTC的UTXO,想花0.3 BTC,就需要把这0.5 BTC全部“花出去”,其中0.3 BTC给对方,剩下的0.2 BTC(扣除手续费后)会变成新的UTXO“找零”回到你手里。

和实物钞票不同的是,UTXO没有固定面额,金额可以是任意数字。所有还没被花掉的UTXO加起来,就是当前比特币的总供应量,这个集合被称为“UTXO集”,比特币节点会实时追踪这些“钞票”的状态。

UTXO从哪儿来?

新的UTXO是通过“花掉旧UTXO”产生的。每笔比特币交易都有“输入”和“输出”:“输入”是你想要花掉的UTXO,“输出”是新生成的UTXO(给对方的金额+你的找零)。

那最初的UTXO是怎么来的呢?这要说到“Coinbase交易”——矿工成功挖出一个区块时,会获得新生成的比特币奖励,这笔奖励就是通过Coinbase交易产生的。这种交易没有“输入”(因为是新创造的比特币),但会输出一个或多个UTXO,所有UTXO的“祖先”都能追溯到这样的Coinbase交易。

比特币如何用UTXO花钱?

比特币交易可以组合多个UTXO作为输入,也可以拆分成多个UTXO作为输出,灵活凑出需要的金额。举个例子:

Alice的钱包里有两个UTXO:一个是0.5 BTC,一个是0.7 BTC。她想给Bob转1 BTC,操作如下:
- 输入:把0.5 BTC和0.7 BTC这两个UTXO都“花掉”(总输入1.2 BTC)
- 输出1:给Bob 1 BTC(新UTXO归Bob)
- 输出2:给自己0.199 BTC作为找零(新UTXO归Alice,扣除0.001 BTC手续费)

这里的手续费不是单独的UTXO,而是输入总金额(1.2 BTC)减去输出总金额(1+0.199=1.199 BTC)的差额(0.001 BTC)。

UTXO模型和银行账户有什么不同?

我们平时用的银行账户是“余额模型”:账户里显示有1000元,转账500元后余额变成500元。但比特币没有“账户”,只有UTXO。

  • 透明性:UTXO集公开可查,任何人都能计算出比特币总供应量,确保没有超发;而银行账户的总金额无法公开审计。
  • 交易有效性:UTXO模型中,每笔交易必须引用已存在的UTXO,确保不会花“不存在的钱”;账户模型可能出现透支或退单问题。
  • 隐私性:UTXO可以存放在不同地址中,减少资金关联;账户模型通常要求资金集中在同一个账户,隐私性较低。

为什么比特币要用UTXO模型?

UTXO模型让比特币实现了几个关键设计目标:
- 解决双重支付:每个UTXO只能被花一次,节点通过UTXO集验证交易是否有效,避免“同一笔钱花两次”。
- 可审计性:所有UTXO的历史和总量公开透明,任何人都能验证比特币是否遵守“总量2100万枚”的规则。
- 高效验证:节点只需维护UTXO集,就能快速判断交易是否合法,无需追溯所有历史交易。

UTXO就像比特币的“数字现金”,通过“整张使用、找零新生”的方式,让交易既透明又安全,是比特币区别于传统金融系统的核心设计之一。