@@ -55,13 +55,14 @@ UniValue mnping(const JSONRPCRequest& request)
5555
5656UniValue initmasternode (const JSONRPCRequest& request)
5757{
58- if (request.fHelp || (request.params .empty () || request.params .size () > 2 )) {
58+ if (request.fHelp || (request.params .size () < 2 || request.params .size () > 3 )) {
5959 throw std::runtime_error (
60- " initmasternode ( \" masternodePrivKey\" \" masternodeAddr\" )\n "
60+ " initmasternode \" masternodePrivKey\" \" masternodeAddr\" ( deterministic )\n "
6161 " \n Initialize masternode on demand if it's not already initialized.\n "
6262 " \n Arguments:\n "
6363 " 1. masternodePrivKey (string, required) The masternode private key.\n "
6464 " 2. masternodeAddr (string, required) The IP:Port of this masternode.\n "
65+ " 3. deterministic (boolean, optional, default=false) Init as DMN.\n "
6566
6667 " \n Result:\n "
6768 " success (string) if the masternode initialization succeeded.\n "
@@ -73,6 +74,21 @@ UniValue initmasternode(const JSONRPCRequest& request)
7374
7475 std::string _strMasterNodePrivKey = request.params [0 ].get_str ();
7576 std::string _strMasterNodeAddr = request.params [1 ].get_str ();
77+ bool fDeterministic = request.params .size () > 2 && request.params [2 ].get_bool ();
78+ if (fDeterministic ) {
79+ if (!activeMasternodeManager) {
80+ activeMasternodeManager = new CActiveDeterministicMasternodeManager ();
81+ RegisterValidationInterface (activeMasternodeManager);
82+ }
83+ auto res = activeMasternodeManager->SetOperatorKey (_strMasterNodePrivKey);
84+ if (!res) throw std::runtime_error (res.getError ());
85+ activeMasternodeManager->Init ();
86+ if (activeMasternodeManager->GetState () == CActiveDeterministicMasternodeManager::MASTERNODE_ERROR) {
87+ throw std::runtime_error (activeMasternodeManager->GetStatus ());
88+ }
89+ return " success" ;
90+ }
91+ // legacy
7692 auto res = initMasternode (_strMasterNodePrivKey, _strMasterNodeAddr, false );
7793 if (!res) throw std::runtime_error (res.getError ());
7894 return " success" ;
@@ -200,7 +216,7 @@ UniValue listmasternodes(const JSONRPCRequest& request)
200216 obj.pushKV (" network" , strNetwork);
201217 obj.pushKV (" txhash" , strTxHash);
202218 obj.pushKV (" outidx" , (uint64_t )oIdx);
203- obj.pushKV (" pubkey" , HexStr (mn.pubKeyMasternode ));
219+ obj.pushKV (" pubkey" , EncodeDestination (mn.pubKeyMasternode . GetID () ));
204220 obj.pushKV (" status" , strStatus);
205221 obj.pushKV (" addr" , EncodeDestination (mn.pubKeyCollateralAddress .GetID ()));
206222 obj.pushKV (" version" , mn.protocolVersion );
0 commit comments