X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Frpcdump.cpp;h=01ebf94cbd7a07ab26c03141e2fa959c70d4da28;hb=ef17ac0211ddd486127e1f94756fbb3fd704a9b4;hp=6e72688e8d7dc124fd489758745dd579e159d2a6;hpb=fbd44e84d5841867d36d295d4f347fd5e55d293f;p=novacoin.git diff --git a/src/rpcdump.cpp b/src/rpcdump.cpp index 6e72688..01ebf94 100644 --- a/src/rpcdump.cpp +++ b/src/rpcdump.cpp @@ -62,27 +62,27 @@ Value importprivkey(const Array& params, bool fHelp) bool fCompressed; CSecret secret = vchSecret.GetSecret(fCompressed); key.SetSecret(secret, fCompressed); - CKeyID vchAddress = key.GetPubKey().GetID(); + CKeyID keyid = key.GetPubKey().GetID(); + CBitcoinAddress addr = CBitcoinAddress(keyid); { LOCK2(cs_main, pwalletMain->cs_wallet); - pwalletMain->MarkDirty(); - pwalletMain->SetAddressBookName(vchAddress, strLabel); - // Don't throw error in case a key is already there - if (pwalletMain->HaveKey(vchAddress)) + if (pwalletMain->HaveKey(keyid)) return Value::null; - pwalletMain->mapKeyMetadata[vchAddress].nCreateTime = 1; - + pwalletMain->mapKeyMetadata[addr].nCreateTime = 1; if (!pwalletMain->AddKey(key)) throw JSONRPCError(RPC_WALLET_ERROR, "Error adding key to wallet"); - // whenever a key is imported, we need to scan the whole chain - pwalletMain->nTimeFirstKey = 1; // 0 would be considered 'no value' + pwalletMain->MarkDirty(); + pwalletMain->SetAddressBookName(addr, strLabel); - if (fRescan) + if (fRescan) { + // whenever a key is imported, we need to scan the whole chain + pwalletMain->nTimeFirstKey = 1; // 0 would be considered 'no value' + pwalletMain->ScanForWalletTransactions(pindexGenesisBlock, true); pwalletMain->ReacceptWalletTransactions(); } @@ -101,13 +101,14 @@ Value importaddress(const Array& params, bool fHelp) CScript script; CBitcoinAddress address(params[0].get_str()); if (address.IsValid()) { - script.SetDestination(address.Get()); + if (address.IsPair()) + throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "It's senseless to import pubkey pair address."); + script.SetAddress(address); } else if (IsHex(params[0].get_str())) { std::vector data(ParseHex(params[0].get_str())); script = CScript(data.begin(), data.end()); - } else { + } else throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid Novacoin address or script"); - } string strLabel = ""; if (params.size() > 1) @@ -130,7 +131,7 @@ Value importaddress(const Array& params, bool fHelp) pwalletMain->MarkDirty(); if (address.IsValid()) - pwalletMain->SetAddressBookName(address.Get(), strLabel); + pwalletMain->SetAddressBookName(address, strLabel); if (!pwalletMain->AddWatchOnly(script)) throw JSONRPCError(RPC_WALLET_ERROR, "Error adding address to wallet"); @@ -161,13 +162,14 @@ Value removeaddress(const Array& params, bool fHelp) CBitcoinAddress address(params[0].get_str()); if (address.IsValid()) { - script.SetDestination(address.Get()); + if (address.IsPair()) + throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Pubkey pair addresses aren't supported."); + script.SetAddress(address); } else if (IsHex(params[0].get_str())) { std::vector data(ParseHex(params[0].get_str())); script = CScript(data.begin(), data.end()); - } else { + } else throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid Bitcoin address or script"); - } if (::IsMine(*pwalletMain, script) == MINE_SPENDABLE) throw JSONRPCError(RPC_WALLET_ERROR, "The wallet contains the private key for this address or script - can't remove it"); @@ -214,7 +216,7 @@ Value dumpprivkey(const Array& params, bool fHelp) CBitcoinAddress address; if (!address.SetString(strAddress)) throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid NovaCoin address"); - if (fWalletUnlockMintOnly) // ppcoin: no dumpprivkey in mint-only mode + if (fWalletUnlockMintOnly) throw JSONRPCError(RPC_WALLET_UNLOCK_NEEDED, "Wallet is unlocked for minting only."); CKeyID keyID; if (!address.GetKeyID(keyID)) @@ -282,7 +284,7 @@ Value importmalleablekey(const Array& params, bool fHelp) if (fSuccess) { - fSuccess = pwalletMain->AddMalleableKey(mKey); + fSuccess = pwalletMain->AddKey(mKey); result.push_back(Pair("Successful", fSuccess)); result.push_back(Pair("Address", CBitcoinAddress(mKey.GetMalleablePubKey()).ToString())); result.push_back(Pair("KeyView", CMalleableKeyView(mKey).ToString()));