A greedy cranker can submit a MsgTryUpgrade as soon as 5/6 has signaled for a version.
Proposal
To give some buffer time for the straggling 1/6 validators to upgrade their binaries, we can implement a delay between the block that a MsgTryUpgrade is included in a block and the actual upgrade height. For example: upgrade height = MsgTryUpgradeHeight + one week of blocks. A few questions about this delay:
Should validators be able to change their signaled vote after a MsgTryUpgrade was invoked and before the delayed upgrade height.
Should we disable all signaling after a successful crank invocation?
Can users submit MsgTryUpgrade after a successful previous invocation?
Should upgrade height coordination be performed out of protocol instead of dependent on the block height at which the first MsgTryUpgrade was included?
Acceptance Criteria
Analyze the finding
Prepare a design document on the possible options
Schedule a meeting to drive internal consensus on the option that should be pursued
Context
See finding 3 of Informal Systems findings.
Problem
A greedy cranker can submit a
MsgTryUpgrade
as soon as 5/6 has signaled for a version.Proposal
To give some buffer time for the straggling 1/6 validators to upgrade their binaries, we can implement a delay between the block that a MsgTryUpgrade is included in a block and the actual upgrade height. For example: upgrade height = MsgTryUpgradeHeight + one week of blocks. A few questions about this delay:
MsgTryUpgrade
was invoked and before the delayed upgrade height.MsgTryUpgrade
after a successful previous invocation?MsgTryUpgrade
was included?Acceptance Criteria