2.1 UTXO模型
UTXO模型的原理
UTXO模型(比特币使用)
想象一下现金交易:
你的钱包里不是"有500元",而是有一张200元和三张100元的钞票
当你要花350元时,你给出200元和两张100元(共400元)
然后收到50元找零
交易后,你钱包里只剩下一张100元和一张50元的新钞票
这就是UTXO模型的工作方式:
你不拥有"账户余额"(即你拥有现金而非银行的存款),而是拥有特定金额的"未花费交易输出"(UTXO)
每次交易都会完全消耗输入的UTXO,并创建新的UTXO
你的"余额"实际上是所有属于你的UTXO的总和
找零必须作为新的UTXO返回给自己
账户余额模型(以太坊使用)
想象一下银行账户:
你的账户显示余额为500元
当你花350元时,系统只需从你的账户中扣除这个金额
交易后,你的账户余额自动更新为150元,对方的金额增加350元
不需要处理"找零"的概念
这就是账户余额模型的工作方式:
每个地址都有一个账户,存储当前余额
交易只需简单地从一个账户扣除金额并添加到另一个账户
不需要跟踪单独的"支付单位"
账户状态直接存储在区块链上
两者之间的关系
实际上,这两种模型可以相互模拟:
在UTXO系统上,索引器(如ElectrumX)通过汇总属于同一地址的所有UTXO,创建一个"账户视图"
理论上,账户系统也可以模拟UTXO行为,但这样做会增加不必要的复杂性
每种模型都有其优势:
UTXO模型提供更好的隐私性和并行处理能力
账户模型更直观且更容易开发智能合约
简单来说,UTXO就像是拥有不同面额的纸币,必须完整一张张使用;而账户模型就像银行账户,可以精确扣除任意金额。
UTXO模型的举例
理解了UTXO模型后。我们用一个更简单的例子来解释Alice和Bob的UTXO交易:
简单UTXO模型例子:Alice付款给Bob
起始状态:
Alice有一个UTXO价值10比特币
Bob没有比特币
Alice想给Bob 7比特币:
创建交易:
输入: Alice的10比特币UTXO
输出:
7比特币给Bob
3比特币找零给Alice
交易ID: 每个交易会生成一个唯一的ID (假设是TX123)
结果:
Alice的原始10比特币UTXO已被消费(消失了)
创建了两个新的UTXO:
Bob现在拥有一个UTXO: (TX123, 输出#0, 7比特币)
Alice现在拥有一个UTXO: (TX123, 输出#1, 3比特币)
重要概念:
UTXO标识: 每个UTXO由"交易ID+输出索引"唯一标识
全部消费: 交易必须消费整个输入UTXO
新UTXO创建: 每笔交易都创建新的UTXO
这就像Alice给Bob一张10元钞票,Bob给她找回3元 — 原来的10元不再存在,而是产生了新的7元和3元。
注意这跟现实中的现金交易有一些区别,虽然找零机制类似。我们来看看区别:
实际现金交易 vs. UTXO模型
实际现金交易:
Alice给Bob一张10元钞票
Bob从自己钱包拿出3元给Alice
结果:Bob持有原来的那张10元钞票,Alice持有新的3元
钞票本身保持不变,只是改变了所有者
比特币UTXO模型:
Alice有一个10比特币的UTXO
交易后,这个10比特币UTXO被完全销毁
同时创建两个全新的UTXO:一个7比特币给Bob,一个3比特币返回给Alice
原始的"钞票"不再存在,而是被新的"钞票"替代
记住,比特币不记录"谁拥有什么",而是记录"每笔交易如何变更所有权"。每个UTXO是一次性的,必须完全消费,这样更容易验证没有双重支付。验证者只需检查:输入UTXO是否未被花费 + 签名是否有效,不需要跟踪复杂的账户历史或余额变更。
可以这样想:UTXO不是"钞票",而更像是"收据"(比如支票或地契)。每次交易都会撕毁旧收据,创建新收据。
Last updated