1. 程式人生 > >《詳解比特幣白皮書》-Combining and Splitting Value (價值組合與分割)

《詳解比特幣白皮書》-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. 

為絕不會有提取一個交易史完整獨立副本的需求。

注:fan-out扇出,是出自數位電路技術的術語,原意是指一個邏輯閘輸出能夠驅動其他門輸入的數量。軟體結構化設計中,也沿用了扇入、扇出的概念,來表述模組之間呼叫與繼承的關係。

比特幣交易是一個多輸入少輸出(最多兩個)的模組,其精髓就是人們常說的UTXOUnspent Transaction Output,未花費交易輸出)。這樣的結構對於正向操作是有利的,即可以高效的查到每筆交易的結餘,然後組合起來用於下一筆支付。但是這樣的結構對於反向回溯是不利的,即如果要查詢某一筆支付的所有來源,因為扇出小、扇入大,你將面對的是一個海量的樹形結構,效率將變得非常低。所以作者補充了一句,無此必要。

UTXO像是一個個的滴水不漏的水管元件,錯綜複雜的連線成了比特幣的交易賬本,記錄了交易額的來龍去脈。這與中心化的賬本最大的區別在於,UTXO不記錄餘額,只記錄行為。如果使用者想要知道手裡到底有多少比特幣,就從UTXO中找到屬於自己的地址,計算未花費交易返還的總和。在比特幣網路中,一個人可以擁有多個賬戶(地址)。UTXO還起到了保護隱私的作用,即只能查到哪些地址的比特幣還沒有花出去,卻查不到哪些地址屬於同一個人或者這個人是誰。