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

2017-12-17  本文已影响0人  blackguitar

比特币交易是整个比特币最核心的部分,比特币要解决的就是点对点(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的属性类型。

上一篇 下一篇

猜你喜欢

热点阅读