比特币源码研读第六章Transactions (1)

比特币交易是整个比特币最核心的部分,比特币要解决的就是点对点(peer-to-peer)的现金交易问题,从而实现交易的去中心化,这个也是中本聪白皮书的核心。

交易被广播到了整个网络并被包含在了区块中,一个交易可以包含多个输入和输出。为了更好的理解交易,我们可以把比特币交易看成是像流水一样的货币流,且具有如下的特点:

每个交易就相当于是一个中转节点,每个交易的输入货币和输出货币数量是相同的;也就是说,流入每个交易节点的货币流需要全部留出这个交易节点;



和bitcoin交易Transactions相关的所有关键类如下图:

其中居于核心位置的是CTransaction类:

CTransaction的代码是位于primitives文件夹中的transaction.h这个头文件中。

vector<CTxIn> vin; 

vector<CTxOut> vout;

这两个成员变量都是vector类型,分别代表着比特币交易的 “收入” 与 “支出”。

int32_t nVersion; 代表控制版本

uint32_t nLockTime; 代表转账过程中能够约定时间的能力

其中上面提到的CTxIn和CTxOut的属性和定义对货币的流动进行了控制。

对于CTxIn:

当前交易节点的前一个交易输出prevout被定义成了COutPoint属性。ScriptSig(就是“钥匙”)被定义成了CScript的属性类型。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容