X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Frpcrawtransaction.cpp;h=b8365c633d525493dfdefc763bd883f408aab5ab;hb=63e4509c569f16145ab861717baf865fc6d05af1;hp=127215665ff362b731592f006e423fe1690e82ff;hpb=fbd44e84d5841867d36d295d4f347fd5e55d293f;p=novacoin.git diff --git a/src/rpcrawtransaction.cpp b/src/rpcrawtransaction.cpp index 1272156..b8365c6 100644 --- a/src/rpcrawtransaction.cpp +++ b/src/rpcrawtransaction.cpp @@ -296,23 +296,15 @@ Value createrawtransaction(const Array& params, bool fHelp) if (address.IsValid()) { + scriptPubKey.SetAddress(address); + + // Don't perform duplication checking for pubkey-pair addresses if (!address.IsPair()) { - scriptPubKey.SetDestination(address.Get()); if (setAddress.count(address)) throw JSONRPCError(RPC_INVALID_PARAMETER, string("Invalid parameter, duplicated address: ")+s.name_); setAddress.insert(address); } - else - { - CMalleablePubKey mpk; - if (!mpk.setvch(address.GetData())) - throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, string("Invalid output destination: ")+s.name_); - - CPubKey R, pubKeyVariant; - mpk.GetVariant(R, pubKeyVariant); - scriptPubKey.SetDestination(R, pubKeyVariant); - } } else throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, string("Invalid output destination: ")+s.name_); @@ -660,7 +652,7 @@ Value createmultisig(const Array& params, bool fHelp) "(got %" PRIszu " keys, but need at least %d to redeem)", keys.size(), nRequired)); if (keys.size() > 16) throw runtime_error("Number of addresses involved in the multisignature address creation > 16\nReduce the number"); - std::vector pubkeys; + std::vector pubkeys; pubkeys.resize(keys.size()); for (unsigned int i = 0; i < keys.size(); i++) { @@ -678,16 +670,18 @@ Value createmultisig(const Array& params, bool fHelp) if (!pwalletMain->GetPubKey(keyID, vchPubKey)) throw runtime_error( strprintf("no full public key for address %s",ks.c_str())); - if (!vchPubKey.IsValid() || !pubkeys[i].SetPubKey(vchPubKey)) + if (!vchPubKey.IsFullyValid()) throw runtime_error(" Invalid public key: "+ks); + pubkeys[i] = vchPubKey; } // Case 2: hex public key else if (IsHex(ks)) { CPubKey vchPubKey(ParseHex(ks)); - if (!vchPubKey.IsValid() || !pubkeys[i].SetPubKey(vchPubKey)) + if (!vchPubKey.IsFullyValid()) throw runtime_error(" Invalid public key: "+ks); + pubkeys[i] = vchPubKey; } else {