88#include < wallet.h>
99#include < chain.h>
1010#include < base58address.h>
11+ #include < script/standard.h>
1112#include < TransactionDiskAccessor.h>
1213#include < timedata.h>
1314#include < WalletTx.h>
@@ -105,6 +106,7 @@ bool createArgumentsFromConfig(
105106 bool collateralPrivKeyIsRemote,
106107 CTxIn& txin,
107108 std::pair<CKey,CPubKey>& masternodeKeyPair,
109+ CScript& rewardScript,
108110 std::pair<CKey,CPubKey>& masternodeCollateralKeyPair,
109111 MasternodeTier& nMasternodeTier
110112 )
@@ -121,6 +123,18 @@ bool createArgumentsFromConfig(
121123 {
122124 return false ;
123125 }
126+
127+ if (configEntry.getRewardAddress ().empty ())
128+ rewardScript = CMasternode::GetDefaultRewardScript (masternodeCollateralKeyPair.second );
129+ else {
130+ const CBitcoinAddress addr (configEntry.getRewardAddress ());
131+ if (!addr.IsValid ()) {
132+ strErrorRet = strprintf (" Invalid reward address for masternode: %s" , configEntry.getRewardAddress ());
133+ return false ;
134+ }
135+ rewardScript = GetScriptForDestination (addr.Get ());
136+ }
137+
124138 return true ;
125139}
126140
@@ -137,6 +151,7 @@ bool CMasternodeBroadcastFactory::Create(
137151 const bool deferRelay = true ;
138152 CTxIn txin;
139153 std::pair<CKey,CPubKey> masternodeCollateralKeyPair;
154+ CScript rewardScript;
140155 std::pair<CKey,CPubKey> masternodeKeyPair;
141156 MasternodeTier nMasternodeTier;
142157
@@ -147,6 +162,7 @@ bool CMasternodeBroadcastFactory::Create(
147162 collateralPrivateKeyIsRemote,
148163 txin,
149164 masternodeKeyPair,
165+ rewardScript,
150166 masternodeCollateralKeyPair,
151167 nMasternodeTier))
152168 {
@@ -157,6 +173,7 @@ bool CMasternodeBroadcastFactory::Create(
157173 txin,
158174 CService (configEntry.getIp ()),
159175 pubkeyCollateralAddress,
176+ rewardScript,
160177 masternodeKeyPair.second ,
161178 nMasternodeTier,
162179 deferRelay,
@@ -185,6 +202,7 @@ bool CMasternodeBroadcastFactory::Create(
185202
186203 CTxIn txin;
187204 std::pair<CKey,CPubKey> masternodeCollateralKeyPair;
205+ CScript rewardScript;
188206 std::pair<CKey,CPubKey> masternodeKeyPair;
189207 MasternodeTier nMasternodeTier;
190208
@@ -195,6 +213,7 @@ bool CMasternodeBroadcastFactory::Create(
195213 collateralPrivateKeyIsRemote,
196214 txin,
197215 masternodeKeyPair,
216+ rewardScript,
198217 masternodeCollateralKeyPair,
199218 nMasternodeTier))
200219 {
@@ -205,6 +224,7 @@ bool CMasternodeBroadcastFactory::Create(
205224 CService (strService),
206225 masternodeCollateralKeyPair.first ,
207226 masternodeCollateralKeyPair.second ,
227+ rewardScript,
208228 masternodeKeyPair.first ,
209229 masternodeKeyPair.second ,
210230 nMasternodeTier,
@@ -286,6 +306,7 @@ void CMasternodeBroadcastFactory::createWithoutSignatures(
286306 const CTxIn& txin,
287307 const CService& service,
288308 const CPubKey& pubKeyCollateralAddressNew,
309+ const CScript& rewardScript,
289310 const CPubKey& pubKeyMasternodeNew,
290311 const MasternodeTier nMasternodeTier,
291312 bool deferRelay,
@@ -295,7 +316,9 @@ void CMasternodeBroadcastFactory::createWithoutSignatures(
295316 CBitcoinAddress (pubKeyCollateralAddressNew.GetID ()).ToString (),
296317 pubKeyMasternodeNew.GetID ().ToString ());
297318
298- mnbRet = CMasternodeBroadcast (service, txin, pubKeyCollateralAddressNew, pubKeyMasternodeNew, nMasternodeTier, PROTOCOL_VERSION);
319+ mnbRet = CMasternodeBroadcast (service, txin,
320+ pubKeyCollateralAddressNew, rewardScript, pubKeyMasternodeNew,
321+ nMasternodeTier, PROTOCOL_VERSION);
299322 const CMasternodePing mnp = (deferRelay
300323 ? createDelayedMasternodePing (mnbRet)
301324 : createCurrentPing (txin));
@@ -308,6 +331,7 @@ bool CMasternodeBroadcastFactory::Create(
308331 const CService& service,
309332 const CKey& keyCollateralAddressNew,
310333 const CPubKey& pubKeyCollateralAddressNew,
334+ const CScript& rewardScript,
311335 const CKey& keyMasternodeNew,
312336 const CPubKey& pubKeyMasternodeNew,
313337 const MasternodeTier nMasternodeTier,
@@ -319,7 +343,7 @@ bool CMasternodeBroadcastFactory::Create(
319343 if (fImporting || fReindex ) return false ;
320344
321345 createWithoutSignatures (
322- txin,service,pubKeyCollateralAddressNew,pubKeyMasternodeNew,nMasternodeTier,deferRelay,mnbRet);
346+ txin,service,pubKeyCollateralAddressNew,rewardScript, pubKeyMasternodeNew,nMasternodeTier,deferRelay,mnbRet);
323347
324348 if (!provideSignatures (keyMasternodeNew,pubKeyMasternodeNew,keyCollateralAddressNew,mnbRet,strErrorRet))
325349 {
0 commit comments