Vote Enactment

Vote Enactment is the final phase of the voting process. Vote Enactment starts when the execute() function is called in the PolicyVotes.sol contract. This function can be called when a given proposal gets 50% staked support of the total voting power in that generation (the Majority Threshold), or when 4 days have passed and the proposal has more "For" votes than "Against" votes. In the latter case, after 3 days, the voting period stops, but the execute() function cannot be called for another 24 hours — hence 4 days.

Vote Enactment Specifics

The execute() function enacts the proposal by calling the root policy contract's internalCommand() function to delegate call the enacted function in the proposal in the context of the root policy. For more information on how this process works, please see the GitHub repository.

Proposals are independent of any of the other processes; however, as they have total power to change the codebase, the enacting of a proposal might disrupt or affect one of the other processes. Cloning of contracts works to prevent this but does not remove all avenues for failure. The ability to use the proposal upgrade process to change any part of the system already gives the users great responsibility to be careful not to break the functionality of the contract codebase. Timing issues around when exactly the proposal is enactable should be considered carefully.

Last updated