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