-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
Refactor sporks to get rid of repeated if/else blocks #2946
Conversation
1875598
to
ad48a16
Compare
This also removes the need for SPORK_START/SPORK_END
ad48a16
to
9756cb6
Compare
Rebased on develop to pull in the mentioned commit from #2945 |
This ensures correct order of initialization.
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.
Nice work! Much cleaner!
utACK
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.
utACK
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.
post-ACK, sporks match on testnet as develop
84930b9 [Trivial] Align the format of the log messages in kernel.cpp (random-zebra) faa9090 [Trivial] rename DisconnectBlocks argument for consistency (random-zebra) 3df34c6 [Spork] fix CSporkManager maps (random-zebra) 3ec2f61 [Tests] spork functional test: check spork value after node restart (random-zebra) 8f6d6e1 [Core] ReprocessBlocks: adjust to PIVX blocktime (random-zebra) 50bfe70 Fix spork RPC to use new spork defs (random-zebra) fd05256 [Spork] Make CSporkMessage::vchSig private (random-zebra) 3709ba8 [Spork] Introduce CSporkDef and remove if/else blocks (random-zebra) 4df1046 [Spork] Define SporkId enum (with its serialization) (random-zebra) 41effbf [Spork] Remove unused SPORK_11 and SPORK_12 (random-zebra) 459e41a [Spork] Remove unused SPORK_7_MASTERNODE_SCANNING (random-zebra) 5124b89 [Spork] Do not accept sporks signed too far into the future (random-zebra) 806f607 [Spork] CSporkManager class serialization (random-zebra) cd33d3c [Spork] Protect CSporkManager with critical section (random-zebra) c41dd7c [Refactor] refactor/fix CSporkManager and CSporkMessage classes (random-zebra) ab603a1 [Refactor] rename SporkKey to SporkPubKey (random-zebra) Pull request description: Chengeset: - move ProcessSpork, GetSporkValue, IsSporkActive, ExecuteSpork and mapSporksActive to CSporkManager - move Sign, CheckSignature, Relay to CSporkMessage - move ReprocessBlocks out of sporks to main.cpp / rename DisconnectBlocksAndReprocess to DisconnectBlocks - rename SporkKey to SporkPubKey - bugfix: only set strMasterPrivKey if spork signature produced by that key was verified successfully - few log format changes, cleaned up includes - Protect CSporkManager with critical section - bugfix: do not accept sporks with nTimeSigned way too far into the future - remove unused sporks: 7, 11, 12 - Refactor code to get rid of repeated if/else blocks (introduce CSporkDef) Mostly based off of: - dashpay#922 - dashpay#2213 - dashpay#2578 - dashpay#2607 - dashpay#2946 ACKs for top commit: Warrows: ACK 84930b9 furszy: ACK [`84930b9`](84930b9) Tree-SHA512: 17f923e85371c444aa2092b12b025db1894c55679549d1a6a3d9f4525f8d78e9225d3f05e296643e7c79d02414bef1613f14d441901dc5f52531c3f30dce357c
84930b9 [Trivial] Align the format of the log messages in kernel.cpp (random-zebra) faa9090 [Trivial] rename DisconnectBlocks argument for consistency (random-zebra) 3df34c6 [Spork] fix CSporkManager maps (random-zebra) 3ec2f61 [Tests] spork functional test: check spork value after node restart (random-zebra) 8f6d6e1 [Core] ReprocessBlocks: adjust to PIVX blocktime (random-zebra) 50bfe70 Fix spork RPC to use new spork defs (random-zebra) fd05256 [Spork] Make CSporkMessage::vchSig private (random-zebra) 3709ba8 [Spork] Introduce CSporkDef and remove if/else blocks (random-zebra) 4df1046 [Spork] Define SporkId enum (with its serialization) (random-zebra) 41effbf [Spork] Remove unused SPORK_11 and SPORK_12 (random-zebra) 459e41a [Spork] Remove unused SPORK_7_MASTERNODE_SCANNING (random-zebra) 5124b89 [Spork] Do not accept sporks signed too far into the future (random-zebra) 806f607 [Spork] CSporkManager class serialization (random-zebra) cd33d3c [Spork] Protect CSporkManager with critical section (random-zebra) c41dd7c [Refactor] refactor/fix CSporkManager and CSporkMessage classes (random-zebra) ab603a1 [Refactor] rename SporkKey to SporkPubKey (random-zebra) Pull request description: Chengeset: - move ProcessSpork, GetSporkValue, IsSporkActive, ExecuteSpork and mapSporksActive to CSporkManager - move Sign, CheckSignature, Relay to CSporkMessage - move ReprocessBlocks out of sporks to main.cpp / rename DisconnectBlocksAndReprocess to DisconnectBlocks - rename SporkKey to SporkPubKey - bugfix: only set strMasterPrivKey if spork signature produced by that key was verified successfully - few log format changes, cleaned up includes - Protect CSporkManager with critical section - bugfix: do not accept sporks with nTimeSigned way too far into the future - remove unused sporks: 7, 11, 12 - Refactor code to get rid of repeated if/else blocks (introduce CSporkDef) Mostly based off of: - dashpay/dash#922 - dashpay/dash#2213 - dashpay/dash#2578 - dashpay/dash#2607 - dashpay/dash#2946 ACKs for top commit: Warrows: ACK 84930b9 furszy: ACK [`84930b9`](PIVX-Project/PIVX@84930b9) Tree-SHA512: 17f923e85371c444aa2092b12b025db1894c55679549d1a6a3d9f4525f8d78e9225d3f05e296643e7c79d02414bef1613f14d441901dc5f52531c3f30dce357c
84930b9 [Trivial] Align the format of the log messages in kernel.cpp (random-zebra) faa9090 [Trivial] rename DisconnectBlocks argument for consistency (random-zebra) 3df34c6 [Spork] fix CSporkManager maps (random-zebra) 3ec2f61 [Tests] spork functional test: check spork value after node restart (random-zebra) 8f6d6e1 [Core] ReprocessBlocks: adjust to PIVX blocktime (random-zebra) 50bfe70 Fix spork RPC to use new spork defs (random-zebra) fd05256 [Spork] Make CSporkMessage::vchSig private (random-zebra) 3709ba8 [Spork] Introduce CSporkDef and remove if/else blocks (random-zebra) 4df1046 [Spork] Define SporkId enum (with its serialization) (random-zebra) 41effbf [Spork] Remove unused SPORK_11 and SPORK_12 (random-zebra) 459e41a [Spork] Remove unused SPORK_7_MASTERNODE_SCANNING (random-zebra) 5124b89 [Spork] Do not accept sporks signed too far into the future (random-zebra) 806f607 [Spork] CSporkManager class serialization (random-zebra) cd33d3c [Spork] Protect CSporkManager with critical section (random-zebra) c41dd7c [Refactor] refactor/fix CSporkManager and CSporkMessage classes (random-zebra) ab603a1 [Refactor] rename SporkKey to SporkPubKey (random-zebra) Pull request description: Chengeset: - move ProcessSpork, GetSporkValue, IsSporkActive, ExecuteSpork and mapSporksActive to CSporkManager - move Sign, CheckSignature, Relay to CSporkMessage - move ReprocessBlocks out of sporks to main.cpp / rename DisconnectBlocksAndReprocess to DisconnectBlocks - rename SporkKey to SporkPubKey - bugfix: only set strMasterPrivKey if spork signature produced by that key was verified successfully - few log format changes, cleaned up includes - Protect CSporkManager with critical section - bugfix: do not accept sporks with nTimeSigned way too far into the future - remove unused sporks: 7, 11, 12 - Refactor code to get rid of repeated if/else blocks (introduce CSporkDef) Mostly based off of: - dashpay/dash#922 - dashpay/dash#2213 - dashpay/dash#2578 - dashpay/dash#2607 - dashpay/dash#2946 ACKs for top commit: Warrows: ACK 84930b9 furszy: ACK [`84930b9`](PIVX-Project/PIVX@84930b9) Tree-SHA512: 17f923e85371c444aa2092b12b025db1894c55679549d1a6a3d9f4525f8d78e9225d3f05e296643e7c79d02414bef1613f14d441901dc5f52531c3f30dce357c
* Use enum to define spork IDs * Introduce CSporkDef and remove if/else blocks in GetSporkIDByName/GetSporkNameByID * Deduplicate code in IsSporkActive * Fix spork RPC to use new spork defs This also removes the need for SPORK_START/SPORK_END * Move sporkManager global variable below sporkDefs This ensures correct order of initialization.
Instead use a class (
CSporkDef
) to define individual sporks and use maps to get from name->id and vice versa.This PR currently shares a commit with #2945, which adds support for enum serialization. I'll later rebase one of both PRs, depending on which one gets merged first.