forked from bitcoin/bitcoin
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Implement quorum merkle roots for DIP4 coinbases and add quorums to MNLISTDIFF #2833
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
Merged
Conversation
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
This allow to pre-serialize keys in advance and pass the serialized form into these classes.
...instead of comparing by using the keys < operator. There are 2 reasons for this: 1. This better mimics the behavior of CDBWrapper. Otherwise there is a chance of discrepancy when it comes to key equality. 2. Next commit will introduce CDBTransactionIterator, which relies on CDBTransaction and CDBWrapper being compatible in the way keys are compared.
This iterator allows merged iteration of the key/values from the parent and the not-yet-committed key/values from the transaction. This also works for nested transactions (as used in CEvoDB). It's interface mimics CDBIterator.
Instead of just individual fields of it.
Also add upgrade code to allow smooth upgrades from v13 to v14.
…Quorums This fixes a bug in ScanQuorums which made it return quorums which were not mined at the time of pindexStart. This was due to quorumHashes being based on older blocks (the phase=0 block) which are ancestors of pindexStart even if the commitment was actually mined in a later block. GetMinedAndActiveCommitmentsUntilBlock is also going to be used for quorum commitment merkle roots in CCbTx. This also removes GetFirstMinedQuorumHash as it's not needed anymore.
This bumps CCbTx::CURRENT_VERSION to 2 and enforces the new version after DIP8 BIP9 activation.
And return it in GetMinedCommitment and the "quorum info" RPC
The block hash is not necessarily set at this point, for example when coming from TestBlockValidity().
Also implement support for new fields in MNLISTDIFF.
Otherwise the fresh quorum won't be eligable for signing sessions.
UdjinM6
requested changes
Apr 4, 2019
UdjinM6
left a comment
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.
Pls see inline comments
Co-Authored-By: codablock <[email protected]>
ff27f85 to
1a25c20
Compare
UdjinM6
approved these changes
Apr 4, 2019
UdjinM6
left a comment
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.
👍
Slightly tested ACK
thephez
added a commit
to thephez/dash-docs
that referenced
this pull request
Apr 8, 2019
- Add merkleRootQuorums field Related to dashpay/dash#2833
thephez
added a commit
to dash-docs/dash-docs
that referenced
this pull request
Apr 10, 2019
* RPC - Update masternode current and winner - Remove protocol, lastseen, activeseconds * RPC - Remove gobject getvotes - Related to dashpay/dash#2815 * RPC - Protx diff update - Add merkleRootQuorums field Related to dashpay/dash#2833 * RPC - listunspent update Related to dashpay/dash#2727 * RPC - protx update_registrar update - Rename votingKeyAddr to votingAddress Related to dashpay/dash#2747 * RPC - Add bls fromsecret Related to dashpay/dash#2841 * RPC - Start adding quorum RPCs * RPC - Add quorum info details Minor formatting updates * RPC - Add placeholders for remaining quorum sub-commands * RPC - Add quorum sign/hasrecsig/isconflicting details * RPC - Add note to regtest only quorum RPCs * RPC - Add more detail to quorum dkgstatus * Typo fix * Minor format and example updates * RPC - Add more quorum dkgstatus details - Field descriptions * RPC - Add quorum dkgstatus detail level 1 and 2 info * RPC - protx update - Remove support for "0" Related to dashpay/dash#2622
thephez
added a commit
to thephez/dash-docs
that referenced
this pull request
May 17, 2019
* RPC - Update masternode current and winner - Remove protocol, lastseen, activeseconds * RPC - Remove gobject getvotes - Related to dashpay/dash#2815 * RPC - Protx diff update - Add merkleRootQuorums field Related to dashpay/dash#2833 * RPC - listunspent update Related to dashpay/dash#2727 * RPC - protx update_registrar update - Rename votingKeyAddr to votingAddress Related to dashpay/dash#2747 * RPC - Add bls fromsecret Related to dashpay/dash#2841 * RPC - Start adding quorum RPCs * RPC - Add quorum info details Minor formatting updates * RPC - Add placeholders for remaining quorum sub-commands * RPC - Add quorum sign/hasrecsig/isconflicting details * RPC - Add note to regtest only quorum RPCs * RPC - Add more detail to quorum dkgstatus * Typo fix * Minor format and example updates * RPC - Add more quorum dkgstatus details - Field descriptions * RPC - Add quorum dkgstatus detail level 1 and 2 info * RPC - protx update - Remove support for "0" Related to dashpay/dash#2622
thephez
added a commit
to dash-docs/dash-docs
that referenced
this pull request
May 17, 2019
* RPC - Update masternode current and winner - Remove protocol, lastseen, activeseconds * RPC - Remove gobject getvotes - Related to dashpay/dash#2815 * RPC - Protx diff update - Add merkleRootQuorums field Related to dashpay/dash#2833 * RPC - listunspent update Related to dashpay/dash#2727 * RPC - protx update_registrar update - Rename votingKeyAddr to votingAddress Related to dashpay/dash#2747 * RPC - Add bls fromsecret Related to dashpay/dash#2841 * RPC - Start adding quorum RPCs * RPC - Add quorum info details Minor formatting updates * RPC - Add placeholders for remaining quorum sub-commands * RPC - Add quorum sign/hasrecsig/isconflicting details * RPC - Add note to regtest only quorum RPCs * RPC - Add more detail to quorum dkgstatus * Typo fix * Minor format and example updates * RPC - Add more quorum dkgstatus details - Field descriptions * RPC - Add quorum dkgstatus detail level 1 and 2 info * RPC - protx update - Remove support for "0" Related to dashpay/dash#2622
Duddino
pushed a commit
to Duddino/PIVX
that referenced
this pull request
Nov 6, 2024
Implement quorum merkle roots for DIP4 coinbases and add quorums to MNLISTDIFF
panleone
pushed a commit
to panleone/PIVX
that referenced
this pull request
Nov 15, 2024
Fuzzbawls
added a commit
to PIVX-Project/PIVX
that referenced
this pull request
Jan 11, 2025
a85b450 Merge pull request dashpay#3399 from codablock/pr_speedups2 (Alexander Block) 136f900 cherry-pick dashpay#2833 (Alexander Block) d942439 Merge pull request dashpay#3389 from codablock/pr_concentrated_recovery (Alexander Block) 36790d2 cherry pick dashpay#3368 (Author Alexander Block) dac01a9 cherry-pick dashpay#2780 (Alexander Block) 39d0ed9 cherry-pick dashpay#3367 (Alexander Block) 5084bbf Allow re-signing of IS locks when performing retroactive signing (dashpay#3219) (Alexander Block) 802c006 Only track last seen time instead of first and last seen time (dashpay#3165) (Alexander Block) 479b64b Avoid propagating InstantSend related old recovered sigs (dashpay#3145) (Alexander Block) 27fa2af cherry-pick dashpay#3117 (Pasta) cf138e0 cherry-pick dashpay#3097 (Pasta) 23b140e Introduce getbestchainlock rpc and fix llmq-is-cl-conflicts.py (dashpay#3094) (UdjinM6) Pull request description: as usual each commit backports a different PR ACKs for top commit: a85b450 Duddino: utACK a85b450 Liquid369: uTACK a85b450 Fuzzbawls: ACK a85b450 Tree-SHA512: e9024d180888d8a6cc300ba9df74fc15929e3ade1773e5d312bd8cc93f6c9fd3898c5bf2d14672abf4faba576575c33936708e6e1dfd01a393479d264d3f2c57
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 adds merkle roots for the currently active LLMQ sets to the DIP4 coinbase. This also results in a version bump for CCbTx.
The
MNLISTDIFFP2P message andprotx diffRPC are also enhanced to include the new quorum information. It is structured the same way as with the masternode list diffs and includes deleted and new quorums.With these changes, SPV nodes should be able to maintain the active quorum sets and verify incoming InstantSend locks and ChainLocks based on this information.
This PR also adds tests for the added functionality.