2.2 比特币交易

简单来说,一笔交易就是告知全网:比特币的持有者已授权把它转帐给其他人。而新持有者可以通过产生另一笔交易,转账给另外的人,依此类推形成一条所有权的链。

2.2.1交易输入输出

交易就像复式记账法账簿中的行。简单来说,每一笔交易包含一个或多个“输入”,就像比特币账户的借方。这笔交易的另一面,有一个或多个“输出”,就像比特币账户的贷方。这些输入和输出的总额(借方和贷方)不需要相等。相反,当输出加起来略少于输入数量时,两者的差额就代表了一笔隐含的“矿工费”,这笔矿工费由成功打包交易到区块链账簿的矿工收取。如图2-3描述的是一笔比特币交易作为账簿中的一个条目。

交易也包含了每一笔被转账的比特币(输入)的所有权证明,它以所有者的数字签名形式存在,并可以被任何人独立验证。在比特币术语中,“消费”指的是签名一笔交易:将以前交易的比特币转账给比特币地址所标识的新所有者。

2.2 比特币交易 - 图1

图2-3交易就像复式记账

2.2.2交易链

Alice支付Bob咖啡时使用一笔之前的交易作为输入。在以前的章节中,Alice从她朋友Joe那里用现金换了点比特币。那笔交易创建了被Alice的密钥锁定的比特币。在她支付Bob咖啡店的新交易中使用了之前的交易作为输入,输出是支付咖啡的金额和多余部分的找零。交易形成了一条链,最近交易的输入对应以前交易的输出。Alice用密钥签名解锁了之前交易的输出,从而向比特币网络证明她拥有这笔钱。她将买咖啡的这笔支付到Bob的地址上,明确指明要求是Bob签名才能消费这笔钱,否则就“阻止”那笔输出。这就实现了在Alice和Bob之间价值转移。下图展示了从Joe到Alice再到Bob的交易链。

2.2 比特币交易 - 图2

图2-4交易链中,一笔交易输出就是另一笔交易的输入。

2.2.3找零

许多比特币交易都会包括新所有者的地址(买方地址)和当前所有者的地址(称为找零地址)的输出。这是因为交易输入,就像纸币那样能够不能被再分割。如果您在商店购买了5美元的商品,但是使用20美元的美金来支付商品,会收到15美元的找零。相同的概念适用于比特币交易输入。如果您购买了一个价格为5比特币的商品,但是你的输入中只有20比特币这一项,那么您需要产生两个输出:一个5个比特币的输出发送给店主,另一个15比特币的输出返回自己作为找零(减去任何适用的交易费用)。重要的是,出于隐私的原因,找零地址不必与输入时提供的地址相同,通常是所有者钱包中的新地址。

不同的钱包可以在合并所有输入,用来匹配自己的付款金额时使用不同的策略。它们可能会聚合许多小输入,或者使用等于或大于所需付款的输入。除非钱包中的输入,刚好汇总起来与所需付款(加上交易费用)完全相等,否则钱包一定会产生一些找零。这与人们如何处理现金非常相似。如果你总是用钱包中的最大面额支付时,那么钱包中的零钱就会越来越多。如果你只使用零钱,整钱就会越来越多。人们总是无意识地在这两个极端之间找到平衡,而比特币钱包开发商也力图实现这种平衡。

总的来讲,交易是将钱从交易输入移至输出。输入通常是前一笔交易的输出的引用,表示价值从何而来。交易输出将约定金额发送到新的所有者的比特币地址,并将找零输出返回原来所有者的地址。 一笔交易的输出可以被当做另一笔新交易的输入,这样随着钱从一个地址被移动到另一个地址,就形成了一条所有权链(如图2-4)。

2.2.4 常见的交易形式

最常见的交易形式是从一个地址到另一个地址的简单支付,还包含给支付者的“找零”。这类交易有一个输入和两个输出,如图2-5所示:

2.2 比特币交易 - 图3

图2-5最常见的交易

另一种常见的交易形式是归集多个输入到一个输出(如图2-6)的模式。这相当于现实生活中将很多硬币和纸币零钱兑换为一个大额面钞。像这样的交易由钱包应用产生,来整理在支付过程收到的许多小额的找零。

2.2 比特币交易 - 图4

图2-6归集资金的交易

最后,另一种在比特币账簿中常见的交易形式是将一个输入分配给多个输出,即多个接收者(如图2-7)的交易。这类交易有时被商业机构用作分配资金,例如给多个雇员发工资的情形。

2.2 比特币交易 - 图5

图2-7分散资金的交易