From 534f63f45923e8fc00dbcd8b49e9dab3547463cb Mon Sep 17 00:00:00 2001 From: CryptoManiac Date: Fri, 11 Mar 2016 23:27:03 +0300 Subject: [PATCH] Automatically add empty label for pubkey pair addresses. --- src/init.cpp | 9 +++++++++ src/rpcwallet.cpp | 12 ++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index 417b342..8fec3c6 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -902,6 +902,15 @@ bool AppInit2() pwalletMain->SetDefaultKey(newDefaultKey); if (!pwalletMain->SetAddressBookName(pwalletMain->vchDefaultKey.GetID(), "")) strErrors << _("Cannot write default address") << "\n"; + + if (fTestNet || GetTime() < SMALLDATA_SWITCH_TIME) { + CMalleableKeyView keyView = pwalletMain->GenerateNewMalleableKey(); + CMalleableKey mKey; + if (!pwalletMain->GetMalleableKey(keyView, mKey)) + strErrors << _("Unable to generate new malleable key"); + if (!pwalletMain->SetAddressBookName(CBitcoinAddress(keyView.GetMalleablePubKey()), "")) + strErrors << _("Cannot write default address") << "\n"; + } } printf("%s", strErrors.str().c_str()); diff --git a/src/rpcwallet.cpp b/src/rpcwallet.cpp index 0d0946e..8c36836 100644 --- a/src/rpcwallet.cpp +++ b/src/rpcwallet.cpp @@ -1893,7 +1893,7 @@ Value makekeypair(const Array& params, bool fHelp) Value newmalleablekey(const Array& params, bool fHelp) { - if (fHelp || params.size() > 0) + if (fHelp || params.size() > 1) throw runtime_error( "newmalleablekey\n" "Make a malleable public/private key pair.\n"); @@ -1901,6 +1901,11 @@ Value newmalleablekey(const Array& params, bool fHelp) if (!(fDebug || fTestNet) && GetTime() < SMALLDATA_SWITCH_TIME) throw runtime_error("This feature has been disabled for mainNet clients"); + // Parse the account first so we don't generate a key if there's an error + string strAccount; + if (params.size() > 0) + strAccount = AccountFromValue(params[0]); + CMalleableKeyView keyView = pwalletMain->GenerateNewMalleableKey(); CMalleableKey mKey; @@ -1908,11 +1913,14 @@ Value newmalleablekey(const Array& params, bool fHelp) throw runtime_error("Unable to generate new malleable key"); CMalleablePubKey mPubKey = mKey.GetMalleablePubKey(); + CBitcoinAddress address(mPubKey); + + pwalletMain->SetAddressBookName(address, strAccount); Object result; result.push_back(Pair("PublicPair", mPubKey.ToString())); result.push_back(Pair("PublicBytes", HexStr(mPubKey.Raw()))); - result.push_back(Pair("Address", CBitcoinAddress(mPubKey).ToString())); + result.push_back(Pair("Address", address.ToString())); result.push_back(Pair("KeyView", keyView.ToString())); return result; -- 1.7.1