查看原文
其他

一文看懂比特币交易的全过程

2017-08-26 段扬扬 扬帆沧海

比特币和其底层技术区块链随着最近市场的火热,变得越来越被大众所熟知,有些人也开始加入到数字货币的投资大潮中,希望可以从中分一杯羹。但是很多人虽然知道比特币很值得投资,价格也在不断上涨,但是对于其背后的原理往往还是一知半解。

不管是巴菲特、查理·芒格,还是李笑来都非常推崇价值投资,而价值投资的前提是你要懂,否则当你面对短期价格的剧烈波动时,你很有可能会质疑当时的决定,担忧市场的最终走向,甚至成为一个追涨杀跌的韭菜。试想股市的整体指数其实一直往上涨的,但是我们经常听到股市赔钱的故事,说到底还是因为不懂而无法坚定地长期持有,最后成为一个失败的投机者。

在中国,比特币持有量最低时仅占全球总量的7%,但成交量却是国外的数倍,最高时占全球八成以上,如此之高的换手率,突显的是很多人的投机心理。很多人经常后悔自己没有早点进场投资,可是你能保证自己就没有频繁买卖的投机心理,其实别高估自己。

真正能让我们长期持有一项资产的前提是我们需要懂,在比特币的世界里,很多人其实不知道自己如何就完成了交易,也不知道背后的逻辑和原理?这些问题如果没搞懂,试想你真的有足够的安全感吗?

接下来就由我带你详细解读一下比特币交易的全过程吧,不要担心自己不懂技术,我敢保证只要你耐心地看完,肯定会有收获。

比特币世界的交易

既然是交易就得有发起者和接收者,通常来说交易都是由发起者创建的,比特币也不例外,发起者通过自己的钱包软件创建一笔包含一定数量比特币的交易,并用自己的私钥进行加密签名,签名是为了标识这笔比特币的所有权,其他人只要通过发起者的地址就可以轻松校验真实性了。关于私钥的原理,可以参考一文看懂比特币钱包和交易

交易创建完成后,就需要被广播到比特币网络中,让更多的人知道这笔交易,比特币的网络是一个点对点的去中心化网络,也就是没有一个中心节点统一处理所有的交易。在比特币网络中,每一个节点都会验证交易的合法性,并将交易在网络中进行广播,直到这笔交易被网络中大多数节点接收。

最终,比特币交易被一个挖矿节点验证,并被添加到区块链上一个记录着许多比特币交易的区块中。关于挖矿其实就是将很多笔交易统一打包统一验证,存入总账簿(也就是区块链中,关于区块链的原理可以参考不懂技术?老司机带你轻松理解区块链知识)中,同时挖矿的人会得到一定的奖励。因为有奖励,所以矿工会有很强的动力维护交易的顺利完成。

一笔比特币交易一旦被记录到区块链上并被足够多的后续区块确认,便成为比特币总账簿的一部分,并被所有比特币交易参与者认可为有效交易。于是,这笔比特币就隶属于新的所有者了,可以拿来放心使用了。

以上是比特币交易的大致过程,接下来我们就来详细看一下每一个流程。

创建交易

一笔比特币交易是一个含有输入值和输出值的数据结构,该数据结构植入了将一笔资金从发起者地址转移至接收者地址的代码信息。你可以将它们理解成一种被特定秘密信息锁定的一定数量的比特币。只有拥有者或知晓这个秘密信息的人(接收者)可以解锁。关于解锁和锁定的逻辑会在下文中有详细介绍,我们可以先来看看交易的数据结构:

比特币交易的基本单位是未经使用的一个交易输出,简称UTXO。这里要多解释一下,你的比特币资金是通过一笔笔的交易账单体现出来的,比如说你有10笔他人给你的转账账单,共计10个比特币,那么你的资产就是10个比特币,不存在一个单独的地方存放这10个比特币。

未来如果你要交易,也是直接用这些有效的账单直接参与交易。也就是说交易和拥有的资产都是一笔笔有效的账单上的数字体现出来的,而每一笔账单就是一个UTXO。

被交易消耗的UTXO被称为交易输入,也就是说你之前通过交易获得的收入账单,并且被选中,才可以作为新的交易输入。由交易创建的UTXO被称为交易输出,也就是说你的钱包软件为了这笔交易新建的一笔账单。

总结一下就是交易输入是你之前收到的有效交易收入账单,交易输出是为了完成新交易新构造的一笔账单,这些账单统称为UTXO,交易输入通常都会比交易输出多一点点,多出来就是交易费。

通过这种方式,一定量的比特币就在不同所有者之间转移,并在交易链中消耗和创建UTXO。当一个用户接收比特币时,金额被当作UTXO记录到区块链里。这样,一个用户的比特币会被当作UTXO分散到数百个交易和数百个区块中。

从上面的描述可以看出,并不存在储存比特币地址或账户余额的地点,只有被所有者锁定的、分散的一笔笔收入账单——UTXO。比特币钱包通过扫描区块链并聚合所有属于你的UTXO来计算你的余额,也就是说你的比特币资产就是每个属于你的UTXO上面的一个个数字总和。

一笔比特币交易可以有任意数值,但必须从你可用的UTXO中创建出来。你不能再把UTXO进一步细分,就像不能把一元纸币撕开而继续当货币使用一样。你的钱包应用通常会从你可用的UTXO中选取多个可用的个体来拼凑出一个大于或等于一笔交易所需的比特币量。

另外还有一种特殊的交易类型,称为Coinbase交易。这是每个区块中的首个交易。这种交易存在的原因是作为对挖矿的奖励而产生全新的可用于支付的比特币给“赢家”矿工。这也就是为什么比特币可以在挖矿过程中被创造出来。关于挖矿我会在下一篇文章中详细介绍。

传播交易

一笔交易需要传递至比特币网络,才能被传播,也才能加入区块链中。本质上,一笔比特币交易只是300到400字节(数字世界的度量单位)的数据。一旦一笔比特币交易被发送到任意一个连接至比特币网络的节点,这笔交易就会被该节点独立验证。

如果交易被验证有效,该节点将会将这笔交易传播到这个节点所连接的其他节点。如果被验证为无效,这个节点会拒绝接受这笔交易,这样就可以避免恶意的交易数据充斥比特币网络。关于验证的逻辑会在下一小节详细说明。

比特币网络是一个点对点网络,这意味着每一个比特币节点都连接到一些其他的比特币节点。整个比特币网络形成了一个松散地连接、且没有固定结构的“蛛网”——这使得所有节点的地位都是同等的。



一笔刚通过验证且并被传递到比特币网络中任意节点的交易会被发送到三到四个相邻节点,而每一个相邻节点又会将交易发送到三至四个与它们相邻的节点。以此类推,在几秒钟之内,一笔有效的交易就会像指数级扩散的波一样在网络中传播,直到所有连接到网络的节点都接收到它。

验证交易

还记得上文提到的交易输入和交易输出吧,交易输入是你之前收到的有效交易收入账单,交易输出是为了完成新交易新构造的一笔账单,这些账单统称为UTXO。为了使得交易足够的安全,交易发起者的钱包软件会用一段程序将交易输出锁定到接收者的地址上,同时还会在交易输入上绑定一段解锁的程序。

可能你已经迷糊了,不妨,我来用大白话再解释一遍。也就是说钱包软件在一开始的就会将交易输出绑定到接收者的地址上,同时出一到数学题,比如说x+3 = 5,问x为多少的时候才能保证这道题是对的。

对应的交易输入上会用发起者的私钥签名,同时给出一个答案,比如2,每个节点首先都可以用发起者的地址进行签名校验,这就是所谓的私钥加密,公钥校验,如果不熟悉私钥和公钥的可以参考一文看懂比特币钱包和交易,这样就验证了交易输入是属于发起者的。然后拿到这个值去解上面那道题,发现答案是正确的,就如说明这笔交易是合法的。

当然验证除了要做数学题,还会有其他的检查事项,下面罗列了其中的一小部分:

交易的输入和输出列表不能为空
交易的语法和数据结构必须正确
如果输入值的总和小于输出值的总和,交易将被中止
如果交易费用太低以至于无法进入一个空的区块,交易将被拒绝
······

由于交易输出是绑在接收者的地址上的,所以只有当接收者的钱包软件完成了上述校验流程,才能将这个交易输出转换成属于自己的财产,也就是说这些UTXO属于接收者的了,这些UTXO中的比特币数量加起来就是钱包余额新增加的部分。

交易费

除了上文提到的Coinbase交易是对矿工的奖励,还有一笔奖励费,就是每一笔交易的交易费,可以简单理解为手续费。

交易费既可以当作对矿工的一种鼓励,也可当作是对于欺诈交易和任何种类的系统滥用,在每一笔交易上通过征收一笔小成本的税而造成的一种妨碍。这就如同高速公路在节假日不收费,就会堵成一条长龙,而如果收一笔费用,车辆数量就会迅速较少很多,保证道路可以被真正有需要的人用起来。

交易费的大小是基于交易数据结构的大小决定的,而非比特币的价值。比如说你用10个UTXO,每个UTXO包含0.1个比特币去支付一笔总价为1个比特币的账单,肯定就比直接用一个价值1比特币的UTXO直接去支付要麻烦的多。想想商店老板是愿意接收1块钱,还是10个1毛钱,就能体会比特币规则设立的精妙之处了。

小结

以上就是比特币交易的全部过程,当然其中还涉及了很重要的环节,就是挖矿,由于挖矿是一个非常重要的概念,并且也是新比特币产生的唯一途径,所以关于挖矿接下来会有专门的一篇的文章来介绍,也欢迎你的持续关注。

了解比特币的交易过程,起码可以让我们明白这项资产到底是如何在不同的人手中流转,又是如何保证交易安全的,当然一篇文章想要理解比特币的所有原理和逻辑肯定是不现实的,也欢迎你查阅我过往写的相关文章。

新手投资比特币,先从学会钱包软件开始吧
一文看懂比特币钱包和交易
不懂技术?老司机带你轻松理解区块链知识
经济学告诉你比特币为什么有价值?

如果你觉得这篇文章对你有启发,欢迎赏一杯咖啡,当然也欢迎你的转发。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存