接着上一篇,我们继续聊聊《比特币白皮书》的第 9 部分:价值的组合与分割 (Combining and Splitting Value)。
价值的组合与分割
还是老规矩,原文和中文翻译放在这里,便于中英文对照,有条件的可以原文理解。
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. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender.
尽管逐个地处理硬币是可能的,但为每分钱设置⼀个单独的记录是很笨拙的。为了允许价值的分割与合并,交易记录包含多个输⼊和输出。⼀般情况下,要么是⼀个单独的来⾃于⼀个相对⼤的之前的交易的输⼊,要么是很多个输⼊来⾃于更⼩⾦额的组合;与此同时,最多有两个输出:⼀个是⽀付(指向收款⽅),如果必要的话,另外⼀个是找零(指向发款⽅)。
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.
值得注意的是,“扇出”在这⾥并不是问题 —— 所谓“扇出”,就是指⼀笔交易依赖于数笔交易,且这些交易⼜依赖于更多笔交易。从来就没有必要去提取任何⼀笔交易的完整独⽴的历史拷⻉。
现金用法
这一章要解决的问题非常生活化,比如:
“比特币怎么找零?”“一笔交易能不能拆开付给好几个人?”
中本聪的解释是这样的:
比特币不像银行账户那样一行行余额在变,而是更像我们用现金一样,能拆开付,也能凑起来用。
一堆零钱
首先理解一下,比特币不是“账户”,而是“一堆零钱”。
很多人以为自己钱包里有一个“账户余额”,比如显示 0.5 BTC。但在比特币系统里,其实你拥有的是一堆小额的比特币记录(UTXO)。
用大白话理解,就是你的钱包里不是一张银行卡,而是一堆现金。就比如:
你有三张比特币“钞票”:分别是0.2 BTC、0.2 BTC、0.1 BTC,总共 0.5 BTC。当你要花 0.3 BTC 买咖啡时,系统会“从这些零钱里拿”,然后“找零”给你。
也就是说,当你发起交易时,系统会自动“凑够”要支付的金额;如果“付多”了,就会把多余的比特币自动找回到你的钱包地址(叫找零地址)。
交易的组成
在比特币系统中,每一笔交易都由两部分组成:
一部分是输入(Input),指你要花掉的旧比特币(之前收到的),类似于你从兜里掏出的钞票。
另一部分是输出(Output),指这笔交易的新去向(谁收钱、多少),类似于店家收的钱 + 你的找零。
系统执行时,会把输入的金额加起来,再分配到各个输出。只要输入 ≥ 输出(再加上手续费),这笔交易就是有效的。
打个比方:
假设你要给朋友小王转 0.45 BTC。你的钱包里有一张 0.3 BTC 的“比特币钞票”和一张 0.2 BTC 的“比特币钞票”。
系统会自动这样做:
把这两张加起来(0.5 BTC),转 0.45 BTC 给小李,然后把剩下的 0.05 BTC 退回你钱包(找零地址)。
找零地址就是系统自动为你生成的新钱包地址,用来接回多余的钱。
UTXO模型
到这里,你可能有和我一样的疑问:为什么要这样设计?
因为比特币的设计原则是:每个“币”的去向要清清楚楚,不能复用。
如果它像银行账户那样只记“余额”,就很容易出现重复支付(比如同一笔钱被花两次)。而把交易拆成一笔笔“可追踪的零钱”,每次花钱时都要指定用哪几笔,系统就能最大程度确保:每一笔比特币只能花一次。
这就是 UTXO(Unspent Transaction Output) 模型,也是比特币安全设计的关键。
零钱包模式
总体来说,你可以把比特币钱包想象成一个零钱包。
里面有大钞,也有小钞。每次消费时,你可以凑几张付钱,然后把找零重新塞回钱包。这样一来,钱包里的“零钱数量”在变,但你总余额是对的。
而传统的银行账户更像是记账簿,只记录总数,不管是哪几张钞票。
中本聪创造的比特币选择了“零钱包模式”,虽然看起来复杂一点,但安全性更高、记录更清晰。
写在最后
关于第 9 部分,今天就先聊到这,下一篇继续。希望对你有帮助!
|