git / moonbite-core / src/qt/walletmodeltransaction.cpp · raw

// Copyright (c) 2011-2019 The Bitcoin Core developers// Distributed under the MIT software license, see the accompanying// file COPYING or http://www.opensource.org/licenses/mit-license.php.#ifdef HAVE_CONFIG_H#include <config/bitcoin-config.h>#endif#include <qt/walletmodeltransaction.h>#include <policy/policy.h>WalletModelTransaction::WalletModelTransaction(const QList<SendCoinsRecipient> &_recipients) :    recipients(_recipients),    fee(0){}QList<SendCoinsRecipient> WalletModelTransaction::getRecipients() const{    return recipients;}CTransactionRef& WalletModelTransaction::getWtx(){    return wtx;}unsigned int WalletModelTransaction::getTransactionSize(){    return wtx ? GetVirtualTransactionSize(*wtx) : 0;}CAmount WalletModelTransaction::getTransactionFee() const{    return fee;}void WalletModelTransaction::setTransactionFee(const CAmount& newFee){    fee = newFee;}void WalletModelTransaction::reassignAmounts(interfaces::Wallet& wallet, int nChangePosRet){    std::vector<CTxOutput> outputs = wtx->GetOutputs();    std::vector<PegOutCoin> pegouts = wtx->mweb_tx.GetPegOuts();    size_t i = 0;    for (QList<SendCoinsRecipient>::iterator it = recipients.begin(); it != recipients.end(); ++it)    {        SendCoinsRecipient& rcp = (*it);        {            while (i < outputs.size()) {                if (wallet.isChange(outputs[i]) || (!outputs[i].IsMWEB() && outputs[i].GetScriptPubKey().IsMWEBPegin())) {                    i++;                } else {                    break;                }            }            if (i < outputs.size()) {                rcp.amount = wallet.getValue(outputs[i]);            } else if (pegouts.size() > (i - outputs.size())) {                rcp.amount = pegouts[i - outputs.size()].GetAmount();            }            i++;        }    }}CAmount WalletModelTransaction::getTotalTransactionAmount() const{    CAmount totalTransactionAmount = 0;    for (const SendCoinsRecipient &rcp : recipients)    {        totalTransactionAmount += rcp.amount;    }    return totalTransactionAmount;}