git / moonbite-core / src/wallet/reserve.cpp · raw

#include <wallet/reserve.h>#include <wallet/scriptpubkeyman.h>#include <wallet/wallet.h>bool ReserveDestination::GetReservedDestination(CTxDestination& dest, bool internal){    m_spk_man = pwallet->GetScriptPubKeyMan(type, internal);    if (!m_spk_man) {        return false;    }    if (nIndex == -1) {        m_spk_man->TopUp();        CKeyPool keypool;        int64_t reserved_index;        if (!m_spk_man->GetReservedDestination(type, internal, address, reserved_index, keypool)) {            return false;        }        nIndex = reserved_index;        fInternal = keypool.fInternal;    }    dest = address;    return true;}void ReserveDestination::KeepDestination(){    if (nIndex != -1) {        m_spk_man->KeepDestination(nIndex, type);    }    nIndex = -1;    address = CNoDestination();}void ReserveDestination::ReturnDestination(){    if (nIndex != -1) {        KeyPurpose purpose = (type == OutputType::MWEB) ? KeyPurpose::MWEB : (fInternal ? KeyPurpose::INTERNAL : KeyPurpose::EXTERNAL);        m_spk_man->ReturnDestination(nIndex, purpose, address);    }    nIndex = -1;    address = CNoDestination();}