You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Consider the supported protocol version for each validator during committee selection to skip validators that don't support the new protocol when epoch changes #7814
Right now when constructing the ChangeEpochV2 transaction to send over consensus first the AuthorityCapabilitiesV1 of each authority are checked and the next protocol version is decided based on certain thresholds. We would like to have the information about which protocol version each authority supports from within the advance_epoch function in the MoveVM. By having this information inside the advance_epoch this can be used during committee selection to select the next epochs committee.
A possible solution for this could be:
Add a new EndOfEpochTransactionKind.ChangeEpochV3 with the supported protocol version for each validator
Extend advance_epoch to accept the supported protocol version per authority from the data in the ChangeEpochV3 transaction that passed consensus.
Motivation
Right now >83,3% voting power is enough to upgrade the protocol. If the remaining validators haven't updated by the time the epoch change happens, those will automatically shut down and be offline, which will reduce the robustness of the network until they update their nodes. They might even not ever update and will still be part of the committee until the stake is moved elsewhere.
By extending the committee selection to only select validators that will actively support the protocol of the next epoch we can make sure that all validator slots are filled with active validators that will be online.
Requirements
Write a list of what you want this feature to do.
Provide the supported protocol version of each authority in the adance_epoch function.
During committee selection skip all validators which don't support the selected protocol version for the next epoch.
Are you planning to do it yourself in a pull request?