UTXO 模型及扩展模型
目录
- 引言
- 1. 比特币的 UTXO 模型(信封)
- 2. 以太坊的账户模型(全局状态机)
- 3. UTXO 的代表性改进
- (1)Nervos CKB:Cell(盒)
- (2)Cardano:EUTXO(纸)
- (3)Qtum:翻译层(译)
- (4)Sui:双轨对象(双)
- (5)Fuel:严格访问列表(点)
- 4. 执行/并发的直觉对比
- 总结
引言
区块链里最绕人的,往往不是数学,而是“账本怎么记”。比特币用 UTXO(像一次性零钱信封),以太坊用 账户+全局状态;后来的 CKB、Cardano、Qtum、Sui、Fuel 则在不丢掉 UTXO 并行/安全直觉的前提下,给“信封”加上状态、逻辑或调度能力。本文按“先直觉→再对比→最后看演化”的顺序,带你从比特币的 UTXO 出发,理解以太坊账户模型的取舍,再看 CKB 的 Cell(盒)、Cardano 的 EUTXO(纸)、Qtum 的 翻译层(译)、Sui 的 双轨对象(双) 与 Fuel 的 严格访问列表(点)。阅读时只记两个问题:能不能在链上“记状态”?并发靠什么避免冲突?
1. 比特币的 UTXO 模型(信封)
UTXO = Unspent Transaction Output(未花掉的交易输出)
一笔交易消耗若干旧 UTXO(作废),并生成若干新 UTXO(记入账本)。
特点
没有“余额字段”,余额 = 名下所有未花 UTXO之和。
一次性:每个 UTXO 只能被花一次,天然防双花。
钱包通常为找零用新地址(隐私更好,但不是强制;仍可被链上分析关联)。
局限:只会“锁→解锁”,难记中间状态,写复杂合约不便利。
2. 以太坊的账户模型(全局状态机)
账户持有余额与合约存储,可持续更新,合约表达力强。
代价:依赖全局状态与交易顺序,并行性受限,易“状态膨胀”。
3. UTXO 的代表性改进
(1)Nervos CKB:Cell(盒)
把只能存数字的 nValue 一般化为 capacity + data(小盒子)
经济模型:存储付“租金”,抑制状态爆炸。
链下算、链上验:Layer1 只认“结果对不对”,计算可迁到链下/二层。
(2)Cardano:EUTXO(纸)
在 UTXO 上加:
Datum(纸条/状态)——随输出一起保存
Redeemer(解锁参数)——在花费时提交
验证器 Script 用 Datum + Redeemer + 交易上下文 判定能否花费(True / False)。
并行确定性强:不抢同一 UTXO,就能并发执行。
UTXO 图:只有“拆零钱、给谁”——简洁、一次性。
EUTXO 图:在“零钱”上贴规则(脚本),花的时候交参数(Redeemer),所以能写更复杂的条件,但仍保持“不抢同一 UTXO 就能并行”。
每个输出都可以挂脚本当“锁”;以后谁想花它,就要在输入端提供 Redeemer(参数)(还有通常的 Datum/ 纸条=状态,这张图没画出来),脚本会用 Datum + Redeemer + 交易上下文 验证是否允许花费。
疑点:
红色圆点是啥? Redeemer,花费该 UTXO 时提交的参数。
Datum 哪里? 通常存放在输出端随 UTXO 一起保存(这张图省略了“Datum/纸条”那一块)。
为什么金额能对上? 两次交易都满足“输入总额 = 输出总额 + 手续费”的守恒;图里画的是理想化的整分配。
EUTXO = UTXO +(Datum 状态)+(Redeemer 参数)→ 交给 Script 验证,结合交易上下文(时间/输入输出等),返回 True/False 决定能不能花。既能保存状态,又能写逻辑,兼顾了UTXO的并行性和以太坊的可编程性。
Script=锁,Datum=锁旁的便条规则,Redeemer=你交的钥匙/理由,Context=门卫看当天时间/票;最后给你放行/不放行。
(3)Qtum:翻译层(译)
UTXO 验证 + 账户抽象层(AAL) + EVM
交易先按 UTXO 逻辑验证,再被翻译为 EVM 合约调用,桥接 UTXO 并发与合约能力。
(4)Sui:双轨对象(双)
OwnedObject(像 UTXO,单写者):天然并行;同一版本只能“花”一次。
SharedObject(像账户,多写者):读写需全局排序。两者可按业务混用。
(5)Fuel:严格访问列表(点)
交易提前声明要访问的合约 / UTXO / 资源,执行前先点名后上车,减少资源争用;
并引入“合约 UTXO”增强表达力。
4. 执行/并发的直觉对比
比特币 / CKB(UTXO / Cell):本地验证 + 结果上链;只要不争同一 UTXO / Cell,即可并行。
以太坊(账户):对交易顺序先达成共识,再按顺序执行全局状态机;并行受限。
总结
区块链的关键在于“账本怎么记”:比特币用 UTXO(像一次性零钱信封)换取简单、可并行与防双花;以太坊用账户+全局状态获得更强合约能力,但并行受限、易状态膨胀。围绕取舍,各链给 UTXO 加“记忆/规则/调度”:CKB 的 Cell 用 capacity+data 泛化存储并“链下算、链上验”,Cardano 的 EUTXO 以 Datum + Redeemer + Script 做确定性验证,Qtum 以 AAL 把 UTXO 交易翻译给 EVM,Sui 以 Owned/Shared 双轨在并行与共享间切换,Fuel 用严格访问列表“先点名后上车”减少争用。归根到底记住两问:能否在链上记状态?并发靠什么避免冲突?
一句口令概括演化路线:信|盒|译|纸|双|点(BTC、CKB、Qtum、Cardano、Sui、Fuel),按业务在“并行确定性”与“合约表达力”之间选型即可。