-
Notifications
You must be signed in to change notification settings - Fork 16
/
EpochGovernor.sol
36 lines (31 loc) · 1.38 KB
/
EpochGovernor.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.19;
import {IVotes} from "./governance/IVotes.sol";
import {IVoter} from "contracts/interfaces/IVoter.sol";
import {IGovernor} from "./governance/IGovernor.sol";
import {GovernorSimple} from "./governance/GovernorSimple.sol";
import {GovernorCountingMajority} from "./governance/GovernorCountingMajority.sol";
import {GovernorSimpleVotes} from "./governance/GovernorSimpleVotes.sol";
/**
* @title EpochGovernor
* @notice Epoch based governance system that allows for a three option majority (against, for, abstain).
* @notice Refer to SPECIFICATION.md.
* @author velodrome.finance, @figs999, @pegahcarter
* @dev Note that hash proposals are unique per epoch, but calls to a function with different values
* may be allowed any number of times. It is best to use EpochGovernor with a function that accepts
* no values.
*/
contract EpochGovernor is GovernorSimple, GovernorCountingMajority, GovernorSimpleVotes {
constructor(
address _forwarder,
IVotes _ve,
address _minter,
IVoter _voter
) GovernorSimple(_forwarder, "Epoch Governor", _minter, _voter) GovernorSimpleVotes(_ve) {}
function votingDelay() public pure override(IGovernor) returns (uint256) {
return 1;
}
function votingPeriod() public pure override(IGovernor) returns (uint256) {
return (1 weeks);
}
}