Don’t rely on block height for measuring time
This is a big change that comes from the fact that time between blocks is not enforced by consensus in Tendermint. Besides making data structures more natural and the usage simpler, it allows to abandon creating blocks every n seconds regardless of whether there are transactions present or not. For this to be possible, Tendermint needs to stop creating blocks when the application hash changes. See issue 1909 in Tendermint for details.
A testnet generator is introduced to faciliate generating of initial data, which is now highly dependent on time.
A module which encompasses epoch-specific logic has been created.