Implement "concentrated recovery" of LLMQ signatures#3389
Merged
codablock merged 10 commits intodashpay:developfrom Apr 2, 2020
Merged
Implement "concentrated recovery" of LLMQ signatures#3389codablock merged 10 commits intodashpay:developfrom
codablock merged 10 commits intodashpay:developfrom
Conversation
Member
|
Will review tonight or tomorrow |
thephez
reviewed
Mar 31, 2020
src/chainparams.cpp
Outdated
Collaborator
There was a problem hiding this comment.
Was the number of .recoveryMembers chosen arbitrarily? I noticed the smaller quorums use a higher percent of the overall LLMQ size.
Author
There was a problem hiding this comment.
Yeah...mostly arbitrary. I chose the numbers in an absolute way because there wouldn't be a good percentage that would work well on all LLMQ types.
UdjinM6
reviewed
Mar 31, 2020
PastaPastaPasta
previously approved these changes
Mar 31, 2020
Member
PastaPastaPasta
left a comment
There was a problem hiding this comment.
Concept ACK, don't see any problems. utACK
Instead of propagating all sig shares to all LLMQ members, this will now make all members send their individual sig share to a single member, which is then responsible for the recovery and propagation of the recovered signature. This process is repeated by all members every second for another target/recovering member, until a recovered signature appears.
8a6082d to
76b6614
Compare
UdjinM6
reviewed
Apr 1, 2020
UdjinM6
left a comment
There was a problem hiding this comment.
A couple more nits, otherwise looks good.
(test failures seems to be random/unrelated, fails on develop too...)
Co-Authored-By: UdjinM6 <UdjinM6@users.noreply.github.com>
Co-Authored-By: UdjinM6 <UdjinM6@users.noreply.github.com>
panleone
pushed a commit
to panleone/PIVX
that referenced
this pull request
Nov 15, 2024
Implement "concentrated recovery" of LLMQ signatures
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
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 implements "concentrated recovery" (I'm happy for suggestions of better names...).
In the current system, signature shares are propagated to all LLMQ members, until one of them has enough shares collected to recover the signature. Until this recovered signature is propagated in the LLMQ, all members will keep propagating shares and verifying each one. This causes quite some load on the LLMQ, which will be avoided with the new system.
The new system sends all shares to only a single deterministically selected node, so that this node can recover the signature and propagate the recovered signature. This way only the recovered signature needs to be propagated and verified by all members. After sending the share to this single node, each member waits for one second and repeats sending it to another deterministically selected member. This process is repeated until a recovered signature is finally created and propagated.
The new system is activated with the previously added spork21.
My assumption with this change is that it can reduce the load on a LLMQ by a factor of up to 40x-50x.