-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Crowdsourced Decision Deposits #10715
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
Open
runcomet
wants to merge
46
commits into
paritytech:master
Choose a base branch
from
runcomet:CSDD
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
+1,015
−252
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
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 crowdsourced decision deposits, enabling multiple contributors to collectively fund the decision deposit of a referendum. Previously, the decision deposit had to be paid in full by a single address, which could limit participation and concentrate power. This feature allows the deposit to be split among different addresses, up to a configurable maximum, democratizing the funding process while preserving the economic security guarantees of deposits.
Existing work from @bkchr and @PolkadotDom, with refinements to address edge cases. Configurable limits are set via the
MaxDepositContributionsparameter. The system uses efficient allocation where only the top N contributions are considered, automatically refunding lower contributions when higher ones arrive.Contributions cannot be decreased once made to prevent griefing attacks, and monotonic replacement guarantees contributions can only be replaced by higher amounts.
A new storage structure replaces the
decision_depositfield inReferendumStatuswith aDecisionDepositstruct containing the collected deposit total, required track deposit amount, and a bounded vector of contributor-amount pairs sorted by amount.This implementation closes #6041, fulfilling the requirement to consider only the n highest amounts paid while refunding lower ones, ensuring efficient use of contribution slots while enabling broad participation in governance.