第0章引言
上一篇文章说到比特币本质是一套特殊的复式记账本,交易可以看成是这套账本的基本记录单元,记录的就是比特币的交易流水。而我们说自己拥有一个比特币的本质意思是我们拥有了这套复式记账本上的某笔未花费“输入”交易记录的访问权。
“交易”是比特币里最重要的概念,那它到底包含什么信息、如何被创建、以及如何被比特币账本验证和吸收呢?
第1章 交易的具体表现形式
比特币既然是一套特殊的复式记账本,交易是构成这套复式记账本的基本记录单元。这并不好理解,没关系,我们先从我们能理解的东西说起。
会计使用的是记账凭证,我们都见过,就是下面这张图:
这就是我们现实经济生活中使用的记账的基本记录单元了。这个表格就包含了花钱过程的交易双方的一些属性,特别是金额。
比特币的记账其实也是类似,不过就不是以表格形式展示。因为比特币一切的记账都是使用软件来完成的,所以它的基本记账单元是一种数据结构,这些数据结构中含有比特币交易参与者价值转移的相关信息。平均一笔交易的这种数据结构是200到500字节的数据。具体的数据结构内容如下图所示:
下面是对比特币交易的专业解释,摘自《精通比特币》一书
一笔比特币交易是一个含有输入值和输出值的数据结构,该数据结构植入了将一笔资金从初始点(输入值)转移至目标地址(输出值)的代码信息。比特币交易的输入值和输出值与账号或者身份信息无关。你应该将它们理解成一种被特定秘密信息锁定的一定数量的比特币。只有拥有者或知晓这个秘密信息的人可以解锁。
到这里,作为非学术性的理解,我们可以简单地将比特币里的交易具体记录形式理解成为和会计使用的记账凭证类似的东西。我们会计会把所有的记账凭证一本一本地收集起来存在财务室。比特币网络也会把这种基本交易记录单元一个一个的记录下来。会计用的记账凭证是一本包含若干页,比特币网络的交易记录是按时间来记录了,平均10分钟把该10分钟内的交易尽可能地收集在一块,然后打包成一个数据块,这个块就叫区块。这就类似于,一笔比特币交易记录可以形象地理解为记账凭证的一页(实际上会计用的记账凭证一页可以记录多个相关的资金流动,比特币交易记录的只能是一次资金流动),而一个区块就是一本记账凭证。
整个比特币网络里的数据就是以这种交易数据结构组成的区块来构成的。目前一共是81G多的数据了,包括了1.5亿多笔交易。
第2章 如何创建比特币交易
使用人民币创建人民币交易,我们是再熟悉不过了。包括从钱包里取出纸币,一手交钱一手交货的现金交易,也有使用网银使用账户和密码的电子化交易,甚至还有使用支票,由出纳填写支票,交给CEO签字授权,然后去银行兑现的交易……
比特币交易的创建最像是支票的签署和兑现。签署支票的目的是构建货币转移,创建比特币交易的目的也是移动货币,只不过是支票转移的是人民币,而比特币交易转移的是比特币。
填写支票需要写上支收双方的银行账号,还要有支出账号负责人的签名,然后拿到银行去处理多次的划转。
比特币交易的创建也类似,它是由支付比特币的这一方构建一个数据结构(就是上一章的那个表格),把收支双方的信息填写,然后由支付比特币的这一方使用私钥来签名授权。最后把构建好的交易放到网络上去广播,广播到比特币网络。
具体的操作过程现在都使用图形界面的钱包软件来处理了。就是支付方拿一个比特币钱包,填上收款人的地址,然后使用密码授权发送就可以了。比特币钱包这个软件会把如何构建交易的数据结构,私钥构建签名,以及广播交易等工作自动完成。
第3章 交易被广播之后发生了什么?
如果我们是一个认真的孩子,一定会问这个问题,比特币交易作为数据结构,我签署了一笔交易,然后广播出去之后,这个交易是如何广播呢,到底传给谁呢?我可不可以作弊啊?
回想下我们基础课程的第一课讲到的一个简化的比特币模型,比特币网络就是由一些电脑组建的P2P网络。我们拿这个简化模型来理解交易的生命周期。
我们构建交易的过程其实就是在本地修改全网账户金额的过程,将自己账户上的一部分比特币发给另一个账户。然后去广播交易,就是将这个包含修改过程的数据结构通过网络传递给其他电脑点。其他节点收到这个信息后,会去验证你的数据结构是否是合法,就是查查账本验证你有没有作弊。验证了合法性后,这个节点就会帮你广播给其它节点(因为这是P2P网络,所有节点都是对等的,大家相互广播),而同时你作为发起交易的节点也会收到一条表示交易合法并且被接受的返回信息。如果验证不合法,这个节点就会拒绝掉这笔交易,并给你返回拒绝信息。当传遍全网过程中,有挖矿节点也会收到这笔交易,就会将这笔交易打包进新的区块。然后挖矿节点将新区块向周围广播,其他节点又会去验证这个区块的合法性。当全网有六个节点验证了这个新区块的合法性时,那你的交易就被认为是永远不可逆了。这时就可以认为你构建的交易完成了。
- 一个节点创建,构建了一个交易数据结构。然后在网络上向其他节点广播。
- 比特币是P2P网络,周围的节点会很快收到交易,就会去验证交易的合法性,验证过后帮你继续向其他节点广播。
- 在广播到全网的过程中,有挖矿节点也会收到这笔交易,也确认了这笔交易的合法性后,就会将交易打包进区块。并且向周围广播区块。
- 周围的节点验证区块的合法性,然后继续广播。
- 当有6个挖出新区块的节点验证了包含你的交易的区块时,你的交易就被认为是永久不可逆的完成了。
因为全网平均产生一个区块的时间是10分钟,交易被创建到6个挖矿节点确认了你的交易平均需要60分钟。也就是一个交易从构建到最终被完整确认平均会在60分钟完成。当然这属于极端安全了,而鉴于比特币网络本身的安全属性是非常高的,目前全社区都默认采用一个确认就认为交易已经安全地完成了,也就是10分钟。
第4章 结束语
比特币是由一系列概念和技术作为基础构建的系统,理解起来并不会很难,只要一个一个概念慢慢摸清楚,就OK了。