mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-05-31 00:05:13 +02:00
Merge #13825: [wallet] Kill accounts
c9c32e6b84 [wallet] Kill accounts (John Newbery)
Tree-SHA512: 783272e7df9042fb0a01826fa37a02b97218496459015d7457e56223da8690bdad930c223dd4a903a1d4df57f3f2f4a097d392d272a72419ea9a882b11e599f7
This commit is contained in:
@@ -196,16 +196,6 @@ static UniValue getnewaddress(const JSONRPCRequest& request)
|
||||
return EncodeDestination(dest);
|
||||
}
|
||||
|
||||
CTxDestination GetLabelDestination(CWallet* const pwallet, const std::string& label, bool bForceNew=false)
|
||||
{
|
||||
CTxDestination dest;
|
||||
if (!pwallet->GetLabelDestination(dest, label, bForceNew)) {
|
||||
throw JSONRPCError(RPC_WALLET_KEYPOOL_RAN_OUT, "Error: Keypool ran out, please call keypoolrefill first");
|
||||
}
|
||||
|
||||
return dest;
|
||||
}
|
||||
|
||||
static UniValue getrawchangeaddress(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
@@ -297,20 +287,6 @@ static UniValue setlabel(const JSONRPCRequest& request)
|
||||
pwallet->SetAddressBook(dest, label, "send");
|
||||
}
|
||||
|
||||
// Detect when there are no addresses using this label.
|
||||
// If so, delete the account record for it. Labels, unlike addresses, can be deleted,
|
||||
// and if we wouldn't do this, the record would stick around forever.
|
||||
bool found_address = false;
|
||||
for (const std::pair<const CTxDestination, CAddressBookData>& item : pwallet->mapAddressBook) {
|
||||
if (item.second.name == label) {
|
||||
found_address = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found_address) {
|
||||
pwallet->DeleteLabel(old_label);
|
||||
}
|
||||
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
@@ -348,7 +324,7 @@ static CTransactionRef SendMoney(CWallet * const pwallet, const CTxDestination &
|
||||
throw JSONRPCError(RPC_WALLET_ERROR, strError);
|
||||
}
|
||||
CValidationState state;
|
||||
if (!pwallet->CommitTransaction(tx, std::move(mapValue), {} /* orderForm */, "" /* account */, reservekey, g_connman.get(), state)) {
|
||||
if (!pwallet->CommitTransaction(tx, std::move(mapValue), {} /* orderForm */, reservekey, g_connman.get(), state)) {
|
||||
strError = strprintf("Error: The transaction was rejected! Reason given: %s", FormatStateMessage(state));
|
||||
throw JSONRPCError(RPC_WALLET_ERROR, strError);
|
||||
}
|
||||
@@ -904,7 +880,7 @@ static UniValue sendmany(const JSONRPCRequest& request)
|
||||
EnsureWalletIsUnlocked(pwallet);
|
||||
|
||||
// Check funds
|
||||
if (totalAmount > pwallet->GetLegacyBalance(ISMINE_SPENDABLE, nMinDepth, nullptr)) {
|
||||
if (totalAmount > pwallet->GetLegacyBalance(ISMINE_SPENDABLE, nMinDepth)) {
|
||||
throw JSONRPCError(RPC_WALLET_INSUFFICIENT_FUNDS, "Wallet has insufficient funds");
|
||||
}
|
||||
|
||||
@@ -921,7 +897,7 @@ static UniValue sendmany(const JSONRPCRequest& request)
|
||||
if (!fCreated)
|
||||
throw JSONRPCError(RPC_WALLET_INSUFFICIENT_FUNDS, strFailReason);
|
||||
CValidationState state;
|
||||
if (!pwallet->CommitTransaction(tx, std::move(mapValue), {} /* orderForm */, "" /* account */, keyChange, g_connman.get(), state)) {
|
||||
if (!pwallet->CommitTransaction(tx, std::move(mapValue), {} /* orderForm */, keyChange, g_connman.get(), state)) {
|
||||
strFailReason = strprintf("Transaction commit failed:: %s", FormatStateMessage(state));
|
||||
throw JSONRPCError(RPC_WALLET_ERROR, strFailReason);
|
||||
}
|
||||
@@ -1404,11 +1380,10 @@ static void MaybePushAddress(UniValue & entry, const CTxDestination &dest)
|
||||
static void ListTransactions(CWallet* const pwallet, const CWalletTx& wtx, int nMinDepth, bool fLong, UniValue& ret, const isminefilter& filter) EXCLUSIVE_LOCKS_REQUIRED(cs_main)
|
||||
{
|
||||
CAmount nFee;
|
||||
std::string dummy_account;
|
||||
std::list<COutputEntry> listReceived;
|
||||
std::list<COutputEntry> listSent;
|
||||
|
||||
wtx.GetAmounts(listReceived, listSent, nFee, dummy_account, filter);
|
||||
wtx.GetAmounts(listReceived, listSent, nFee, filter);
|
||||
|
||||
bool involvesWatchonly = wtx.IsFromMe(ISMINE_WATCH_ONLY);
|
||||
|
||||
@@ -1563,10 +1538,8 @@ UniValue listtransactions(const JSONRPCRequest& request)
|
||||
// iterate backwards until we have nCount items to return:
|
||||
for (CWallet::TxItems::const_reverse_iterator it = txOrdered.rbegin(); it != txOrdered.rend(); ++it)
|
||||
{
|
||||
CWalletTx *const pwtx = (*it).second.first;
|
||||
if (pwtx != nullptr) {
|
||||
ListTransactions(pwallet, *pwtx, 0, true, ret, filter);
|
||||
}
|
||||
CWalletTx *const pwtx = (*it).second;
|
||||
ListTransactions(pwallet, *pwtx, 0, true, ret, filter);
|
||||
if ((int)ret.size() >= (nCount+nFrom)) break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user