交易及记账(上) | 小白学比特币之二

本文目录
01. 比特币记账方法
02. 交易链
03. 比特币系统中的找零
04. UTXO

精读「Mastering Bitcoin」1中, 提到比特币不仅是一个电子现金(系统),也是一个公开的账本,这账本上记录了每笔交易的信息。用比特币交易,其实就跟我们用人民币或者美元交易买卖东西一样。作者给比特币交易行为的定义是:

In simple terms, a transaction tells the network that the owner of some bitcoin value has authorized the transfer of that value to another owner. The new owner can now spend the bitcoin by creating another transaction that authorizes transfer to another owner, and so on , in a chain of ownership. (简单来说,一笔转账告诉网络,这些比特币的所有者授权将这些比特币转给另外一个所有者。新的所有者可以通过创建一笔新的交易,授权转账给其他所有者,来花费这比特币,以此类推。)

那么,在比特币系统里,是以什么样的形式将这些交易记录下来的呢?

01. 比特币的记账方法

1.1 复式记账

跟传统记账一样,在比特币系统中也对交易采用复式记账的方法 (double-entry bookkeeping ledger),直白点翻译就是双入口记账。复式记账,简单理解就是以下两点[1]

  • 每一笔交易都要在至少两个账户上进行记录。
  • 每一笔debit必须有一笔credit与之相匹配。(每单笔交易转账及所有交易转账总和都需要遵守基本会计等式 资产(Assets) = 负债 (Liabiliteis) + 所有者权益 (Equity))
    复式记账

每一笔交易都要至少在两个账户上进行记录,在会计记账中有三个基本账户也就是资产账户、负债账户以及所有者权益账户,跟会计等式资产(Assets) = 负债 (Liabiliteis) + 所有者权益 (Equity)是一一对应的。那么单独每个账户又是以怎么样的方式呈现出来的呢?方法是每个账户都需要记录这个账户的debits和credits(见上图):

  • debits,借出给其他账户,记在账户左边。
  • credits,从其他账户借入,记在账户右边。

1.2 比特币的复式记账

说完复式记账,再回到《Mastering Bitcoin》(精通比特币) ,在书中,作者给出的记账例子如下面那张截图;一笔交易中可以包含多个Input和output。这里的Input和output如何理解呢?

Each transaction contains one or more "inputs", which are like debits against a bitcoin account. On the other side of the transaction, there are one or more "outputs", which are like credits added to a bitcoin account. (每笔交易都包含一个或多个“输入”,就像存入比特币在比特币账户里。同样的,每笔交易也都包含一个或多个“输出”,就像在一个比特币账户增加一笔贷款。)


比特币复式记账

总结一下:

In summary, transactions move value from transaction inputs to transaction outputs. 交易是将价值从Input移到output。

通过作者这句话,可以看到比特币系统其实执行的是价值交易。更进一步地,可以理解为价值的输入和输出。

02.交易链(Transaction Chains)

上笔交易和下笔交易之间会形成一个“无形的链”:

The transactions form a chain, where the inputs from the latest transaction correspond to outputs from previous transctions. (这些交易会形成一个“链”,这个“链”上的input来自上一笔交易里相应的output,而这output又来自更早的一笔交易)。

作者用一张图形象的说明了什么是“交易链”。

  • 在第一个笔交易中,Joe转给Alice 0.1005BTC, 在output这一边,有Alice地址里的0.1BTC以及0.005BTC的转账费用,加起来等于左边input的0.1005BTC。
  • 在第二笔交易中,Alice转给Bob 0.0150BTC,output这一边里Bob钱包里的0.015BTC,加上Alice钱包里的0.0845BTC,再加上转账费用0.0005BTC等于左边input Alice钱包里的总额0.1BTC。


    比特币交易链

对于同一个地址而言,上一笔交易中的output将会作为下一笔交易的输入,这样就形成了一个交易链。

比特币交易链

03. 找零[2]

在上面的交易截图中,我们可以看到这几笔交易里有spentunspentchangechange为找零地址,为什么会有找零地址呢?

This is beacuse transaction inputs, like currency notes, cannot be divided. (这是因为交易输入就和纸币一样,不可以被分割)

比特币系统中的找零概念和平时用现金交易的找零概念是一样的,如果你要买一个1块钱的包子,但是你身上只有一张20块钱的纸币,这个时候就需要包子铺老板找给你19元零钱。

Inputs Outputs
20元 1 元 (给包子铺老板)
10 元 (unspent)
5元 (unspent)
1元 (unspent)
1元 (unspent)
1元 (unspent)
1元 (unspent)

在比特币系统中,每一个input就相当于一定面值的纸币。如果一笔交易中只包含一个Input,为20个BTC,当这个地址向其他地址支付1个BTC时候,就需要对方找还19个BTC。不同的是,比特币不像纸币那样只有几种面值固定的纸币,比特币系统可以随时创建“新面值”。

Inputs Outputs
20BTC-被销毁 1BTC (spent)
19BTC (新创建的面值,找还给你)

出于保护隐私的考虑,找零地址没必要跟原先的付款地址一样,通常钱包会生成一个新的找零地址。

在真实应用中,并不会在找零地址旁边标注change的字样,如下图显示(截图来自blockchain.info上的某笔交易),

交易详情

04. 比特币也有面值: UTXO

比特币系统可以随时创建“新面值”来用于找零,而且这“零钱”可以用于下次交易。在每个输出(output)记录里,可消费的比特币数量会被标记成unspent,这样的输出有一个专门的名字叫做Unspent Transaction Outputs(UTXO)。可以把unspent的输出理解为面值不同的、可用于下次消费的纸币,就好像10元面值纸币、100元面值纸币那样。

参考文献

[1] Mastering Bitcoin 第二版 https://github.com/bitcoinbook/bitcoinbook
[2] http://learnmeabitcoin.com


ChangeLog

  • 20180316 标题更改为“小白学比特币”, 增加参考文献
  • 20180315 修改标题

  1. https://www.myaccountingcourse.com/accounting-basics/double-entry-accounting

  2. https://en.bitcoin.it/wiki/Change

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、快速术语检索 比特币地址:(例如:1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV)由一串...
    不如假如阅读 16,457评论 4 87
  • 最近电视、新闻、网站经常有讲到比特币,但普通人经常被比特币的各种信息搞得一头雾水,到底什么是比特币,它是谁开发的,...
    纳兰三少阅读 8,994评论 0 17
  • 今天仍然很冷,所幸是没再下雨。多云的空中不时会投射下久违的阳光。我和女儿出去散步,在一栋住宅楼门口,两个小女孩,...
    婉约的歌阅读 1,270评论 0 0
  • 昨夜已经很晚了,突然接到了一名同学的电话,说另一同学从北京回来了,想和同学们聚聚。 说实话的,对于同学聚会,我是很...
    小桥流水人家413阅读 3,068评论 0 2
  • 读完《摆渡人》这本书,心中无限感慨。其实,在我看到这个书名时,我就有一个疑问,摆渡人在摆渡什么?是幸福,是人的罪...
    风吹过指尖沙阅读 3,142评论 1 4

友情链接更多精彩内容