这一篇看一下,创建交易的代码,创建交易是迈开的第一步,创建交易就是在构建Tx, 分析不一定正确,请指正。
bool CWallet::CreateTransaction(const std::vector& vecSend, CWalletTx& wtxNew, CReserveKey& reservekey, CAmount& nFeeRet,int& nChangePosInOut, std::string& strFailReason, const CCoinControl& coin_control, bool sign)
vecSend:向量,接受方信息,
wtxNew:交易的实例对象
reservekey:密钥
nFeeRet:交易费用
nChangePosInOut
strFailReason:错误信息
首先遍历接受者,计算转账金额和接受者数

绑定交易和钱包

交易费用充足时,结束循环

遍历所有的接受者,构造vout,并验证dust交易

选择使用的币

计算找零,并构建指向自己的vout

填充vin

评估交易费用,判断交易费用是否符合条件

不符合条件,则在可能的情况下降低费用

签名验证,并限定交易的大小

至此,创建交易部分代码完毕。