The contract constantly cycles between two stages, a proposing_stage and a voting_stage. Both have the same length, voting_period and alternate between each other, starting from \"voting\" for period number 0. Tokens can be frozen in any period, but they can only be used for voting, proposing and unfreezing starting from the following one and onwards.