The rules for starting a new voting period can be reduced to asking a couple straightforward questions:
Did all the PoW miners upgrade to the latest dcrd release?
Did 75% or more of the stakeholders voting in the last stake version interval upgrade to the latest dcrwallet release?
If these 2 conditions are satisfied, the stake version is incremented and the next voting period begins. There is a third condition, but it is more technical and messy to explain, so I'll gloss over it.
If you have any further questions about the release, feel free to ask.
Thanks for the update! For those of us interested, can you explain the third condition? Or point to a thread/blog where it's already explained?
Sure thing, IncludeBeer. This may be more technical than some readers want, but it's necessary to explain why and how this 3rd condition works.
Since Decred's hybrid PoW/PoS system scales the block reward received by a PoW miner based on the number of PoS miners whose votes are included in that block, i.e. a block authored by a PoW miner that includes 3 of the 5 votes only receives 3/5 of the usual subsidy for mining that block, we cannot apply the same kind of enforcement, rejection and activation logic as Bitcoin uses for the block version to the stake version. If votes are rejected based on their version, e.g. full nodes start rejecting anything but v3 votes, it unfairly penalizes the PoW miner for that block due to a PoS miner not upgrading. Not rejecting votes creates an enforcement problem: it is not possible to guarantee a monotonic march to activation by rejecting older versions. Without rejecting older vote versions, it is possible to have the following scenario occur: during one stake version interval (SVI), the 75% threshold is crossed by a new version, then during the next SVI, that same version falls short of the 75% threshold. The 3rd condition is
* Instead of determining the stake version only based on the votes in that interval, we also check what version the last SVI was. If the previous SVI was some version, the current version must be that same version or greater.
By preventing the stake version from decreasing, we avoid other complex failure modes that could occur when the stake version goes from 3 to 2 or similar.