-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathGovernanceDecisions.sol
54 lines (40 loc) · 1.86 KB
/
GovernanceDecisions.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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
pragma solidity ^0.6.7;
pragma experimental ABIEncoderV2;
import "@openzeppelin/contracts/access/AccessControl.sol";
contract GovernanceDecisions is AccessControl {
bytes32 public constant GOVERNOR_ROLE = keccak256("GOVERNOR_ROLE");
uint8 public marketplaceFee;
string[] private marketplaceCategories;
string[] private foundationMemberships;
event MarketplaceFeeChanged(uint8 oldFee, uint8 newFee);
event MarketplaceCategoryAdded(string category);
event FoundationMemberAdded(string member);
constructor(address governor_) public {
_setupRole(GOVERNOR_ROLE, governor_);
marketplaceFee = 10; // set default marketplace fee
}
function setMarketplaceFee(uint8 fee) external {
require(hasRole(GOVERNOR_ROLE, msg.sender), "GovernanceDecisions::setMarketplaceFee ACCESS FORBIDDEN");
require(fee < 100, "GovernanceDecisions::setMarketplaceFee fee must be less than 100");
uint8 oldFee;
oldFee = marketplaceFee;
marketplaceFee = fee;
emit MarketplaceFeeChanged(oldFee, marketplaceFee);
}
function addMarketplaceCategory(string calldata category) external {
require(hasRole(GOVERNOR_ROLE, msg.sender), "GovernanceDecisions::addMarketplaceCategory ACCESS FORBIDDEN");
marketplaceCategories.push(category);
emit MarketplaceCategoryAdded(category);
}
function getMarketplaceCategories() public view returns (string[] memory) {
return marketplaceCategories;
}
function addFoundationMember(string calldata member) external {
require(hasRole(GOVERNOR_ROLE, msg.sender), "GovernanceDecisions::addFoundationMember ACCESS FORBIDDEN");
foundationMemberships.push(member);
emit FoundationMemberAdded(member);
}
function getMemberships() public view returns (string[] memory) {
return foundationMemberships;
}
}