Changeset View
Changeset View
Standalone View
Standalone View
src/interfaces/wallet.cpp
Show All 38 Lines | static WalletTx MakeWalletTx(interfaces::Chain::Lock &locked_chain, | ||||
result.txout_address.reserve(wtx.tx->vout.size()); | result.txout_address.reserve(wtx.tx->vout.size()); | ||||
result.txout_address_is_mine.reserve(wtx.tx->vout.size()); | result.txout_address_is_mine.reserve(wtx.tx->vout.size()); | ||||
for (const auto &txout : wtx.tx->vout) { | for (const auto &txout : wtx.tx->vout) { | ||||
result.txout_is_mine.emplace_back(wallet.IsMine(txout)); | result.txout_is_mine.emplace_back(wallet.IsMine(txout)); | ||||
result.txout_address.emplace_back(); | result.txout_address.emplace_back(); | ||||
result.txout_address_is_mine.emplace_back( | result.txout_address_is_mine.emplace_back( | ||||
ExtractDestination(txout.scriptPubKey, | ExtractDestination(txout.scriptPubKey, | ||||
result.txout_address.back()) | result.txout_address.back()) | ||||
? IsMine(wallet, result.txout_address.back()) | ? wallet.IsMine(result.txout_address.back()) | ||||
: ISMINE_NO); | : ISMINE_NO); | ||||
} | } | ||||
result.credit = wtx.GetCredit(locked_chain, ISMINE_ALL); | result.credit = wtx.GetCredit(locked_chain, ISMINE_ALL); | ||||
result.debit = wtx.GetDebit(ISMINE_ALL); | result.debit = wtx.GetDebit(ISMINE_ALL); | ||||
result.change = wtx.GetChange(); | result.change = wtx.GetChange(); | ||||
result.time = wtx.GetTxTime(); | result.time = wtx.GetTxTime(); | ||||
result.value_map = wtx.mapValue; | result.value_map = wtx.mapValue; | ||||
result.is_coinbase = wtx.IsCoinBase(); | result.is_coinbase = wtx.IsCoinBase(); | ||||
▲ Show 20 Lines • Show All 71 Lines • ▼ Show 20 Lines | public: | ||||
LOCK(m_wallet->cs_wallet); | LOCK(m_wallet->cs_wallet); | ||||
std::string error; | std::string error; | ||||
return m_wallet->GetNewDestination(type, label, dest, error); | return m_wallet->GetNewDestination(type, label, dest, error); | ||||
} | } | ||||
const CChainParams &getChainParams() override { | const CChainParams &getChainParams() override { | ||||
return m_wallet->chainParams; | return m_wallet->chainParams; | ||||
} | } | ||||
bool getPubKey(const CKeyID &address, CPubKey &pub_key) override { | bool getPubKey(const CKeyID &address, CPubKey &pub_key) override { | ||||
return m_wallet->GetPubKey(address, pub_key); | return m_wallet->GetLegacyScriptPubKeyMan()->GetPubKey(address, | ||||
pub_key); | |||||
} | } | ||||
bool getPrivKey(const CKeyID &address, CKey &key) override { | bool getPrivKey(const CKeyID &address, CKey &key) override { | ||||
return m_wallet->GetKey(address, key); | return m_wallet->GetLegacyScriptPubKeyMan()->GetKey(address, key); | ||||
} | } | ||||
bool isSpendable(const CTxDestination &dest) override { | bool isSpendable(const CTxDestination &dest) override { | ||||
return IsMine(*m_wallet, dest) & ISMINE_SPENDABLE; | return m_wallet->IsMine(dest) & ISMINE_SPENDABLE; | ||||
} | } | ||||
bool haveWatchOnly() override { return m_wallet->HaveWatchOnly(); }; | bool haveWatchOnly() override { | ||||
auto spk_man = m_wallet->GetLegacyScriptPubKeyMan(); | |||||
if (spk_man) { | |||||
return spk_man->HaveWatchOnly(); | |||||
} | |||||
return false; | |||||
}; | |||||
bool setAddressBook(const CTxDestination &dest, const std::string &name, | bool setAddressBook(const CTxDestination &dest, const std::string &name, | ||||
const std::string &purpose) override { | const std::string &purpose) override { | ||||
return m_wallet->SetAddressBook(dest, name, purpose); | return m_wallet->SetAddressBook(dest, name, purpose); | ||||
} | } | ||||
bool delAddressBook(const CTxDestination &dest) override { | bool delAddressBook(const CTxDestination &dest) override { | ||||
return m_wallet->DelAddressBook(dest); | return m_wallet->DelAddressBook(dest); | ||||
} | } | ||||
bool getAddress(const CTxDestination &dest, std::string *name, | bool getAddress(const CTxDestination &dest, std::string *name, | ||||
isminetype *is_mine, std::string *purpose) override { | isminetype *is_mine, std::string *purpose) override { | ||||
LOCK(m_wallet->cs_wallet); | LOCK(m_wallet->cs_wallet); | ||||
auto it = m_wallet->mapAddressBook.find(dest); | auto it = m_wallet->mapAddressBook.find(dest); | ||||
if (it == m_wallet->mapAddressBook.end()) { | if (it == m_wallet->mapAddressBook.end()) { | ||||
return false; | return false; | ||||
} | } | ||||
if (name) { | if (name) { | ||||
*name = it->second.name; | *name = it->second.name; | ||||
} | } | ||||
if (is_mine) { | if (is_mine) { | ||||
*is_mine = IsMine(*m_wallet, dest); | *is_mine = m_wallet->IsMine(dest); | ||||
} | } | ||||
if (purpose) { | if (purpose) { | ||||
*purpose = it->second.purpose; | *purpose = it->second.purpose; | ||||
} | } | ||||
return true; | return true; | ||||
} | } | ||||
std::vector<WalletAddress> getAddresses() override { | std::vector<WalletAddress> getAddresses() override { | ||||
LOCK(m_wallet->cs_wallet); | LOCK(m_wallet->cs_wallet); | ||||
std::vector<WalletAddress> result; | std::vector<WalletAddress> result; | ||||
for (const auto &item : m_wallet->mapAddressBook) { | for (const auto &item : m_wallet->mapAddressBook) { | ||||
result.emplace_back(item.first, IsMine(*m_wallet, item.first), | result.emplace_back(item.first, m_wallet->IsMine(item.first), | ||||
item.second.name, item.second.purpose); | item.second.name, item.second.purpose); | ||||
} | } | ||||
return result; | return result; | ||||
} | } | ||||
void learnRelatedScripts(const CPubKey &key, OutputType type) override { | void learnRelatedScripts(const CPubKey &key, OutputType type) override { | ||||
m_wallet->LearnRelatedScripts(key, type); | m_wallet->GetLegacyScriptPubKeyMan()->LearnRelatedScripts(key, | ||||
type); | |||||
} | } | ||||
bool addDestData(const CTxDestination &dest, const std::string &key, | bool addDestData(const CTxDestination &dest, const std::string &key, | ||||
const std::string &value) override { | const std::string &value) override { | ||||
LOCK(m_wallet->cs_wallet); | LOCK(m_wallet->cs_wallet); | ||||
return m_wallet->AddDestData(dest, key, value); | return m_wallet->AddDestData(dest, key, value); | ||||
} | } | ||||
bool eraseDestData(const CTxDestination &dest, | bool eraseDestData(const CTxDestination &dest, | ||||
const std::string &key) override { | const std::string &key) override { | ||||
▲ Show 20 Lines • Show All 126 Lines • ▼ Show 20 Lines | public: | ||||
return {}; | return {}; | ||||
} | } | ||||
WalletBalances getBalances() override { | WalletBalances getBalances() override { | ||||
const auto bal = m_wallet->GetBalance(); | const auto bal = m_wallet->GetBalance(); | ||||
WalletBalances result; | WalletBalances result; | ||||
result.balance = bal.m_mine_trusted; | result.balance = bal.m_mine_trusted; | ||||
result.unconfirmed_balance = bal.m_mine_untrusted_pending; | result.unconfirmed_balance = bal.m_mine_untrusted_pending; | ||||
result.immature_balance = bal.m_mine_immature; | result.immature_balance = bal.m_mine_immature; | ||||
result.have_watch_only = m_wallet->HaveWatchOnly(); | result.have_watch_only = haveWatchOnly(); | ||||
if (result.have_watch_only) { | if (result.have_watch_only) { | ||||
result.watch_only_balance = bal.m_watchonly_trusted; | result.watch_only_balance = bal.m_watchonly_trusted; | ||||
result.unconfirmed_watch_only_balance = | result.unconfirmed_watch_only_balance = | ||||
bal.m_watchonly_untrusted_pending; | bal.m_watchonly_untrusted_pending; | ||||
result.immature_watch_only_balance = bal.m_watchonly_immature; | result.immature_watch_only_balance = bal.m_watchonly_immature; | ||||
} | } | ||||
return result; | return result; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 180 Lines • Show Last 20 Lines |