Fork defines a struct containing the requisite fields for a non-software upgrade proposal Hard Fork at a given height to implement.
Upgrade defines a struct containing necessary fields that a SoftwareUpgradeProposal must have written, in order for the state migration to go smoothly.