#include #include #include 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(); }