@@ -16,69 +16,14 @@ interface IFeeHandler {
16
16
) external returns (bool );
17
17
}
18
18
19
-
20
- contract CampPermissionGroups {
21
- address public campaignCreator;
22
- address public pendingCampaignCreator;
23
-
24
- event TransferCampaignCreatorPending (address pendingCampaignCreator );
25
- event CampaignCreatorClaimed (address newCampaignCreator , address previousCampaignCreator );
26
-
27
- constructor (address _campaignCreator ) public {
28
- require (_campaignCreator != address (0 ), "campaignCreator is 0 " );
29
- campaignCreator = _campaignCreator;
30
- }
31
-
32
- modifier onlyCampaignCreator () {
33
- require (msg .sender == campaignCreator, "only campaign creator " );
34
- _;
35
- }
36
-
37
- /**
38
- * @dev Allows the current campaignCreator to set the pendingCampaignCreator address.
39
- * @param newCampaignCreator The address to transfer ownership to.
40
- */
41
- function transferCampaignCreator (address newCampaignCreator ) external onlyCampaignCreator {
42
- require (newCampaignCreator != address (0 ), "newCampaignCreator is 0 " );
43
- emit TransferCampaignCreatorPending (newCampaignCreator);
44
- pendingCampaignCreator = newCampaignCreator;
45
- }
46
-
47
- /**
48
- * @dev Allows the current campCcampaignCreatorreator to set the campaignCreator in one tx.
49
- Useful initial deployment.
50
- * @param newCampaignCreator The address to transfer ownership to.
51
- */
52
- function transferCampaignCreatorQuickly (address newCampaignCreator )
53
- external
54
- onlyCampaignCreator
55
- {
56
- require (newCampaignCreator != address (0 ), "newCampaignCreator is 0 " );
57
- emit TransferCampaignCreatorPending (newCampaignCreator);
58
- emit CampaignCreatorClaimed (newCampaignCreator, campaignCreator);
59
- campaignCreator = newCampaignCreator;
60
- }
61
-
62
- /**
63
- * @dev Allows the pendingCampaignCreator address to finalize the change campaign creator process.
64
- */
65
- function claimCampaignCreator () external {
66
- require (pendingCampaignCreator == msg .sender , "only pending campaign creator " );
67
- emit CampaignCreatorClaimed (pendingCampaignCreator, campaignCreator);
68
- campaignCreator = pendingCampaignCreator;
69
- pendingCampaignCreator = address (0 );
70
- }
71
- }
72
-
73
-
74
19
/**
75
20
* @notice This contract is using SafeMath for uint, which is inherited from EpochUtils
76
21
Some events are moved to interface, easier for public uses
77
22
* @dev Network fee campaign: options are fee in bps
78
23
* BRR fee handler campaign: options are combined of rebate (left most 128 bits) + reward (right most 128 bits)
79
24
* General campaign: options are from 1 to num_options
80
25
*/
81
- contract KyberDAO is IKyberDAO , EpochUtils , ReentrancyGuard , CampPermissionGroups , Utils5 {
26
+ contract KyberDAO is IKyberDAO , EpochUtils , ReentrancyGuard , Utils5 {
82
27
/* Constants */
83
28
// max number of campaigns for each epoch
84
29
uint256 public constant MAX_EPOCH_CAMPAIGNS = 10 ;
@@ -122,6 +67,10 @@ contract KyberDAO is IKyberDAO, EpochUtils, ReentrancyGuard, CampPermissionGroup
122
67
IKyberStaking public staking;
123
68
IFeeHandler public feeHandler;
124
69
70
+ // campaign creator permissions
71
+ address public campaignCreator;
72
+ address public pendingCampaignCreator;
73
+
125
74
/* Mapping from campaign ID => data */
126
75
// use to generate increasing campaign ID
127
76
uint256 public numberCampaigns = 0 ;
@@ -148,6 +97,9 @@ contract KyberDAO is IKyberDAO, EpochUtils, ReentrancyGuard, CampPermissionGroup
148
97
// epoch => campaignID for brr campaigns
149
98
mapping (uint256 => uint256 ) public brrCampaigns;
150
99
100
+ event TransferCampaignCreatorPending (address pendingCampaignCreator );
101
+ event CampaignCreatorClaimed (address newCampaignCreator , address previousCampaignCreator );
102
+
151
103
event NewCampaignCreated (
152
104
CampaignType campaignType ,
153
105
uint256 indexed campaignID ,
@@ -172,12 +124,13 @@ contract KyberDAO is IKyberDAO, EpochUtils, ReentrancyGuard, CampPermissionGroup
172
124
uint256 _defaultRewardBps ,
173
125
uint256 _defaultRebateBps ,
174
126
address _campaignCreator
175
- ) public CampPermissionGroups (_campaignCreator) {
127
+ ) public {
176
128
require (_epochPeriod > 0 , "ctor: epoch period is 0 " );
177
129
require (_startTimestamp >= now , "ctor: start in the past " );
178
130
require (_staking != address (0 ), "ctor: staking is missing " );
179
131
require (_feeHandler != address (0 ), "ctor: feeHandler is missing " );
180
132
require (_knc != address (0 ), "ctor: knc token is missing " );
133
+ require (_campaignCreator != address (0 ), "campaignCreator is 0 " );
181
134
// in Network, maximum fee that can be taken from 1 tx is (platform fee + 2 * network fee)
182
135
// so network fee should be less than 50%
183
136
require (_defaultNetworkFeeBps < BPS / 2 , "ctor: network fee high " );
@@ -200,13 +153,54 @@ contract KyberDAO is IKyberDAO, EpochUtils, ReentrancyGuard, CampPermissionGroup
200
153
rewardInBps: _defaultRewardBps,
201
154
rebateInBps: _defaultRebateBps
202
155
});
156
+ campaignCreator = _campaignCreator;
157
+ }
158
+
159
+ modifier onlyCampaignCreator () {
160
+ require (msg .sender == campaignCreator, "only campaign creator " );
161
+ _;
203
162
}
204
163
205
164
modifier onlyStakingContract {
206
165
require (msg .sender == address (staking), "only staking contract " );
207
166
_;
208
167
}
209
168
169
+ /**
170
+ * @dev Allows the current campaignCreator to set the pendingCampaignCreator address.
171
+ * @param newCampaignCreator The address to transfer ownership to.
172
+ */
173
+ function transferCampaignCreator (address newCampaignCreator ) external onlyCampaignCreator {
174
+ require (newCampaignCreator != address (0 ), "newCampaignCreator is 0 " );
175
+ emit TransferCampaignCreatorPending (newCampaignCreator);
176
+ pendingCampaignCreator = newCampaignCreator;
177
+ }
178
+
179
+ /**
180
+ * @dev Allows the current campCcampaignCreatorreator to set the campaignCreator in one tx.
181
+ Useful initial deployment.
182
+ * @param newCampaignCreator The address to transfer ownership to.
183
+ */
184
+ function transferCampaignCreatorQuickly (address newCampaignCreator )
185
+ external
186
+ onlyCampaignCreator
187
+ {
188
+ require (newCampaignCreator != address (0 ), "newCampaignCreator is 0 " );
189
+ emit TransferCampaignCreatorPending (newCampaignCreator);
190
+ emit CampaignCreatorClaimed (newCampaignCreator, campaignCreator);
191
+ campaignCreator = newCampaignCreator;
192
+ }
193
+
194
+ /**
195
+ * @dev Allows the pendingCampaignCreator address to finalize the change campaign creator process.
196
+ */
197
+ function claimCampaignCreator () external {
198
+ require (pendingCampaignCreator == msg .sender , "only pending campaign creator " );
199
+ emit CampaignCreatorClaimed (pendingCampaignCreator, campaignCreator);
200
+ campaignCreator = pendingCampaignCreator;
201
+ pendingCampaignCreator = address (0 );
202
+ }
203
+
210
204
/**
211
205
* @dev called by staking contract when staker wanted to withdraw
212
206
* @param staker address of staker to reduce reward
0 commit comments