-
Notifications
You must be signed in to change notification settings - Fork 1.2k
fix!: use the same version along all protx special transactions #7302
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Changes from all commits
d999f4e
18eefe2
8ac1a2d
b8c3dbd
5f860a5
0e74a5e
8a18f44
3190451
a4cbf11
1b4bf1d
f1a8d0a
ed40c93
419ffa3
58e6cb7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -101,7 +101,7 @@ class CDeterministicMNState | |
| obj.keyIDVoting, | ||
| NetInfoSerWrapper(const_cast<std::shared_ptr<NetInfoInterface>&>(obj.netInfo), | ||
| obj.nVersion >= ProTxVersion::ExtAddr)); | ||
| if (obj.nVersion >= ProTxVersion::MultiPayout) { | ||
| if (obj.nVersion >= ProTxVersion::ExtAddr) { | ||
| READWRITE(obj.payouts); | ||
|
Comment on lines
+104
to
105
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
For nodes that have already written deterministic MN snapshots containing v3 states with the previous encoding, this switch makes Useful? React with 👍 / 👎. |
||
| } else { | ||
| READWRITE(obj.scriptPayout); | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because v3 states now take the
payoutsbranch, a basic v2 masternode upgraded by a post-v24ProUpServTxloses its owner payee: the service-update path inCSpecialTxProcessor::RebuildListFromBlockcan raisenVersionfrom 2 to 3 while only convertingnetInfo, and v2 states have an emptypayoutsvector because they serializedscriptPayout. After that,GetOwnerPayouts(state)returns an empty list, so masternode payment construction omits the owner payout (and callers that use.front()can fail) until a registrar update backfills it. Please migratescriptPayouttoLegacyPayoutAsListwhen any non-registrar version bump crossesExtAddr.Useful? React with 👍 / 👎.