Merge branch 'master' of github.com:novacoin-project/novacoin
authorCryptoManiac <balthazar@yandex.ru>
Fri, 19 Feb 2016 20:35:43 +0000 (23:35 +0300)
committerCryptoManiac <balthazar@yandex.ru>
Fri, 19 Feb 2016 20:35:43 +0000 (23:35 +0300)
1  2 
src/rpcrawtransaction.cpp

@@@ -43,11 -43,9 +43,9 @@@ void ScriptPubKeyToJSON(const CScript& 
          if (type == TX_PUBKEY_DROP)
          {
              vector<valtype> vSolutions;
-             if (!Solver(scriptPubKey, type, vSolutions))
-             {
-                 out.push_back(Pair("keyVariant", HexStr(vSolutions[0])));
-                 out.push_back(Pair("R", HexStr(vSolutions[1])));
-             }
+             Solver(scriptPubKey, type, vSolutions);
+             out.push_back(Pair("keyVariant", HexStr(vSolutions[0])));
+             out.push_back(Pair("R", HexStr(vSolutions[1])));
          }
  
          Array a;
@@@ -286,27 -284,16 +284,27 @@@ Value createrawtransaction(const Array
      set<CBitcoinAddress> setAddress;
      BOOST_FOREACH(const Pair& s, sendTo)
      {
 +        // Create output destination script
 +        CScript scriptPubKey;
          CBitcoinAddress address(s.name_);
          if (!address.IsValid())
 -            throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, string("Invalid NovaCoin address: ")+s.name_);
 +        {
 +            CMalleablePubKey mpk(s.name_);
 +            if (!mpk.IsValid())
 +                throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, string("Invalid output destination: ")+s.name_);
  
 -        if (setAddress.count(address))
 -            throw JSONRPCError(RPC_INVALID_PARAMETER, string("Invalid parameter, duplicated address: ")+s.name_);
 -        setAddress.insert(address);
 +            CPubKey keyVariant, R;
 +            mpk.GetVariant(R, keyVariant);
 +            scriptPubKey.SetDestination(R, keyVariant);
 +        }
 +        else
 +        {
 +            scriptPubKey.SetDestination(address.Get());
 +            if (setAddress.count(address))
 +                throw JSONRPCError(RPC_INVALID_PARAMETER, string("Invalid parameter, duplicated address: ")+s.name_);
 +            setAddress.insert(address);
 +        }
  
 -        CScript scriptPubKey;
 -        scriptPubKey.SetDestination(address.Get());
          int64_t nAmount = AmountFromValue(s.value_);
  
          CTxOut out(nAmount, scriptPubKey);