在比特币系统中,交易表示用户将自己所拥有的比特币价值授权传给其它用户。此收款用户又可以通过另一笔交易将自己所拥有的比特币价值传给另一个用户,如此下去,将构成一个比特币交易链。
比特币交易包含一个或多个输入(Input),与传统的复式记帐相比较,输入类似于比特币账户的借方;同时,交易还包含一个或多个输出(Output),类似于比特币账户的贷方。在一个比特币交易中,输入一定是略大于输出的,二者之差正好是付给矿工的交易费用。
前面举过二笔交易的例子,第一笔是Alice从Joe处购买了0.1BTC的比特币,第二笔交易是Alice在Bob的咖啡店购买了一杯咖啡。从Joe 到Alice,又从Alice到Bob形成了一条交易链。如下图所示。
从上图可知,一笔交易的输出就是下一笔交易的输入。在一笔金额后有(spent)标记,表明此币已经花出,其后一定有一笔交易发生。在第三笔交易中,看到在输出项的金额后有(unspent)标记,表明此币尚未被花出,归Goesh所有。
从上图还可以看出,第一笔交易没有找零,第二笔和第三笔交易都有找零。为什么会出现找零呢?这是因为交易的输入,如同一张纸币一样不能被分割使用。如果购买某件物品只花费5个币,而你只有一笔20个币的输入可用,若不考虑交易费用,此笔交易将找回15个币。需要特别指出的是,找零的地址,并不一定要与输入的地址相同,可以用此币的所有者的钱包重新生成一个新地址作为找零地址。
不同的钱包对于用户的支付请求,会采取不同的策略。有时会将多个小额的输入合并起来满足支付请求,有时会使用一个大额的输入来满足支付请求。正如一个人使用现金一样,他会下意识地使口袋里大额现金数和小额现金数保持一种平衡,以方便使用,比特币钱包也会采取某种策略保持这种平衡。
在一个交易链中,可能会包含如下三种交易格式:
其一,如下图所示,是最常见的一种交易格式,用来完成从一个地址向其它二个地址的支付,一个是收款人的地址,另一个是找零(change)地址。
其二,如下图所示,也是常见的一种交易格式,将几个输入合并成一个输出,类似于现实中,将一堆零钱兑换成一个大额纸币。
其三,在比特币帐本中还有可能看到另一种交易格式,将一个输入分配成多个输出,支付给多个收款人。这种类型的交易可用于一个单位给员工发放薪水的情形。
本篇介绍了表述交易的二个重要概念”交易输入“和”交易输出“,以及交易链和交易链中所包含的三种交易格式。