diff --git a/src/evo/deterministicmns.cpp b/src/evo/deterministicmns.cpp index b83576a3ef145..66f87790e831f 100644 --- a/src/evo/deterministicmns.cpp +++ b/src/evo/deterministicmns.cpp @@ -83,6 +83,15 @@ void CDeterministicMN::ToJson(UniValue& obj) const obj.push_back(Pair("proTxHash", proTxHash.ToString())); obj.push_back(Pair("collateralHash", collateralOutpoint.hash.ToString())); obj.push_back(Pair("collateralIndex", (int)collateralOutpoint.n)); + + Coin coin; + if (GetUTXOCoin(collateralOutpoint, coin)) { + CTxDestination dest; + if (ExtractDestination(coin.out.scriptPubKey, dest)) { + obj.push_back(Pair("collateralAddress", CBitcoinAddress(dest).ToString())); + } + } + obj.push_back(Pair("operatorReward", (double)nOperatorReward / 100)); obj.push_back(Pair("state", stateObj)); } diff --git a/src/rpc/masternode.cpp b/src/rpc/masternode.cpp index c44c1d5cdfe67..74fb684bbad34 100644 --- a/src/rpc/masternode.cpp +++ b/src/rpc/masternode.cpp @@ -520,10 +520,18 @@ UniValue masternodelist(const JSONRPCRequest& request) mnList.ForEachMN(false, [&](const CDeterministicMNCPtr& dmn) { std::string strOutpoint = dmn->collateralOutpoint.ToStringShort(); + Coin coin; + std::string collateralAddressStr = "UNKNOWN"; + if (GetUTXOCoin(dmn->collateralOutpoint, coin)) { + CTxDestination collateralDest; + if (ExtractDestination(coin.out.scriptPubKey, collateralDest)) { + collateralAddressStr = CBitcoinAddress(collateralDest).ToString(); + } + } CScript payeeScript = dmn->pdmnState->scriptPayout; CTxDestination payeeDest; - std::string payeeStr = "UNKOWN"; + std::string payeeStr = "UNKNOWN"; if (ExtractDestination(payeeScript, payeeDest)) { payeeStr = CBitcoinAddress(payeeDest).ToString(); } @@ -564,6 +572,7 @@ UniValue masternodelist(const JSONRPCRequest& request) dmn->pdmnState->nLastPaidHeight << " " << CBitcoinAddress(dmn->pdmnState->keyIDOwner).ToString() << " " << CBitcoinAddress(dmn->pdmnState->keyIDVoting).ToString() << " " << + collateralAddressStr << " " << dmn->pdmnState->pubKeyOperator.ToString(); std::string strInfo = streamInfo.str(); if (strFilter !="" && strInfo.find(strFilter) == std::string::npos && @@ -576,6 +585,7 @@ UniValue masternodelist(const JSONRPCRequest& request) objMN.push_back(Pair("lastpaidblock", dmn->pdmnState->nLastPaidHeight)); objMN.push_back(Pair("owneraddress", CBitcoinAddress(dmn->pdmnState->keyIDOwner).ToString())); objMN.push_back(Pair("votingaddress", CBitcoinAddress(dmn->pdmnState->keyIDVoting).ToString())); + objMN.push_back(Pair("collateraladdress", collateralAddressStr)); objMN.push_back(Pair("pubkeyoperator", dmn->pdmnState->pubKeyOperator.ToString())); obj.push_back(Pair(strOutpoint, objMN)); } else if (strMode == "lastpaidblock") {