这一篇看一下,创建交易的代码,创建交易是迈开的第一步,创建交易就是在构建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
评估交易费用,判断交易费用是否符合条件
不符合条件,则在可能的情况下降低费用
签名验证,并限定交易的大小
至此,创建交易部分代码完毕。