Let all LLMQ members connect to each other instead of only a few ones#3380
Merged
Conversation
eca9181 to
9cc3e72
Compare
9cc3e72 to
ea8e885
Compare
Collaborator
|
Probably should update the LLMQ DIP once the revisions are complete. |
UdjinM6
reviewed
Mar 26, 2020
ea8e885 to
1673a59
Compare
UdjinM6
requested changes
Mar 27, 2020
c8bf885 to
a09e361
Compare
Member
|
Also this should be labeled at least RPC |
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 implements a new way of intra-quorum connection handling, which is activated with the new spork
SPORK_21_QUORUM_ALL_CONNECTED. The new code should not affect testnet or devnets in any way, until we actually enable the spork. Connecting to all members will later be used to implement a new way of LLMQ signature recovery, which avoids propagating all shares to all members and thus reduces load a lot.This PR also implements "probing" of masternodes. While each member must have a connection to each other member, it's not necessary for all members to actually connect to all other members. This is because only one of a pair of two MNs need to initiate the connection while the other one can wait for an incoming connection. "probing" is done in the case where a MN doesn't really need an outbound connection, but still wants to verify that the other side has its port open. This is done by initiating a short lived connection, waiting for
MNAUTHto succeed and then disconnecting again.Each probe (and normal outgoing connection) is tracked in the masternode meta info (can be seen in
protx list registered 1), so that we can verify in other places when we had the last successful outbound connection to the masternode. This will later be used by DKGs to vote on offline and old-proto-version members.