diff --git a/src/interfaces/wallet.h b/src/interfaces/wallet.h index e29fefae565..4ab416f451f 100644 --- a/src/interfaces/wallet.h +++ b/src/interfaces/wallet.h @@ -183,7 +183,7 @@ public: virtual WalletTx getWalletTx(const uint256& txid) = 0; //! Get list of all wallet transactions. - virtual std::vector getWalletTxs() = 0; + virtual std::set getWalletTxs() = 0; //! Try to get updated status for a particular transaction, if possible without blocking. virtual bool tryGetTxStatus(const uint256& txid, @@ -395,6 +395,8 @@ struct WalletTx int64_t time; std::map value_map; bool is_coinbase; + + bool operator<(const WalletTx& a) const { return tx->GetHash() < a.tx->GetHash(); } }; //! Updated transaction status. diff --git a/src/wallet/interfaces.cpp b/src/wallet/interfaces.cpp index 23f91d9b3a4..5add1287172 100644 --- a/src/wallet/interfaces.cpp +++ b/src/wallet/interfaces.cpp @@ -318,13 +318,12 @@ public: } return {}; } - std::vector getWalletTxs() override + std::set getWalletTxs() override { LOCK(m_wallet->cs_wallet); - std::vector result; - result.reserve(m_wallet->mapWallet.size()); + std::set result; for (const auto& entry : m_wallet->mapWallet) { - result.emplace_back(MakeWalletTx(*m_wallet, entry.second)); + result.emplace(MakeWalletTx(*m_wallet, entry.second)); } return result; }