前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >比特币源码分析之二:交易

比特币源码分析之二:交易

原创
作者头像
qudamahcui
发布2018-05-23 10:28:12
1.1K1
发布2018-05-23 10:28:12
举报
文章被收录于专栏:区块链源码分析

比特币源码分析之二:交易

交易(Tx)

在源码中的结构体为CTransaction(transaction.h),主要包含一些字段

nVersion 代表了一个交易的版本号(当前是固定值2)

vin 是一个代表交易输入的集合(数组),对应的结构是CTxIn

vout 是一个代表交易输出的集合(数组),对应的结构是CTxOut

nLockTime 一个代表锁定时间的变量,这个变量会被用来复杂类型的交易,为了减少理解难度前期先不关注

为了理解方便,简化一下结构,一个交易就是包含一组输入和一组输出的集合

输入(TxIn)

在源码中的结构体为CTxIn(transaction.h)主要字段如下

Prevout 一个指向输入对应输出的索引(钱从哪里来),由tx的hash和对应tx中vout的index组成

scriptSig 输入脚本,和输出脚本结合完成交易,输入脚本可以理解为一把钥匙,表明了这个输入可以解开它对应的输出锁的脚本

nSequence 和tx中的nLockTime一起来完成一些复杂类型的交易,后续系列一起介绍,当前暂时不关注

scriptWitness 比特币交易的升级版本,后续系列单独介绍,只需要知道是比特币因为一个漏洞的升级版本,原始版本中不存在,所以暂时不影响理解

简化为 一个代表输入对应输出的索引和一把解开对应输出的钥匙脚本

输出(TxOut)

在源码中的结构体为CTxOut (transaction.h)主要字段如下

nValue 代表花费多少

scriptPubKey 输出脚本,对应TxIn的scriptSig ,表明要花这笔钱需要满足哪些条件的脚本,而TxIn的scriptSig是用来满足这个条件的,也就是一把锁

交易费用(Fee)

这是一个虚拟的概念,交易费,这个是支撑比特币可以正常运转的一个重要设计

一笔交易的Fee是所有的输入减去所有的输出剩余的比特币

下图表示了交易体系

图中TxB引用了TxA的输入,并且提供了能解开TxA输出脚本锁的钥匙(也就是拥有可以证明自己是Rich的私钥)

而上图中的Fee是1个比特币(3-2),这个比特币会给矿工(矿工挖矿会在专门的一篇中介绍)

注意:输入和输出都是一个数组,上图为了介绍简单只画了一个

下一篇会介绍输入和输出脚本是怎么协同工作的

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档