Skip to content

Commit 8a206e5

Browse files
committed
update gov contract with openzeppelin
1 parent 46b81b7 commit 8a206e5

File tree

2 files changed

+38
-9
lines changed

2 files changed

+38
-9
lines changed

contracts/contracts/STANG.sol

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@ import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol";
88
contract STANG is ERC20, ERC20Snapshot, ERC20Votes {
99
uint256 public s_maxSupply = 1000000;
1010

11-
constructor() ERC20("MustangDao", "STANG") ERC20Permit("GovernanceToken") {
11+
constructor() ERC20("MustangDAO", "STANG") ERC20Permit("GovernanceToken") {
1212
_mint(msg.sender, s_maxSupply);
1313
}
1414

15+
// Token holders' voting weight is determined by a snapshot of their STANG balance AT THE TIME OF ANY NEW PROPOSAL CREATION
16+
1517
function snapshot() public returns (uint256) {
1618
return (_snapshot());
1719
}

contracts/contracts/dao.sol

+35-8
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,41 @@
1+
pragma solidity ^0.8.4;
2+
13
import "./STANG.sol";
4+
import "@openzeppelin/contracts/governance/Governor.sol";
5+
import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";
6+
import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";
7+
import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";
8+
import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";
9+
10+
contract DAO is
11+
Governor,
12+
GovernorCountingSimple,
13+
GovernorVotes,
14+
GovernorVotesQuorumFraction,
15+
GovernorTimelockControl
16+
{
17+
uint256 public s_votingDelay;
18+
uint256 public s_votingPeriod;
19+
STANG daoToken;
220

3-
pragma solidity ^0.8.4;
21+
constructor(
22+
address _daoToken
23+
ERC20Votes _token,
24+
TimelockController _timelock,
25+
uint256 _quorumPercentage,
26+
uint256 _votingPeriod,
27+
uint256 _votingDelay
28+
)
29+
Governor("GovernorContract")
30+
GovernorVotes(_token)
31+
GovernorVotesQuorumFraction(_quorumPercentage)
32+
GovernorTimelockControl(_timelock)
33+
{
34+
daoToken = STANG(_daoToken);
35+
s_votingDelay = _votingDelay;
36+
s_votingPeriod = _votingPeriod;
37+
}
438

5-
contract DAO {
639
struct Proposal {
740
uint256[] opts;
841
bool weighted;
@@ -16,17 +49,11 @@ contract DAO {
1649
uint256 totalVotes;
1750
}
1851

19-
STANG daoToken;
20-
2152
//proposalId => Proposal
2253
mapping(uint256 => Proposal) public proposals;
2354

2455
uint256 propsIdCnt = 0;
2556

26-
constructor(address _daoToken) {
27-
daoToken = STANG(_daoToken);
28-
}
29-
3057
//optsString[], title, description, propId, endTimestamp
3158
event newProposal(string[], string, string, uint256, uint256);
3259

0 commit comments

Comments
 (0)