Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第七章:交易——产权转移的数字表达

引子

在中国农村的一些地方,至今还保留着一种古老的土地交易方式。

买卖双方坐在桌前,卖方拿出一张旧契约——上面写着这块地是谁卖给他的、什么时候、多少钱。然后他在这张契约的末尾写下新的内容:某年某月某日,本人将此地转让给某某,价格若干。写完之后,双方签字,中间人签字,按上指印。从此,这张纸就归买方持有。

下一次这块地再被转让时,新的买家不需要去查什么“土地登记数据库“。他只需要展开这张纸,从头到尾读一遍——每一次转手都写在上面,每一次都有签字和指印。这条从最初到最新的转让链条,就是产权的全部证明。纸可能会发黄,字迹可能会褪色,但只要签字和指印还能辨认,在当地民间交易的语境中,这张契约就是一份强有力的凭证。

这种契约方式在现代人看来原始而笨拙,在现代法律体系下也并不等同于法定登记证明。但它有一个今天的电子支付系统不具备的优点:产权的证明不依赖任何第三方机构。不需要房管局的数据库,不需要银行的确认,不需要任何中间人的背书。那张纸本身就是凭证,签名链本身就是产权链。

2008年,中本聪在设计比特币的交易机制时,选择了一种在本质上与这张土地契约惊人相似的结构。他没有选择银行的做法——维护一个中心化的账本,交易就是修改账本上的数字。他选择了一种更古老、更根本的方式:让“钱“本身成为一个可以被传递的对象,让产权的证明刻写在对象自身之上。

上一章我们明确了比特币的定义——点对点的电子现金。这一章,我们打开这台机器的引擎盖,看看“钱“在比特币中到底是如何从一个人的手里转移到另一个人手里的。

硬币铸造术:UTXO 模型的精妙设计

一枚电子硬币的真实面貌

白皮书第二节开宗明义:

“We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin.”

“我们将电子货币定义为一条数字签名链。每一位所有者通过对前一笔交易的哈希和下一位所有者的公钥进行数字签名,并将签名附加到这枚货币的末尾,来将货币转让给下一位所有者。”

这段定义是理解比特币交易机制的钥匙。让我们一个词一个词地拆解。

“A chain of digital signatures”——一条数字签名链。一枚比特币不是一个余额数字,不是数据库中的一行记录。它是一个有历史的对象。从它被创造的那一刻起,每一次转手都通过一笔新的交易来完成,新交易引用前一笔交易的输出,并附上持有者的数字签名。这些交易通过引用关系首尾相连,构成一条可追溯的链条——谁创造了它,谁传递给谁,全部记录在案。时间顺序则主要由区块确认来近似锚定。

这和你钱包里的纸币有一个根本性的相似之处:它是一个可以被传递的独立对象。你把一枚硬币从左手放到右手,硬币还是那枚硬币。你把它递给面前的人,硬币从你的手里消失了——不是因为某个数据库修改了你的“余额“,而是因为物理对象离开了你的控制。更重要的是,这枚硬币自身就携带着所有必要的信息:它的面值写在上面,它的真伪可以通过物理特征来鉴定。它不需要“联网查询“才能证明自己是真钱。

比特币的交易机制模拟的正是这种物理传递的逻辑。在比特币的术语中,这些“电子硬币“有一个技术名称:UTXO,即 Unspent Transaction Output——未花费的交易输出。在 Bitcoin Core 的实现中,这个 UTXO 条目的类名更加直白:Coin,硬币。

消费旧硬币,铸造新硬币

理解UTXO模型的关键在于理解一句话:比特币中不存在“转账“这个操作。

这听起来不可思议——比特币不就是用来转账的吗?准确地说,比特币中的每一笔交易不是“从A的余额中扣除一笔钱,加到B的余额上“。它做的事情完全不同:销毁一组旧的硬币,同时铸造一组新的硬币。

用一个具体的例子来说明。

假设张三有一枚面值为50的UTXO(一枚50元的电子硬币)。他要付给李四30元。交易过程如下:

  1. 张三拿出那枚面值50的硬币作为输入(input)——这枚硬币将被销毁。
  2. 交易产生两个输出(output):一枚面值30的新硬币归李四,一枚面值20的新硬币归张三自己(找零)。
  3. 两个输出之和(30+20=50)等于输入(50)。如果输出总额小于输入总额,差额就是隐含的交易手续费,由出块矿工在该区块的创币交易(coinbase transaction)中领取。

交易完成后,那枚原始的面值50的UTXO不再存在——它已经被“花费“了,从此在比特币网络的记录中被标记为已消费。取而代之的是两枚全新的UTXO:一枚30归李四,一枚20归张三。

注意这个过程的对称性:没有任何“余额“被修改。没有任何“账户“被读取或更新。发生的只是一件事——旧硬币被销毁,新硬币被创造。每一枚新硬币都是一个全新的、独立的对象,它携带着自己的面值和使用条件,与网络中其他所有硬币完全无关。

白皮书第九节对此做了进一步说明:

“Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs.”

“虽然可以逐一处理每枚货币,但为每一分钱的转账都创建一笔单独的交易将非常笨拙。为了允许价值的分割和合并,交易包含多个输入和输出。”

一笔交易可以有多个输入(消费多枚旧硬币),也可以有多个输出(铸造多枚新硬币)。这就像你用一张50元纸币和两张20元纸币(三个输入,总额90元)去买一件80元的商品,收银员给你一件商品和一张10元纸币(两个输出——80元归商家,10元找零归你)。旧纸币被收走,新纸币被发出,但总金额保持平衡。

这种“消费+铸造“的机制,使得比特币中的价值可以被任意分割和合并。一枚面值100的UTXO可以被拆成十枚面值10的;反过来,十枚面值10的也可以被合并成一枚面值100的。灵活性完全不逊于实体货币——甚至更强,因为比特币的UTXO没有固定面额的限制,金额以 satoshi(一亿分之一比特币)为最小整数单位,在此精度范围内可以任意分割和组合,只要总账平衡。

交易即法律行为

理解了UTXO的机制之后,我们需要上升一个层次来审视它的含义。

一笔比特币交易不仅仅是一个技术操作。在形式结构上,它与一份产权转让协议惊人地相似——一个近乎不可逆的产权转移事件。

想想现实世界中的产权转移是如何发生的。你卖一辆车,需要签一份转让协议。协议上写着:甲方将某某牌照的车辆转让给乙方,转让价格为若干。双方签字,协议生效。从此,这辆车在法律上属于乙方。甲方不能事后反悔说“我没签过“——因为签名在那里,白纸黑字。

比特币交易的结构与此高度类似。每一笔交易就是一份数字化的产权转让声明。它声明:持有人将某些UTXO的控制权转让给新的所有者。这份声明由持有人的数字签名来授权,一旦被网络确认,就近乎不可逆转。

更准确地说,一笔比特币交易在形式结构上具备了与产权转让协议类似的要素:主体可辨识(通过公钥或脚本条件标识的交易双方)、意思表示可验证(通过数字签名证明交易确实由私钥持有者授权)、标的确定(具体哪些UTXO被花费、新的UTXO面值多少、归谁所有)、符合协议规则(输入总额不小于输出总额、签名有效、UTXO未被重复花费)。当然,这种结构上的相似不自动等于现实法律上的效力——法律行为还涉及真实身份确认、意思自由、合法合规等要件——但在协议层面,比特币交易已经以密码学方式满足了自身规则体系内的全部验证条件。

白皮书第一节明确指出了这种不可逆性的重要性:

“Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers.”

“计算上不可行的逆转交易将保护卖家免受欺诈,而常规的托管机制也可以轻松实现以保护买家。”

在传统金融体系中,交易的可逆性——信用卡的退款机制、银行转账的撤销流程——被视为消费者保护的手段。但中本聪看到了硬币的另一面:可逆性对卖家来说是一种系统性风险。任何交易都可能在事后被撤销,意味着商家永远无法确定一笔交易是否真正完成。这种不确定性不仅增加了信任成本,还让小额交易在经济上变得不划算——因为每一笔交易都必须为潜在的纠纷调解预留成本。

比特币交易的近乎不可逆性,本质上是在模拟物理世界中现金交易的终结性(finality)。确认数越多,逆转交易所需的计算成本越高、概率越低——白皮书原文的措辞是“计算上不可行的逆转“(computationally impractical to reverse),这是一种概率型终局性,而非数学上的绝对不可逆。但在工程实践中,经过足够确认的交易通常被视为最终的——没有“退款“按钮,没有30天的争议期,没有第三方仲裁。这种终结性不是缺陷,而是特性。它是商业活动中最古老、最可靠的交易形式的数字化重现。

数字签名:不是密码,而是签署

在UTXO模型中,数字签名扮演着至关重要的角色。但很多人对“数字签名“的理解是错误的——他们把它等同于“密码“或“口令“。

密码是什么?密码是一个只有你知道的秘密。你输入密码来证明“我是我“。但密码有一个致命缺陷:它依赖共享秘密。你知道密码,验证方也持有密码的哈希值或其他验证材料。如果验证方的数据库被泄露,你的密码就面临暴露风险。更重要的是,密码只能证明身份,不能证明意图——你输入密码可能是要登录,可能是要转账,可能是误操作,密码本身不携带任何关于“你想做什么“的信息。

数字签名完全不同。

数字签名是一种基于公钥密码学的签名机制。你有一把私钥(只有你知道)和一把公钥(所有人都可以知道)。当你要授权一笔交易时,你用私钥对交易的关键内容进行签名。这个签名有三个特性:

第一,它证明了你的身份。只有持有对应私钥的人才能产生与公钥匹配的签名。

第二,它绑定了你的意图。签名不是对一个空白文档的签署,而是对这笔具体交易的签署。签名会绑定其承诺的关键交易字段(具体范围由 SIGHASH 类型决定),篡改这些字段中的任何内容都会使签名失效。这意味着签名者不能说“我签了字但我不是要授权这笔转账“——你的签名与你同意的交易内容是密码学绑定的。

第三,它可以被任何人验证,但不能被任何人伪造。公钥是公开的,任何人都可以用公钥来验证签名的有效性,但没有私钥,任何人都无法伪造一个有效的签名。

这三个特性组合在一起,使得数字签名在法律意义上等同于——甚至优于——传统的手写签名。一个手写签名可以被伪造、可以被否认。但一个数字签名是密码学可验证的:要么私钥持有者确实签署了这笔交易,要么签名无效。没有中间地带。

在比特币的语境中,数字签名就是产权转移的授权机制。你不是输入一个“密码“来“解锁“你的比特币——你是签署一份产权转让声明,声明你同意将特定的UTXO转移给特定的接收者。这种“签署“行为的法律含义与在一份合同上亲笔签名完全一致:一旦签署,就代表了签署者的真实意思表示。

锁与钥匙:脚本的优雅

UTXO模型中还有一个精妙的设计:每一枚UTXO都携带着自己的使用条件。

在比特币中,这些条件被编码在两段脚本中:锁定脚本(也叫输出脚本或scriptPubKey)和解锁脚本(也叫输入脚本或scriptSig)。为便于理解,这里先用传统的 scriptPubKey/scriptSig 模型讲解;在现代比特币交易中(如 SegWit 和 Taproot),花费证明也可能位于独立的 witness 数据区。

锁定脚本附着在UTXO上,规定了“谁有权花费这枚硬币“。经典的锁定条件如 P2PKH(Pay-to-Public-Key-Hash):提供与某个公钥哈希对应的有效签名。但锁定条件远不限于此——脚本系统被刻意设计为无状态、非图灵完备,但仍可编码多种有限的条件。

解锁脚本则在花费UTXO时提供,它必须满足锁定脚本中设定的条件。如果解锁脚本能让锁定脚本的验证通过,这枚UTXO就可以被花费。如果不能,交易无效。

用物理世界的类比来理解:每枚UTXO就像一个保险箱,锁定脚本是保险箱上的锁,解锁脚本是打开锁的钥匙。制造保险箱的人(即创造这枚UTXO的上一笔交易的发起者)决定了装什么样的锁——是一把简单的钥匙锁(最常见的“支付到公钥哈希“模式:只需提供对应的公钥和签名),还是一个需要两把钥匙才能打开的双重锁(多重签名:比如三个合伙人中至少两个签字才能动用公司的资金),或者一个需要在特定时间之后才能打开的定时锁(时间锁:资金在某个区块高度之前不能被花费,可以用来实现遗嘱、分期付款等逻辑)。只有拿着正确钥匙的人,才能打开保险箱,取走里面的价值,然后铸造新的硬币。

这种设计的威力在于:锁的条件是由创造UTXO的人定义的,而不是由协议全局规定的。发送方在创造一枚UTXO时,实际上是在为这枚硬币定制一套专属的使用规则。这意味着比特币的交易条件不是千篇一律的“输入密码即可转账“,而是可以为每一枚硬币量身定制的程序化合约。每枚硬币都携带着自己的“法律条文“——什么条件下可以被花费,由锁定脚本一锤定音。

这个设计的优雅之处在于:每枚UTXO是自包含的。 它的使用条件刻写在自身之上,不引用任何外部状态。验证一枚UTXO是否可以被花费,核心上要检查:这枚UTXO是否存在且未被花费过,提供的解锁脚本是否满足锁定条件,同时还需满足金额守恒、锁定时间和其他协议规则。但关键在于:不需要查询任何“账户余额“,不需要读取任何“全局状态树“,不需要与网络中其他无关的UTXO发生交互。

这种自包含性是UTXO模型最深刻的架构优势之一。我们将在接下来的架构对比中进一步展开这一点。

产权链:不可断裂的历史

现在,让我们把前面所有的组件组合在一起,看看一个更宏大的图景。

每一枚比特币都有一条完整的历史——从它被创造的那一刻起,直到它当前的持有者。

这条历史始于一笔特殊的交易:创币交易(coinbase transaction)。白皮书第六节描述了它:

“By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block.”

“按照惯例,区块中的第一笔交易是一笔特殊交易,它创造一枚新的货币归区块创建者所有。”

每一个区块的第一笔交易,就是一笔创币交易。它不消耗任何现有的UTXO——或者更准确地说,它的输入不是对之前交易输出的引用,而是一个特殊的“创币输入“(coinbase input),代表了货币从协议预设规则中“无中生有“的过程。它的输出是一枚或多枚全新的UTXO,归出块者所有。这是比特币唯一的“发行“方式。每一枚在网络中流通的比特币,最终都可以追溯到某个区块中的某笔创币交易。

从创币交易开始,这枚硬币每被转手一次,就经历一次“销毁+铸造“的过程。旧的UTXO被消费,新的UTXO被创造。但新UTXO的交易记录中保留着一个指向旧交易的引用——就像那张土地契约上每一次转手都写在前一次的下面。

如此一来,从创币交易到最新的持有者,每一步转移都被数字签名所记录、所证明。这就是白皮书所说的“a chain of digital signatures“——数字签名链。任何人都可以沿着这条链向回追溯:这枚硬币是谁创造的?什么时候创造的?经过了谁的手?每一次转移是否有合法的签名授权?每一步都公开透明、密码学可验证。

值得注意的是,白皮书第九节还指出了一个容易被忽略的要点:

“It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction’s history.”

“值得注意的是,扇出问题——即一笔交易依赖于多笔交易,而那些交易又依赖于更多交易——在这里不是问题。永远不需要提取一笔交易的完整独立历史副本。”

这句话的含义是:对于一个已经同步完成的节点来说,验证当前交易不需要实时回溯整条历史链。因为每一笔进入UTXO集合的硬币,都已经由网络在之前的区块中完成了追根溯源的验证。节点只需维护一个实时的“未花费硬币清单“(UTXO Set),即可实现快速的交易验证。当然,一个全新的节点从零启动时(即“初始区块下载“,IBD),仍然需要从创世区块开始完整验证全部历史,以建立可信的UTXO集合。但一旦同步完成,后续的交易验证就不再需要重复这个过程。这是一种优雅的效率设计——历史验证的工作量被分摊在过去,而不是在每次交易时重复承担。

这就是一条完整的产权链(chain of ownership)。它的可靠性不依赖任何第三方机构——不需要央行来确认你的比特币是“真的“,不需要银行来证明你是合法持有者。数字签名链本身就是产权的全部证明,正如那张从村口传到村尾的土地契约一样。

白皮书第二节对此做出了精确表述:

“A payee can verify the signatures to verify the chain of ownership.”

“收款方可以通过验证签名来验证所有权链。”

收款方——也就是交易的对手方——不需要信任付款人的自我声明,不需要查询某个中心数据库,只需要验证签名链。签名链完整且有效,产权就是合法的。这是一种纯粹基于密码学证明的产权验证机制。

把这个概念放在更宏观的视角下审视:传统金融体系中,产权的确认依赖于一个层层嵌套的信任结构。你相信银行的账本是对的,银行相信央行的清算系统是对的,央行相信会计审计是可靠的。链条中的任何一环出问题,产权的确认就会动摇。而在比特币中,产权链是自证的——不依赖于任何外部机构的信誉,主要依赖密码学证明、共识规则和公开可验证的链上历史。密码学不会倒闭,不会被收买,不会在周末休息。

为什么不存在“比特币余额“

理解了UTXO模型之后,一个常见的困惑可以被解开:为什么比特币钱包里显示的“余额“不是你实际拥有的比特币?

严格来说,比特币协议层面不存在“余额“这个概念。

你的“余额“只是你的钱包软件为了方便显示,把所有属于你的(即你持有私钥的)未花费UTXO的面值加在一起得出的一个数字。就像你把口袋里所有的硬币和纸币加在一起,说“我身上有247元“——这个“247元“不是存在于任何地方的一个数字,它只是你手里那些纸币和硬币面值的总和。

如果你有三枚UTXO,面值分别是0.5、0.3和0.2,你的钱包会显示“余额1.0“。但在协议层面,不存在一个叫做“1.0“的东西。存在的是三枚独立的硬币,散落在区块链的不同位置上,唯一的共同点是它们的锁定脚本(scriptPubKey)都对应你控制的私钥。当你要发起一笔0.7的支付时,钱包会自动选择用哪些硬币来凑够这个数——也许用0.5和0.3(总计0.8),然后找零0.1归你自己。这个选择过程叫做“币的选择“(coin selection),完全由钱包软件在本地完成,与比特币网络无关。

这不是一个无关紧要的技术细节。它揭示了UTXO模型和账户模型在最底层的哲学差异:UTXO模型中,“钱“是具体的对象;账户模型中,“钱“是抽象的数字。 前者你是持有者,后者你是债权人。前者你的财富证明在你自己手里,后者你的财富证明在别人的数据库里。这个差异的后果,远比表面看起来要深刻得多。

伪直觉的陷阱:UTXO模型常见误解

“账户模型更自然”

这可能是关于UTXO最流行的误解:账户模型更直觉、更简单,UTXO模型是一种不必要的复杂化。

持这种观点的人通常会说:我每天用银行账户,很好理解——账户里有多少钱就是多少钱,转账就是从一个账户扣、另一个账户加。为什么比特币要搞出UTXO这么复杂的东西?

这种“直觉“是被现代金融体系塑造出来的,而不是天然的。

事实上,在人类几千年的货币史中,“账户“是一个相对晚近的发明。在纸币和硬币的时代——占据了人类货币史的绝大部分——人们使用的就是UTXO模型。你口袋里有三张十元、两张五元和五个一元硬币,总共45元。你买一杯15元的咖啡,掏出两张十元,收回一张五元。旧纸币被“花费”,新纸币(找零)被“铸造“。没有任何“账户“被修改,没有任何“余额“被更新。

银行账户的出现——一个中心化机构为你记录一个余额数字——是近代金融基础设施发展的产物。它确实很方便,但它带来了一个隐含的前提:你必须信任那个记账的人。你的“余额“不是你持有的东西,而是银行欠你的债。如果银行说你的余额是0,你手里没有任何“东西“可以证明它错了。

UTXO模型把“钱“还原为一种可以被持有的对象,而不是依赖于某个机构的账面记录。在这个意义上,UTXO不是比账户模型更复杂,而是更原始、更根本——它回到了货币的本来面目。

所谓“账户模型更自然“,其实是“银行更自然“的另一种说法。如果你认为货币的天然存在形式就是银行数据库中的一行记录,那账户模型确实很自然。但如果你回到货币的第一性原理——一种可以在人与人之间直接传递的价值载体——UTXO才是忠实于这个原理的设计。中本聪创造的是“电子现金“,不是“电子银行账户“。选择UTXO模型,正是这个定义在技术层面的自然延伸。

“UTXO就是比特币的技术实现细节”

另一种常见的说法是:UTXO只是一种底层的技术实现方式,对普通用户来说无关紧要。反正钱包软件会把一切处理好,用户看到的还是一个“余额“数字。

这种说法忽略了一个关键事实:数据结构的选择决定了系统的根本属性。

在第三章中,我们详细分析了UTXO模型与账户模型的对比。这里我们从交易的角度做一个简要的回顾,因为这些属性直接关系到比特币作为支付系统的能力。

自包含性。 每枚UTXO是一个独立的状态单元。它知道自己的面值,知道自己的使用条件,不引用任何全局状态。验证一笔交易只需要检查它涉及的UTXO——不需要遍历整个网络的状态。这意味着什么?意味着交易验证可以高度并行化。你验证你的交易,我验证我的交易,我们互不干扰——因为我们花费的是不同的UTXO,它们之间没有任何依赖关系。

无账户余额式的全局状态。 比特币网络不需要维护一棵巨大的“全局状态树“来记录每个“账户“的余额。它维护的是一个UTXO集合——当前所有未被花费的硬币的集合。一枚UTXO被花费后就从集合中移除,新产生的UTXO加入集合。状态的增长是可控的:旧的UTXO不断被消费、移除;新的UTXO不断被创建、加入。系统天然地进行着“状态回收“。

天然并行。 因为每枚UTXO是独立的,消费不同UTXO的交易之间数据依赖为零。这使得比特币的交易处理可以大规模并行——理论上,只要两笔交易不试图消费同一枚UTXO,它们就可以同时被验证和处理。这不是一个需要复杂工程优化才能实现的特性,而是数据结构本身赋予的天然能力。

冲突检测的简洁性。 在UTXO模型中,判断两笔交易是否冲突极其简单:它们是否试图花费同一枚UTXO?是,则冲突;否,则不冲突。这是一个O(1)的操作——查一下这枚UTXO是否还在未花费集合中就够了。而在账户模型中,冲突检测需要考虑复杂的状态依赖——两笔交易是否访问同一个合约?是否读写同一个存储槽?是否依赖同一个账户的nonce?复杂度完全不在同一个量级。

这些不是抽象的理论优势。它们的直接后果是:UTXO模型更容易利用并行硬件,扩展空间更友好——更多的CPU核心意味着更多的交易可以被并行处理,更大的带宽意味着更多的交易可以被传播。当然,真实系统的扩展还受到区块传播、签名验证、磁盘I/O等工程约束,但UTXO的数据结构为利用硬件进步提供了正确的起点。

反观账户模型:无论你加多少CPU核心,只要两笔交易可能访问同一个全局状态,它们就必须串行执行。瓶颈不在硬件,而在数据结构——而数据结构是不会随着摩尔定律自动改进的。

中本聪选择UTXO模型,不是因为它对开发者更友好(事实上账户模型对开发者更直觉),而是因为它为系统的长期扩展保留了正确的架构空间。把性能瓶颈放在可以持续改善的地方(硬件),而不是焊死在不可改变的地方(数据结构)——这是一个面向未来几十年的架构决策。

“比特币交易太透明,没有隐私”

这个说法需要被纠正。

比特币的所有交易确实记录在公开的账本上,任何人都可以查看。但“公开“不等于“没有隐私“。

白皮书第十节专门讨论了这个问题:

“The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous.”

“传统银行模式通过限制相关各方和可信第三方对信息的访问来实现一定程度的隐私。公开宣布所有交易的必要性排除了这种方法,但仍然可以通过在另一个环节切断信息流来维护隐私:保持公钥的匿名性。”

传统银行的隐私模型是:交易信息只有银行和交易双方知道,对公众隐藏。但代价是银行知道你的一切——你买了什么、在哪里买的、花了多少钱。你对公众有隐私,但对银行没有。

比特币的隐私模型完全不同:交易信息对所有人公开,但交易者的身份与公钥之间的关联在设计上是被切断的。公众可以看到“某个地址向另一个地址转了多少比特币“,但在理想情况下不知道这些地址背后是谁。白皮书将此类比为证券交易所——交易的时间和金额是公开的,但交易者的身份是匿名的。当然,公开账本并不意味着绝对隐私——链上分析、地址聚类、KYC出入金关联和网络层信息泄露都可能将地址与真实身份重新关联。隐私的实际水平高度依赖于地址复用控制、币选择策略和链下身份隔离等实践。

在这方面,UTXO模型有一个结构性优势:每笔交易可以自然地使用全新的地址。白皮书建议“a new key pair should be used for each transaction“——每笔交易使用一个新的密钥对。在UTXO模型中,这很容易做到,因为每枚新创建的UTXO可以指向一个全新的公钥,找零也自然流向新地址。账户模型并非完全做不到地址轮换,但由于所有交易天然关联到同一个账户地址,链上行为的关联分析要容易得多。

“交易不可逆是缺陷”

这是从传统金融思维出发的一个典型误判。

在信用卡的世界里,交易可逆性被视为消费者保护的基石——你买了一件有缺陷的商品,可以发起退款。这个机制确实保护了消费者。但中本聪看到了它的另一面:可逆性本身就是一种系统性风险来源。

因为交易可以被撤销,商家永远无法确定一笔交易是否真的完成了。一个恶意的买家可以先收到商品,然后发起退款,声称交易未经授权。商家为了防范这种风险,不得不增加身份验证、收集额外的个人信息、提高价格来覆盖欺诈损失。这些成本最终转嫁给所有消费者——包括那些诚实的消费者。

比特币的近乎不可逆交易消除了这种信任不对称。一旦交易获得足够的网络确认,它在实践中就是最终的。买家不能在收到商品后撤销付款,正如你在路边摊用现金买了一个煎饼后不能“撤销“付款一样。卖家得到了确定性——这笔钱就是我的了——从而可以降低风险溢价,最终惠及所有市场参与者。

当然,这不意味着消费者保护不存在。白皮书提到了“routine escrow mechanisms“(常规托管机制)——如果交易双方不信任彼此,可以使用第三方托管来保护双方利益。而比特币的脚本系统天然支持这种机制:通过多重签名,可以轻松实现“2-of-3“的托管模式——买方、卖方和一个中立的仲裁方各持一把密钥,任意两方同意即可释放资金。如果交易顺利,买卖双方签字即可完成;如果出现争议,仲裁方介入,与受损一方共同签字来裁决资金的去向。

关键区别在于:在比特币中,托管是可选的,只在需要时引入;而在传统金融中,可逆性是强制的,所有交易都承担了这个机制的成本,无论你需不需要。买一杯5元的咖啡需要信用卡公司在背后做争议调解的准备吗?显然不需要。但在信用卡体系中,你为这杯咖啡支付的价格里已经包含了这个成本。

这正是比特币作为电子现金的精髓所在:把选择权还给交易双方,而不是强制所有人接受一种一刀切的信任模型。

回到本质:中本聪为什么选择UTXO

把所有这些线索串起来,我们可以回答一个更根本的问题:中本聪为什么选择UTXO模型而不是账户模型?

答案不是“因为UTXO更容易编程“——恰恰相反,账户模型对开发者更友好。答案也不是“因为UTXO在当时更流行“——当时根本没有先例可以参考。

答案是:UTXO模型是实现“电子现金“这个定义最贴切、也被实践证明极其成功的选择。

现金是什么?现金是独立的、可传递的价值载体。一枚硬币不依赖任何数据库来证明自己的存在。它不需要联网,不需要查询余额,不需要得到任何机构的确认。它就在你手里——你可以看到它、触摸它、直接把它递给另一个人。

UTXO就是这种属性的数字化对应。每枚UTXO是一个独立的、自包含的价值单元。它的产权证明(数字签名链)刻写在自身之上。验证它不需要查询任何全局状态。花费它只需要提供一个有效的签名——就像用物理硬币付款只需要把硬币递出去。

账户模型很难实现这种属性。在账户模型中,你的“钱“是数据库中的一个数字。你不“持有“你的钱——你持有的是一个查询数据库的权限。如果数据库不可访问,你的钱就不存在。这与“电子现金“的核心理念存在张力:现金应该是你可以直接持有和传递的东西,而不是某个共享数据库中的一行记录。

中本聪在白皮书标题中写下“Electronic Cash“的那一刻,UTXO模型就成为最符合这一愿景的选择。因为UTXO模型比账户模型更能在数字世界中再现现金的核心属性——独立性、可传递性、自证性。这不是一个随意的技术偏好,而是定义驱动设计的自然结果。

小结

比特币中的交易不是余额的增减,而是硬币的销毁与铸造——每一笔交易消费旧的UTXO,创造新的UTXO,用数字签名完成产权的近乎不可逆转移,构成一条从创币到当下的完整产权链。UTXO模型不是一个技术实现细节,而是“电子现金“这一定义在数据结构层面的忠实表达——它赋予了比特币自包含性、无账户余额式全局状态、天然并行的架构基因,为系统的长期扩展奠定了正确的基础。这个设计选择的影响如此深远,以至于后来整个行业在扩容路径上遇到的瓶颈与纷争,很大程度上源于对这一基础模型的偏离或误解。

交易机制解释了“钱怎么动“。但还有一个更基本的问题悬而未决:谁来保证这些交易不被篡改?谁来确保同一枚硬币不被花费两次?在序章中,我们说过解决双花的本质是排序——确定交易的先后次序。下一章,我们将看到比特币如何用一种令人叹为观止的方式来实现这个排序——不靠权威,不靠投票,而是靠物理世界中最不可伪造的东西:能量。