-
Notifications
You must be signed in to change notification settings - Fork 2.5k
RFP for Offline election tool #2540
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
Merged
Changes from 4 commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
0a5b63f
Create offline_election_tool
michalisFr 23e61d5
Rename offline_election_tool to offline_election_tool.md
michalisFr 63c3520
Update offline_election_tool.md
michalisFr e34e7a0
Update offline_election_tool.md
michalisFr 8fd8646
Update docs/RFPs/offline_election_tool.md
michalisFr File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,50 @@ | ||
| # Offline election tool | ||
|
|
||
| * **Status:** Open (anyone is allowed to apply) | ||
| * **Proposer:** @michalisFr | ||
| * **Projects you think this work could be useful for**: Decentralized Nodes, Staking providers | ||
| * **Teams/People that could deliver the RFP**: Rust developers (with some Node.js knowledge) | ||
|
|
||
| ## Project Description :page_facing_up: | ||
|
|
||
| The purpose of this tool is to accurately predict the outcome of the election algorithm that determines the validators in the active set each era and the distribution of nominations. | ||
| This is particularly useful for the Decentralized Nodes program as it helps us determine how many validators we can nominate and how to best distribute the nominations. | ||
| There is already [such a script](https://github.com/paritytech/substrate-debug-kit/tree/master/offline-election) but it is very old and not always accurate, plus it has some limitations. This script can be used as the basis for this new tool. | ||
|
|
||
| ## Deliverables :nut_and_bolt: | ||
|
|
||
| The new tool should be offer the below functionality: | ||
| 1. Accurately predict the result of the on-chain election (validators in the active set, their total stake, and the distribution of nominations), as if the actual election were to happen at that time. If the tool is run during the actual election window, the results should be effectively the same as with the actual election. | ||
| 2. Take into consideration all the various election algorithms | ||
| 3. Allow all the parameterization of the original script, e.g. arbitrary active set size, custom voters and candidates, etc. | ||
| 4. Allow for voters and candidates accounts that may not have bonded amount or may not even exist on-chain (this is a limitation of the original script) | ||
| 5. Be usable both as a CLI tool but also expose an API through which parameters can be set and results digested | ||
|
|
||
| * **Total Estimated Duration:** 4 weeks? | ||
| * **Full-time equivalent (FTE):** 20? | ||
| * **Total Costs:** No idea | ||
|
|
||
| ### Milestone 1 | ||
|
|
||
| * **Estimated Duration:** 2 weeks? | ||
| * **FTE:** 10? | ||
| * **Costs:** Half | ||
|
|
||
| ### Milestone 2 | ||
|
|
||
| * **Estimated Duration:** 1 week? | ||
| * **FTE:** 5? | ||
| * **Costs:** 1/4 | ||
|
|
||
| ### Milestone 3 | ||
|
|
||
| * **Estimated Duration:** 1 week? | ||
| * **FTE:** 5? | ||
| * **Costs:** 1/4 | ||
|
|
||
|
|
||
| | Number | Deliverable | Specification | | ||
| | ------------- | ------------- | ------------- | | ||
| | 1. | Updating the original script | Update the original script to produce accurate results (points 1-3 above) | | ||
| | 2. | Allow non-existent voters and candidates | Point 4 above | | ||
| | 3. | API development | Create an API and allow usage of the tool through it (point 5 above) | | ||
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.