精读比特币-11
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.
译文
尽管处理分别处理交易的币是可能的,但是在一笔交易中为每个交易币进行单独的转账还是很笨拙。为了让交易币可以被分割和合并,交易包含了多个输入和输出。通常会有两种输入方式,即:从之前大量交易中来的单一输入和多个包含小额交易的输入,和两种输出方式:一种用于交易,另一种用于找零,如果需要的话,返回给发送者。
需要指出的是在这里扇出(扇出,一笔交易依赖于多个交易,那些交易又依赖更多的交易)不是个问题。也不需要获取交易记录的完整备份。
比特币的记账方式:
比特币采用UXTO的方式记账,即所有未花费的交易输出是用户所拥有的钱。在比特币记账系统中,包含交易输入和交易输出两部分,可以类比为一个人的收入和支出。交易输入有两种,从之前大量交易中来的单一输入,和包含多个小额交易的输入。简单地理解为,我是一个卖冰棍儿的老板,有个小朋友买5元钱的冰棍,他可以直接给我5元(单一输入)或者给我5个一元硬币(多个小额输入)。交易输出也有两种,一种用于交易,另一种用于找零。冰棍老板也有小孩,要给自家小孩买糖吃,如果糖是5元一包,那我的5元全部用于交易,属于第一种全部用于交易的交易输出;如果糖是3元一包,卖糖的老板就需要给我找零2元(曾几何时,还流通绿色的2元纸币…)。
交易的分割用于将交易输入大额变成小额,买5元冰棍,我需要把100元大钞破开,分成90元和2个5元。交易的合并用于将小额累计合并,买5元冰棍,一次给老板5元比给老板5次一元,效率更高。所以比特币的uxto交易特别像我们在使用纸币时的场景,如把大额纸币换成小额,小额累计合并,找零用新币等。
由此可以看出比特币记账方式的优点有:一,交易可追溯,在比特币记账系统中,每一笔交易输入都有来源可以追溯,就像原先我们手中的纸币,一定是来自别人,不会凭空产生。(凭空产生的是假钞…);二,交易数据库不会很大,因为每一笔被花费的交易输出会被马上销毁。