Closed
Description
When the application updates the validator set it calls updateValidators() with an 'updates' parameter, a list of changes that is then parsed in order, one entry at a time, making updates for the corresponding validator. i.e. the list is treated as a transaction list.
For example [add v1, rem v2, add v3] is different than [rem v2, add v1, add v3] and the call with one will produce different results than with the other.
This is an issue for gaia that requires these updates to be instead interpreted as a set.
Activity
kevlubkcm commentedon Jan 22, 2019
sounds related to #3073
cwgoes commentedon Jan 24, 2019
Proposal for atomic application:
-C * total voting power
(presentlyC = 1.125
).Also we should consider if we need
C = 1.125
after this change.ancazamfir commentedon Jan 24, 2019
all updates except the validator removals
do validator removals here
ancazamfir commentedon Jan 28, 2019
pls. see pull request #3222
ancazamfir commentedon Feb 4, 2019
Seems like NewValidatorSet(valList) does not check for duplicates in the validator list valList and we end up with a validator "set" including same validator multiple times. I'm not sure if all checks are in place when running in a real setup so valList does not contain duplicates. Will check.
This also needs fix it in validator_set.go
ebuchman commentedon Feb 8, 2019
Merged! Thanks @ancazamfir ! Will add follow up notes to #3166
2 remaining items