Fix ProRegTx / ProUpServTx payload handling and version compatibility#47
Merged
pshenmic merged 2 commits intopshenmic:developfrom Feb 10, 2026
Merged
Fix ProRegTx / ProUpServTx payload handling and version compatibility#47pshenmic merged 2 commits intopshenmic:developfrom
pshenmic merged 2 commits intopshenmic:developfrom
Conversation
pshenmic
approved these changes
Feb 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR fixes multiple serialization and deserialization issues in DIP3 special transactions, primarily affecting
ProRegTxandProUpServTx.Key fixes
ProRegTx
payloadSighandling to always use CompactSize-prefixed varbytes, in accordance with the current Dash Core documentation.version >= 3by correctly consuming thenetInfofield as varbytes, ensuring proper stream alignment even without fullnetInfoparsing.Unexpected payloadSig sizeerrors when parsing real network transactions.ProUpServTx
Fixed payload version handling:
Corrected handling of optional Platform fields (
platformNodeID,platformP2PPort,platformHTTPPort) for masternode type 1.Documented and preserved the real-world endianness behavior of platform ports (LE on wire despite BE in docs), matching Dash Core behavior.
Fixed uninitialized variables during deserialization that could lead to
UnboundLocalError.Additional improvements
__str__output for DIP3 transactions to provide consistent, readable diagnostics without affecting GUI expectations.Motivation
These fixes were driven by real deserialization failures observed when parsing mainnet and testnet transactions after recent Dash Core protocol changes (v19+ and v24+).
The previous implementation mixed rules from different protocol versions, leading to invalid cursor alignment and broken transaction parsing.
Scope