Merge pull request #1451 from levoncrypto/masternode-status
What changed, and why it matters
This commit simplifies how the Stack Wallet app displays Firo masternode status. Previously, the app distinguished between masternodes that were 'banned' and those that were 'revoked'. Now both conditions are shown as 'BANNED' with a red color. This is a user-interface labeling change; it does not appear to alter wallet security, transaction handling, or private keys.
No security action required. Treat as a routine UI/UX update. If desired, verify that the Firo masternode status semantics (revoked == banned) match upstream Firo protocol expectations, but this is a correctness/consistency concern rather than a vulnerability.
Security signals we found
No cryptographic, authentication, or transaction logic changed
No input validation, parsing, or serialization logic changed
Change is limited to enum values and UI color mapping
No memory-unsafe code, network calls, or file operations modified
Evidence from the diff
The patch removes the MasternodeStatus.revoked enum value and merges the revoked condition (revocationReason != 0) into the banned condition (poseBanHeight != -1). The UI color mapping now uses accentColorRed for banned statuses instead of orange for banned and red for revoked. The change is purely presentational in masternodes_list.dart and firo_wallet.dart.
Changed components
lib/pages/masternodes/sub_widgets/masternodes_list.dartlib/wallets/wallet/impl/firo_wallet.dartInspect captured patch +5 / −6
### lib/pages/masternodes/sub_widgets/masternodes_list.dart
@@ -108,8 +108,7 @@ class _MasternodeCard extends StatelessWidget {
decoration: BoxDecoration(
color: switch (status) {
MasternodeStatus.active => stack.accentColorGreen,
- MasternodeStatus.banned => stack.accentColorOrange,
- MasternodeStatus.revoked => stack.accentColorRed,
+ MasternodeStatus.banned => stack.accentColorRed,
},
borderRadius: BorderRadius.circular(8),
),
### lib/wallets/wallet/impl/firo_wallet.dart
@@ -34,8 +34,7 @@ import 'firo_transaction_type.dart';
enum MasternodeStatus {
active("ACTIVE"),
- banned("BANNED"),
- revoked("REVOKED");
+ banned("BANNED");
const MasternodeStatus(this.label);
@@ -82,8 +81,9 @@ class MasternodeInfo {
});
MasternodeStatus get status {
- if (revocationReason != 0) return MasternodeStatus.revoked;
- if (poseBanHeight != -1) return MasternodeStatus.banned;
+ if (revocationReason != 0 || poseBanHeight != -1) {
+ return MasternodeStatus.banned;
+ }
return MasternodeStatus.active;
}
Why this scored 19/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.