-
Notifications
You must be signed in to change notification settings - Fork 1.2k
feat: single node quorum #6437
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
feat: single node quorum #6437
Conversation
2fe82bc
to
52f567c
Compare
Guix Automation has began to build this PR tagged as v22.1.0-devpr6437.52f567c8. A new comment will be made when the image is pushed. |
Guix Automation has completed; a release should be present here: https://github.com/dashpay/dash-dev-branches/releases/tag/v22.1.0-devpr6437.52f567c8. The image should be on dockerhub soon. |
Please open a PR to update https://github.com/dashpay/dips/blob/master/dip-0006/llmq-types.md when this PR is merged |
This pull request has conflicts, please rebase. |
…ra blocks It also remove custom helper
Not sure if that's really useful, but can be changed
52f567c
to
0e2f96c
Compare
Guix Automation has began to build this PR tagged as v22.1.0-devpr6437.0e2f96ca. A new comment will be made when the image is pushed. |
Guix Automation has completed; a release should be present here: https://github.com/dashpay/dash-dev-branches/releases/tag/v22.1.0-devpr6437.0e2f96ca. The image should be on dockerhub soon. |
Guix Automation has began to build this PR tagged as v22.1.0-devpr6437.62360a30. A new comment will be made when the image is pushed. |
This pull request has conflicts, please rebase. |
Guix Automation has completed; a release should be present here: https://github.com/dashpay/dash-dev-branches/releases/tag/v22.1.0-devpr6437.62360a30. The image should be on dockerhub soon. |
This pull request has conflicts, please rebase. |
Guix Automation has began to build this PR tagged as v22.1.0-devpr6437.f0e7eb57. A new comment will be made when the image is pushed. |
Guix Automation has completed; a release should be present here: https://github.com/dashpay/dash-dev-branches/releases/tag/v22.1.0-devpr6437.f0e7eb57. The image should be on dockerhub soon. |
Guix Automation has began to build this PR tagged as v22.1.0-devpr6437.24e7f564. A new comment will be made when the image is pushed. |
Guix Automation has completed; a release should be present here: https://github.com/dashpay/dash-dev-branches/releases/tag/v22.1.0-devpr6437.24e7f564. The image should be on dockerhub soon. |
Guix Automation has began to build this PR tagged as v22.1.0-devpr6437.c09090bf. A new comment will be made when the image is pushed. |
Guix Automation has completed; a release should be present here: https://github.com/dashpay/dash-dev-branches/releases/tag/v22.1.0-devpr6437.c09090bf. The image should be on dockerhub soon. |
closed in favor of #6533 |
d33ca99 refactor: use `quorum->params.size` instead function argument (Konstantin Akimov) b3aeaa4 feat: let llmq_test_platform be single-node too (Konstantin Akimov) 702d147 feat: new single node quorum and functional test feature_llmq_singlenode.py (Konstantin Akimov) 67eb2e4 fix: activate dip0008 in feature_dip4_coinbasemerkleroots without extra blocks (Konstantin Akimov) 0cd82fe chore: add TODO in case of testnet3 reset, to deduplicate dkgsession code, remove TODO to create evo nodes without IS (Konstantin Akimov) Pull request description: ## Issue being fixed or feature implemented Development for platform requires currently to have running 4 Dash Core instances: wallet and at least 3 Evo Nodes which forms quorum. This issue has been partially addressed #6261 by allowing to use only 2 Evo Nodes. Though, previous solution still requires all DKG steps, heavy network communication and various instability. ## What was done? Added support for RegTest quorums `llmq_test` and `llmq_test_instantsend` to be form and sign messages even if only one node is available. While regular quorum with several nodes 7 steps of creation (Initialization, Contribution, Complaining, Justification, Commitment, Finalization, Mining) this type of quorum just from Initialization straight to the Finalization. The signing process with this quorum is also simplified. So far as regular quorum requires to sign multiple shares, for single node quorum the messages are signed immediately by just one node. Though, single-node-quorum doesn't generate new pair of private and public keys, instead it just uses operator private and public key. Not sure if there's any possible down-sides. It is an alternate solution to #6437 which introduces brand-new quorum type. Advantages of this solution is: - no breaking changes - no new quorums introduced - these quorums with one node can be both types "evo only" (as platform quorum) and regular "evo and regular" nodes - it's possible to sign EHF signals too ## How Has This Been Tested? See a new functional test feature_llmq_singlenode.py To use this feature Dash Core should be started with these 3 params: `-llmqtestparams=1:1 -llmqtestinstantsendparams=1:1 -lmqtestplatformparams=1:1`. It let to InstantSend, Chainlocks to be formed, EHF signals appears, messages to be signed, etc with just one masternode or evo node. ## Breaking Changes N/A ## Checklist: - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [x] I have added or updated relevant unit/integration/functional/e2e tests - [x] I have made corresponding changes to the documentation - [x] I have assigned this pull request to a milestone ACKs for top commit: UdjinM6: utACK d33ca99 PastaPastaPasta: utACK d33ca99 Tree-SHA512: 1620fd71ac691e2bd7e6f0600a5fc123fd01a6986507fd7cfc2354608a3ae8b663221f6459dddede8fc95b0c38ae53a09f3878509d5a7dc2d4398333d510f735
Notes for reviewers
1. It depends on #6431, #6430 (these changes are included to this PR)2. this PR is draft, because I am going to tidy-up code a bit, but I am looking for Concept Review3. known issues: instead random key for each quorum it is used operator-key. I got difficulties to make it working and decided to exclude from scope of this PR.
4. likely super-seeded by #6533
Issue being fixed or feature implemented
Development for platform requires currently to have running 4 Dash Core instances: wallet and at least 3 Evo Nodes which forms quorum.
This issue has been partially addressed #6261 to let use only 2 Evo Nodes. Though, it still requires all DKG steps, heavy network communication and various instability.
What was done?
This PR introduced new type of quorum "Single Node Quorum" with name
llmq_1_100
andid=111
for Regtest.This quorum needs just one node to be formed.
While regular quorum with several nodes 7 steps of creation (Initialization, Contribution, Complaining, Justification, Commitment, Finalization, Mining) this type of quorum just from Initialization straight to the Finalization.
The signing process with this quorum is also simplified. So far as regular quorum requires to sign multiple shares, for single node quorum the messages are signed immediately by just one node.
How Has This Been Tested?
See a new functional test
feature_llmq_singlenode.py
Also some other tests required changes, they are presented in prior commits
Breaking Changes
It introduces new quorum for Reg Test.
Checklist: