JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

交易:UTXO 模型与账户模型

区块链记账的两种方式:像现金一样花掉整张「钞票」,或像银行账户一样更新余额。本文讲清两者如何运作。

记钱的两种方式

想象有两位朋友,各自用不同的方式管理钱。现金卡拉口袋里装着实体钞票;付款时,她递出整张钞票,再等找零。手机银行小本只盯着手机上一个会上下变动的数字。两人随时都清楚自己有多少钱——只是表示方式不同。

每条区块链都面临同样的选择。一笔交易必须更新「谁拥有什么」,而底层记账有两种著名设计。比特币像现金卡拉那样思考,即 UTXO 模型以太坊像手机银行小本那样思考,即账户模型。两者并无谁「更正确」——各自在简洁与灵活之间做了取舍。

UTXO 模型:花钞票、找零钱

UTXO 是 Unspent Transaction Output(未花费交易输出) 的缩写——其实就是「一张你还没花掉的钞票」的术语化说法。在 UTXO 模型里,你的钱包根本不保存余额,而是保存一堆这样的钞票,每张都是一笔被锁定在你密钥下的离散币额。你的「余额」只是所有未花费钞票的总和,就像卡拉的财富是口袋里所有钞票之和。

付款时,你不能把一张钞票撕成两半。你必须把整张 UTXO 当作输入消耗掉,再创建新的 UTXO 作为输出——一份给收款人,一份把找零退还给自己,就像卡拉用一张 20 美元钞票买 14 美元的咖啡,再把 6 美元找零收进口袋。被消耗的钞票从此永远「已花费」;新生成的钞票则成为往后唯一有效的钞票。如果你没有一张足够大的钞票,只需在同一笔交易里把几张较小的钞票凑在一起当作输入即可。

Alice wants to pay Bob 0.7 BTC.
Her wallet holds two bills:

  INPUTS                 OUTPUTS
  [ 0.5 BTC ] ---+---->  [ 0.7 BTC ] -> Bob
  [ 0.4 BTC ] ---+       [ 0.2 BTC ] -> Alice (change)
                         (0.5 + 0.4) - 0.7 = 0.2 left over

The two old bills are now spent.
Bob and Alice each hold one fresh bill.
示例:爱丽丝合并两张钞票,付给鲍勃,并收到找零。

账户模型:一个滚动余额

账户模型抛弃了那一堆钞票,转而维护一份简单的账本:一张巨大的表,把每个地址映射到单一的数字。付款只是这边减、那边加——和银行在两个账户之间挪动数字一模一样。无需计算找零,也无需凑钞票,因为从来没有任何东西被拆成碎片。全世界的余额都存在同一张共享的表里,每个全节点都保有一份副本。

Ledger before:           Alice: 0.9   Bob: 0.0

Alice pays Bob 0.7:
  Alice -> 0.9 - 0.7  =  0.2
  Bob   -> 0.0 + 0.7  =  0.7

Ledger after:            Alice: 0.2   Bob: 0.7

Just two numbers changed. No bills, no change.
同样的付款,账户式做法:修改账本里的两个数字。

为防止有人把同一笔付款重放两次,每个账户还带有一个 nonce——一个随着每笔发出的交易递增 1 的计数器。数字签名把整条指令锁定在你的密钥之下,而 nonce 则保证网络按顺序处理你的付款,且每笔恰好执行一次。

为什么选这个而不是那个?

两种风格各有所长。UTXO 模型并行与隐私上极为出色:由于每张钞票相互独立,许多交易可以同时被校验,你也能把币分散到多个全新地址上,让旁观者难以将它们关联起来。它还让单笔交易的有效性易于独立验证——只需确认输入的钞票存在且尚未被花费即可。

账户模型则在简洁与表达力上极为出色。一个地址、一个余额,对人来说很好理解。更重要的是,单一且持续存在的数字,正是智能合约的理想容身之处:持有资金并记住状态的程序,需要一个稳定的地方来存储这些状态——这正是以太坊选择账户模型的原因。正是这一选择,让功能丰富的链上应用得以自然地构建。

小结

两种模型回答的是同一个问题——*谁拥有多少?*——而且一经记录便不可篡改。它们的差别只在于如何表示价值:要么是一钱包离散、一次性的钞票,要么是一个不断更新的数字。知道一条链用哪种模型,就能看出它的思路:卡拉的现金偏向隐私与并行校验,小本的银行 App 偏向简洁与智能合约。

接下来,我们将看到网络一开始究竟是如何对这些交易达成一致的——成千上万的陌生人在没有裁判的情况下,如何就同一段共享历史取得共识。这正是共识机制的职责。