《精通比特币》学习:通过场景案例来了解比特币交易原理

今天先学习几个基础概念:比特币系统由用户、交易和矿工组成。

用户:用户通过密钥控制钱包

交易:每一笔交易都会被广播到整个比特币网络

矿工:通过竞争计算生成在每个节点达成共识的区块链,区块链是一个分布式的公共权威账簿,包含了比特币网络发生的所有的交易

消费:转移一笔以前交易的比特币 给 以比特币地址所标识的新的所有者。

案例:买咖啡

上一篇笔记中提到用户A刚刚获得了第一笔比特币:0.1个比特币,现在A去咖啡店购买一杯咖啡,老板说这杯咖啡要10块钱,如果用比特币支付的话需要0.1个比特币,收银台屏幕上显示了一个收款二维码。A用他的手机比特币软件应用扫描这个二维码后,显示一笔给咖啡店0.1比特币的支付请求,然后她按下发送键授权了这笔支付,几秒钟后收银台看到这笔交易,并完成交易。感觉和微信支付差不多哦,非常简单,那这个交易再比特币系统中到底发生了什么?

1、每一笔比特币交易都包含一个或多个输入,也有一个或多个输出,当输入总和大于输出总和,差额部分就是交易费。(延伸学习:比特币网络有两种激励方式,一个是挖矿奖励,相当于发行货币,而比特币总量只有2100万个,总有一天会发行完毕。另一个激励手段就是交易费,在中本聪的白皮书中有专门提到这两种激励方式)

举例:A授权转账1.5个比特币,其中1个比特币给B。那么输入就是1.5个比特币,输出就是1个比特币,交易费就是0.5个比特币。

2、交易就是币从交易输入移至输出,输入是币的来源,通常是前一笔交易的输出,这样随着钱从一个地址转移到另外一个地址,形成了一条所有权链条。

举例:A输入1.5个比特币,输出至B是1个比特币,剩余的0.5个比特币是交易费。输出至B的1个比特币就是已消费的,因为币已经从A转移至B,被消费掉了。然后B再将上一笔交易输出的这1个比特币作为输入,输出至C是0.1个比特币,再输出给自己是0.8个比特币,剩余0.1个比特币是交易费。也就是说输入也可以像是给一张100的整钱,输出给B一部分,剩下的再找零回自己的钱包。我这么来理解:A的钱包的每一个比特币都是由一笔笔交易输出带来的,这些交易输出都可以成为A的交易输入,比如原来有两个交易输出分别是1和2个比特币,如果把两个都作为一笔交易的输入,那么输入总和就是3个比特币,再输出给B的时候,可以给一部分币给B,比如1个币,那么3个币扣掉交易费后,剩下的币就是找零回到A的钱包。

3、其实A只需要指定目标地址和金额,其余的细节钱包应用会在后台自动完成。建立一笔交易就是生成一条数据记录而已,包含“谁给谁转账多少币”“这些币原来是谁转过来的”,当每一笔交易都知道每个币的上一笔交易是谁转过来的,这一笔交易是转给谁了,这样就能把每一笔交易串起来形成链条了,当每一笔交易再盖上时间戳,就变成一个不可逆不可篡改的数据链。

4、什么是已消费和未消费,理解:已经转移至其他地址的币就是已消费的,还剩余在钱包中的币就是未消费的。

5、尽管未消费输出的记录选择由比特币软件自动完成,但问题是对于轻量级客户端不保存完整的交易副本,那么他就可能不会有所有的未消费输出,所以当A的钱包在单个未消费输出中不够支付一杯咖啡的费用时,A的钱包应用就会去不同的服务者提供的API或完整索引节点去搜寻拿到A的所有未消费输出记录。

6、A的交易输出是给B的,那么是不是会被其他人拦截冒领呢,怎么保证一定是支付给B了?所以A的交易输出中会包含一个脚本,这个脚本说“这个输出谁能拿出一个签名与B的公开地址匹配上,就支付给谁”,因为只有B的钱包私钥才能匹配B的公开地址,所以只有B才能兑换这笔输出。

今天的学习到这里,主要学习了区块链的最小行为单元“交易”是怎么回事,交易是怎么构建的,交易的核心输入输出是什么意思。下一次要学习交易是怎么被加入到新区块里面的,以及区块是如何被挖矿构建的,还有新的区块被加紧区块链以后,是如何岁更多区块的添加而变成不可篡改、可信任的。


分享到:


相關文章: