77#include < obfuscation.h>
88#include < chain.h>
99#include < base58address.h>
10+ #include < script/standard.h>
1011#include < TransactionDiskAccessor.h>
1112#include < timedata.h>
1213#include < WalletTx.h>
@@ -112,6 +113,7 @@ bool createArgumentsFromConfig(
112113 bool collateralPrivKeyIsRemote,
113114 CTxIn& txin,
114115 std::pair<CKey,CPubKey>& masternodeKeyPair,
116+ CScript& rewardScript,
115117 std::pair<CKey,CPubKey>& masternodeCollateralKeyPair,
116118 MasternodeTier& nMasternodeTier)
117119{
@@ -147,6 +149,18 @@ bool createArgumentsFromConfig(
147149 {
148150 return false ;
149151 }
152+
153+ if (configEntry.getRewardAddress ().empty ())
154+ rewardScript = CMasternode::GetDefaultRewardScript (masternodeCollateralKeyPair.second );
155+ else {
156+ const CBitcoinAddress addr (configEntry.getRewardAddress ());
157+ if (!addr.IsValid ()) {
158+ strErrorRet = strprintf (" Invalid reward address for masternode: %s" , configEntry.getRewardAddress ());
159+ return false ;
160+ }
161+ rewardScript = GetScriptForDestination (addr.Get ());
162+ }
163+
150164 return true ;
151165}
152166
@@ -164,6 +178,7 @@ bool CMasternodeBroadcastFactory::Create(
164178 const bool deferRelay = true ;
165179 CTxIn txin;
166180 std::pair<CKey,CPubKey> masternodeCollateralKeyPair;
181+ CScript rewardScript;
167182 std::pair<CKey,CPubKey> masternodeKeyPair;
168183 MasternodeTier nMasternodeTier;
169184
@@ -175,6 +190,7 @@ bool CMasternodeBroadcastFactory::Create(
175190 collateralPrivateKeyIsRemote,
176191 txin,
177192 masternodeKeyPair,
193+ rewardScript,
178194 masternodeCollateralKeyPair,
179195 nMasternodeTier))
180196 {
@@ -185,6 +201,7 @@ bool CMasternodeBroadcastFactory::Create(
185201 txin,
186202 CService (configEntry.getIp ()),
187203 pubkeyCollateralAddress,
204+ rewardScript,
188205 masternodeKeyPair.second ,
189206 nMasternodeTier,
190207 deferRelay,
@@ -214,6 +231,7 @@ bool CMasternodeBroadcastFactory::Create(
214231
215232 CTxIn txin;
216233 std::pair<CKey,CPubKey> masternodeCollateralKeyPair;
234+ CScript rewardScript;
217235 std::pair<CKey,CPubKey> masternodeKeyPair;
218236 MasternodeTier nMasternodeTier;
219237
@@ -225,6 +243,7 @@ bool CMasternodeBroadcastFactory::Create(
225243 collateralPrivateKeyIsRemote,
226244 txin,
227245 masternodeKeyPair,
246+ rewardScript,
228247 masternodeCollateralKeyPair,
229248 nMasternodeTier))
230249 {
@@ -235,6 +254,7 @@ bool CMasternodeBroadcastFactory::Create(
235254 CService (strService),
236255 masternodeCollateralKeyPair.first ,
237256 masternodeCollateralKeyPair.second ,
257+ rewardScript,
238258 masternodeKeyPair.first ,
239259 masternodeKeyPair.second ,
240260 nMasternodeTier,
@@ -316,6 +336,7 @@ void CMasternodeBroadcastFactory::createWithoutSignatures(
316336 const CTxIn& txin,
317337 const CService& service,
318338 const CPubKey& pubKeyCollateralAddressNew,
339+ const CScript& rewardScript,
319340 const CPubKey& pubKeyMasternodeNew,
320341 const MasternodeTier nMasternodeTier,
321342 bool deferRelay,
@@ -325,7 +346,9 @@ void CMasternodeBroadcastFactory::createWithoutSignatures(
325346 CBitcoinAddress (pubKeyCollateralAddressNew.GetID ()).ToString (),
326347 pubKeyMasternodeNew.GetID ().ToString ());
327348
328- mnbRet = CMasternodeBroadcast (service, txin, pubKeyCollateralAddressNew, pubKeyMasternodeNew, nMasternodeTier, PROTOCOL_VERSION);
349+ mnbRet = CMasternodeBroadcast (service, txin,
350+ pubKeyCollateralAddressNew, rewardScript, pubKeyMasternodeNew,
351+ nMasternodeTier, PROTOCOL_VERSION);
329352 const CMasternodePing mnp = (deferRelay
330353 ? createDelayedMasternodePing (mnbRet)
331354 : createCurrentPing (txin));
@@ -354,6 +377,7 @@ bool CMasternodeBroadcastFactory::Create(
354377 const CService& service,
355378 const CKey& keyCollateralAddressNew,
356379 const CPubKey& pubKeyCollateralAddressNew,
380+ const CScript& rewardScript,
357381 const CKey& keyMasternodeNew,
358382 const CPubKey& pubKeyMasternodeNew,
359383 const MasternodeTier nMasternodeTier,
@@ -365,7 +389,7 @@ bool CMasternodeBroadcastFactory::Create(
365389 if (fImporting || fReindex ) return false ;
366390
367391 createWithoutSignatures (
368- txin,service,pubKeyCollateralAddressNew,pubKeyMasternodeNew,nMasternodeTier,deferRelay,mnbRet);
392+ txin,service,pubKeyCollateralAddressNew,rewardScript, pubKeyMasternodeNew,nMasternodeTier,deferRelay,mnbRet);
369393
370394 if (!provideSignatures (keyMasternodeNew,pubKeyMasternodeNew,keyCollateralAddressNew,mnbRet,strErrorRet))
371395 {
0 commit comments