@@ -963,29 +963,24 @@ bool DecodeHexMnb(CMasternodeBroadcast& mnb, std::string strHexMnb) {
963963
964964 return true ;
965965}
966-
967- UniValue masternodebroadcast (const UniValue& params, bool fHelp )
966+ UniValue createmasternodebroadcast (const UniValue& params, bool fHelp )
968967{
969- string strCommand;
970- if (params.size () >= 1 )
971- strCommand = params[0 ].get_str ();
972-
973- if (fHelp ||
974- (strCommand != " create-alias" && strCommand != " create-all" && strCommand != " decode" && strCommand != " relay" ))
975- throw runtime_error (
976- " masternodebroadcast \" command\" ... ( \" passphrase\" )\n "
977- " Set of commands to create and relay masternode broadcast messages\n "
978- " \n Arguments:\n "
979- " 1. \" command\" (string or set of strings, required) The command to execute\n "
980- " 2. \" passphrase\" (string, optional) The wallet passphrase\n "
981- " \n Available commands:\n "
982- " create-alias - Create single remote masternode broadcast message by assigned alias configured in masternode.conf\n "
983- " create-all - Create remote masternode broadcast messages for all masternodes configured in masternode.conf\n "
984- " decode - Decode masternode broadcast message\n "
985- " relay - Relay masternode broadcast message to the network\n "
986- + HelpRequiringPassphrase ());
987-
988- if (strCommand == " create-alias" )
968+ string strCommand;
969+ if (params.size () >= 1 )
970+ strCommand = params[0 ].get_str ();
971+ if (fHelp ||
972+ (strCommand != " alias" && strCommand != " all" ))
973+ throw runtime_error (
974+ " createmasternodebroadcast \" command\" "
975+ " Set of commands to create masternode broadcast messages for masternodes configured in masternode.conf\n "
976+ " \n Arguments:\n "
977+ " 1. \" command\" (string or set of strings, required) The command to execute\n "
978+ " \n Available commands:\n "
979+ " alias - Create single remote masternode broadcast message by assigned alias configured in masternode.conf\n "
980+ " all - Create remote masternode broadcast messages for all masternodes configured in masternode.conf\n "
981+ + HelpRequiringPassphrase ());
982+
983+ if (strCommand == " alias" )
989984 {
990985 // wait for reindex and/or import to finish
991986 if (fImporting || fReindex )
@@ -996,20 +991,8 @@ UniValue masternodebroadcast(const UniValue& params, bool fHelp)
996991
997992 std::string alias = params[1 ].get_str ();
998993
999- if (pwalletMain->IsLocked ()) {
1000- SecureString strWalletPass;
1001- strWalletPass.reserve (100 );
1002-
1003- if (params.size () == 3 ){
1004- strWalletPass = params[2 ].get_str ().c_str ();
1005- } else {
1006- throw JSONRPCError (RPC_WALLET_UNLOCK_NEEDED, " Your wallet is locked, passphrase is required" );
1007- }
1008-
1009- if (!pwalletMain->Unlock (strWalletPass)){
1010- throw JSONRPCError (RPC_WALLET_PASSPHRASE_INCORRECT, " The wallet passphrase entered was incorrect" );
1011- }
1012- }
994+ if (pwalletMain->IsLocked ())
995+ throw JSONRPCError (RPC_WALLET_UNLOCK_NEEDED, " Your wallet is locked, it needs to be unlocked first." );
1013996
1014997 bool found = false ;
1015998
@@ -1046,26 +1029,14 @@ UniValue masternodebroadcast(const UniValue& params, bool fHelp)
10461029
10471030 }
10481031
1049- if (strCommand == " create- all" )
1032+ if (strCommand == " all" )
10501033 {
10511034 // wait for reindex and/or import to finish
10521035 if (fImporting || fReindex )
10531036 throw JSONRPCError (RPC_INTERNAL_ERROR, " Wait for reindex and/or import to finish" );
10541037
1055- if (pwalletMain->IsLocked ()) {
1056- SecureString strWalletPass;
1057- strWalletPass.reserve (100 );
1058-
1059- if (params.size () == 2 ){
1060- strWalletPass = params[1 ].get_str ().c_str ();
1061- } else {
1062- throw JSONRPCError (RPC_WALLET_UNLOCK_NEEDED, " Your wallet is locked, passphrase is required" );
1063- }
1064-
1065- if (!pwalletMain->Unlock (strWalletPass)){
1066- throw JSONRPCError (RPC_WALLET_PASSPHRASE_INCORRECT, " The wallet passphrase entered was incorrect" );
1067- }
1068- }
1038+ if (pwalletMain->IsLocked ())
1039+ throw JSONRPCError (RPC_WALLET_UNLOCK_NEEDED, " Your wallet is locked, it needs to be unlocked first." );
10691040
10701041 std::vector<CMasternodeConfig::CMasternodeEntry> mnEntries;
10711042 mnEntries = masternodeConfig.getEntries ();
@@ -1108,59 +1079,75 @@ UniValue masternodebroadcast(const UniValue& params, bool fHelp)
11081079 return returnObj;
11091080 }
11101081
1111- if (strCommand == " decode" )
1112- {
1113- if (params.size () != 2 )
1114- throw JSONRPCError (RPC_INVALID_PARAMETER, " Correct usage is 'masternodebroadcast decode \" hexstring\" '" );
1082+ return NullUniValue;
11151083
1116- CMasternodeBroadcast mnb;
1084+ }
11171085
1118- if (!DecodeHexMnb (mnb, params[1 ].get_str ()))
1119- throw JSONRPCError (RPC_DESERIALIZATION_ERROR, " Masternode broadcast message decode failed" );
1086+ UniValue decodemasternodebroadcast (const UniValue& params, bool fHelp )
1087+ {
1088+ if (fHelp )
1089+ throw runtime_error (
1090+ " decodemasternodebroadcast \" hexstring\"\n "
1091+ " Command to decode masternode broadcast messages\n "
1092+ " \n Argument:\n "
1093+ " 1. \" hexstring\" (hex string) The masternode broadcast message\n " );
11201094
1121- if (!mnb. VerifySignature () )
1122- throw JSONRPCError (RPC_INVALID_PARAMETER, " Masternode broadcast signature verification failed " );
1095+ if (params. size () != 1 )
1096+ throw JSONRPCError (RPC_INVALID_PARAMETER, " Correct usage is 'decodemasternodebroadcast \" hexstring \" ' " );
11231097
1124- UniValue resultObj (UniValue::VOBJ) ;
1098+ CMasternodeBroadcast mnb ;
11251099
1126- resultObj.push_back (Pair (" vin" , mnb.vin .ToString ()));
1127- resultObj.push_back (Pair (" addr" , mnb.addr .ToString ()));
1128- resultObj.push_back (Pair (" pubkey" , CBitcoinAddress (mnb.pubKeyCollateralAddress .GetID ()).ToString ()));
1129- resultObj.push_back (Pair (" pubkey2" , CBitcoinAddress (mnb.pubKeyMasternode .GetID ()).ToString ()));
1130- resultObj.push_back (Pair (" vchSig" , EncodeBase64 (&mnb.sig [0 ], mnb.sig .size ())));
1131- resultObj.push_back (Pair (" sigTime" , mnb.sigTime ));
1132- resultObj.push_back (Pair (" protocolVersion" , mnb.protocolVersion ));
1133- resultObj.push_back (Pair (" nLastDsq" , mnb.nLastDsq ));
1100+ if (!DecodeHexMnb (mnb, params[0 ].get_str ()))
1101+ throw JSONRPCError (RPC_DESERIALIZATION_ERROR, " Masternode broadcast message decode failed" );
11341102
1135- UniValue lastPingObj (UniValue::VOBJ);
1136- lastPingObj.push_back (Pair (" vin" , mnb.lastPing .vin .ToString ()));
1137- lastPingObj.push_back (Pair (" blockHash" , mnb.lastPing .blockHash .ToString ()));
1138- lastPingObj.push_back (Pair (" sigTime" , mnb.lastPing .sigTime ));
1139- lastPingObj.push_back (Pair (" vchSig" , EncodeBase64 (&mnb.lastPing .vchSig [0 ], mnb.lastPing .vchSig .size ())));
1103+ if (!mnb.VerifySignature ())
1104+ throw JSONRPCError (RPC_INVALID_PARAMETER, " Masternode broadcast signature verification failed" );
11401105
1141- resultObj. push_back ( Pair ( " lastPing " , lastPingObj) );
1106+ UniValue resultObj (UniValue::VOBJ );
11421107
1143- return resultObj;
1144- }
1108+ resultObj.push_back (Pair (" vin" , mnb.vin .ToString ()));
1109+ resultObj.push_back (Pair (" addr" , mnb.addr .ToString ()));
1110+ resultObj.push_back (Pair (" pubkey" , CBitcoinAddress (mnb.pubKeyCollateralAddress .GetID ()).ToString ()));
1111+ resultObj.push_back (Pair (" pubkey2" , CBitcoinAddress (mnb.pubKeyMasternode .GetID ()).ToString ()));
1112+ resultObj.push_back (Pair (" vchSig" , EncodeBase64 (&mnb.sig [0 ], mnb.sig .size ())));
1113+ resultObj.push_back (Pair (" sigTime" , mnb.sigTime ));
1114+ resultObj.push_back (Pair (" protocolVersion" , mnb.protocolVersion ));
1115+ resultObj.push_back (Pair (" nLastDsq" , mnb.nLastDsq ));
11451116
1146- if (strCommand == " relay" )
1147- {
1148- if (params.size () != 2 )
1149- throw JSONRPCError (RPC_INVALID_PARAMETER, " Correct usage is 'masternodebroadcast relay \" hexstring\" '" );
1117+ UniValue lastPingObj (UniValue::VOBJ);
1118+ lastPingObj.push_back (Pair (" vin" , mnb.lastPing .vin .ToString ()));
1119+ lastPingObj.push_back (Pair (" blockHash" , mnb.lastPing .blockHash .ToString ()));
1120+ lastPingObj.push_back (Pair (" sigTime" , mnb.lastPing .sigTime ));
1121+ lastPingObj.push_back (Pair (" vchSig" , EncodeBase64 (&mnb.lastPing .vchSig [0 ], mnb.lastPing .vchSig .size ())));
11501122
1151- CMasternodeBroadcast mnb ;
1123+ resultObj. push_back ( Pair ( " lastPing " , lastPingObj)) ;
11521124
1153- if (! DecodeHexMnb (mnb, params[ 1 ]. get_str ()))
1154- throw JSONRPCError (RPC_DESERIALIZATION_ERROR, " Masternode broadcast message decode failed " );
1125+ return resultObj;
1126+ }
11551127
1156- if (!mnb.VerifySignature ())
1157- throw JSONRPCError (RPC_INVALID_PARAMETER, " Masternode broadcast signature verification failed" );
1128+ UniValue relaymasternodebroadcast (const UniValue& params, bool fHelp )
1129+ {
1130+ if (fHelp )
1131+ throw runtime_error (
1132+ " relaymasternodebroadcast \" hexstring\"\n "
1133+ " Command to relay masternode broadcast messages\n "
1134+ " \n Arguments:\n "
1135+ " 1. \" hexstring\" (hex string) The masternode broadcast message\n " );
11581136
1159- mnodeman. UpdateMasternodeList (mnb);
1160- mnb. Relay ( );
1137+ if (params. size () != 1 )
1138+ throw JSONRPCError (RPC_INVALID_PARAMETER, " Correct usage is 'relaymasternodebroadcast \" hexstring \" ' " );
11611139
1162- return strprintf (" Masternode broadcast sent (service %s, vin %s)" , mnb.addr .ToString (), mnb.vin .ToString ());
1163- }
1140+ CMasternodeBroadcast mnb;
11641141
1165- return UniValue (UniValue::VOBJ);
1142+ if (!DecodeHexMnb (mnb, params[0 ].get_str ()))
1143+ throw JSONRPCError (RPC_DESERIALIZATION_ERROR, " Masternode broadcast message decode failed" );
1144+
1145+ if (!mnb.VerifySignature ())
1146+ throw JSONRPCError (RPC_INVALID_PARAMETER, " Masternode broadcast signature verification failed" );
1147+
1148+ mnodeman.UpdateMasternodeList (mnb);
1149+ mnb.Relay ();
1150+
1151+ return strprintf (" Masternode broadcast sent (service %s, vin %s)" , mnb.addr .ToString (), mnb.vin .ToString ());
11661152}
1153+
0 commit comments