Skip to content

Commit dd8a410

Browse files
WarrowsFuzzbawls
authored andcommitted
[Qt] Fix mn reward showing as zPIV stake
1 parent 6b0b6d0 commit dd8a410

File tree

1 file changed

+22
-26
lines changed

1 file changed

+22
-26
lines changed

src/qt/transactionrecord.cpp

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,28 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet*
5353
if (!wtx.IsZerocoinSpend() && !ExtractDestination(wtx.vout[1].scriptPubKey, address))
5454
return parts;
5555

56-
//Masternode reward
57-
CTxDestination destMN;
58-
int nIndexMN = wtx.vout.size() - 1;
59-
if (ExtractDestination(wtx.vout[nIndexMN].scriptPubKey, destMN)) {
60-
if (IsMine(*wallet, destMN)) {
56+
if (wtx.IsZerocoinSpend() && (fZSpendFromMe || wallet->zpivTracker->HasMintTx(hash))) {
57+
//zPIV stake reward
58+
sub.involvesWatchAddress = false;
59+
sub.type = TransactionRecord::StakeZPIV;
60+
sub.address = mapValue["zerocoinmint"];
61+
sub.credit = 0;
62+
for (const CTxOut& out : wtx.vout) {
63+
if (out.IsZerocoinMint())
64+
sub.credit += out.nValue;
65+
}
66+
sub.debit -= wtx.vin[0].nSequence * COIN;
67+
} else if (isminetype mine = wallet->IsMine(wtx.vout[1])) {
68+
// PIV stake reward
69+
sub.involvesWatchAddress = mine & ISMINE_WATCH_ONLY;
70+
sub.type = TransactionRecord::StakeMint;
71+
sub.address = CBitcoinAddress(address).ToString();
72+
sub.credit = wtx.vout[1].nValue;
73+
} else {
74+
//Masternode reward
75+
CTxDestination destMN;
76+
int nIndexMN = wtx.vout.size() - 1;
77+
if (ExtractDestination(wtx.vout[nIndexMN].scriptPubKey, destMN) && IsMine(*wallet, destMN)) {
6178
isminetype mine = wallet->IsMine(wtx.vout[nIndexMN]);
6279
sub.involvesWatchAddress = mine & ISMINE_WATCH_ONLY;
6380
sub.type = TransactionRecord::MNReward;
@@ -66,27 +83,6 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const CWallet*
6683
}
6784
}
6885

69-
//stake reward
70-
if (wtx.IsZerocoinSpend()) {
71-
if (fZSpendFromMe || wallet->zpivTracker->HasMintTx(hash)) {
72-
sub.involvesWatchAddress = false;
73-
sub.type = TransactionRecord::StakeZPIV;
74-
sub.address = mapValue["zerocoinmint"];
75-
sub.credit = nNet;
76-
for (const CTxOut& out : wtx.vout) {
77-
if (out.IsZerocoinMint())
78-
sub.credit += out.nValue;
79-
}
80-
sub.debit -= wtx.vin[0].nSequence * COIN;
81-
}
82-
} else {
83-
isminetype mine = wallet->IsMine(wtx.vout[1]);
84-
sub.involvesWatchAddress = mine & ISMINE_WATCH_ONLY;
85-
sub.type = TransactionRecord::StakeMint;
86-
sub.address = CBitcoinAddress(address).ToString();
87-
sub.credit = nNet;
88-
}
89-
9086
parts.append(sub);
9187
} else if (wtx.IsZerocoinSpend()) {
9288
//zerocoin spend outputs

0 commit comments

Comments
 (0)