Skip to content

Commit 7be31ee

Browse files
authored
Add custom errors for ConstantsManager (#75)
1 parent 78101a8 commit 7be31ee

File tree

2 files changed

+94
-30
lines changed

2 files changed

+94
-30
lines changed

contracts/sfc/ConstantsManager.sol

+93-29
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// SPDX-License-Identifier: UNLICENSED
22
pragma solidity ^0.8.9;
33

4-
import "../ownership/Ownable.sol";
5-
import "../common/Decimal.sol";
4+
import {Ownable} from "../ownership/Ownable.sol";
5+
import {Decimal} from "../common/Decimal.sol";
66

77
contract ConstantsManager is Ownable {
88
// Minimum amount of stake for a validator, i.e., 500000 FTM
@@ -32,94 +32,158 @@ contract ConstantsManager is Ownable {
3232
uint256 public targetGasPowerPerSecond;
3333
uint256 public gasPriceBalancingCounterweight;
3434

35+
/**
36+
* @dev Given value is too small
37+
*/
38+
error ValueTooSmall();
39+
40+
/**
41+
* @dev Given value is too large
42+
*/
43+
error ValueTooLarge();
44+
3545
function initialize() external initializer {
3646
Ownable.initialize(msg.sender);
3747
}
3848

3949
function updateMinSelfStake(uint256 v) external virtual onlyOwner {
40-
require(v >= 100000 * 1e18, "too small value");
41-
require(v <= 10000000 * 1e18, "too large value");
50+
if (v < 100000 * 1e18) {
51+
revert ValueTooSmall();
52+
}
53+
if (v > 10000000 * 1e18) {
54+
revert ValueTooLarge();
55+
}
4256
minSelfStake = v;
4357
}
4458

4559
function updateMaxDelegatedRatio(uint256 v) external virtual onlyOwner {
46-
require(v >= Decimal.unit(), "too small value");
47-
require(v <= 31 * Decimal.unit(), "too large value");
60+
if (v < Decimal.unit()) {
61+
revert ValueTooSmall();
62+
}
63+
if (v > 31 * Decimal.unit()) {
64+
revert ValueTooLarge();
65+
}
4866
maxDelegatedRatio = v;
4967
}
5068

5169
function updateValidatorCommission(uint256 v) external virtual onlyOwner {
52-
require(v <= Decimal.unit() / 2, "too large value");
70+
if (v > Decimal.unit() / 2) {
71+
revert ValueTooLarge();
72+
}
5373
validatorCommission = v;
5474
}
5575

5676
function updateBurntFeeShare(uint256 v) external virtual onlyOwner {
57-
require(v <= Decimal.unit() / 2, "too large value");
77+
if (v > Decimal.unit() / 2) {
78+
revert ValueTooLarge();
79+
}
5880
burntFeeShare = v;
5981
}
6082

6183
function updateTreasuryFeeShare(uint256 v) external virtual onlyOwner {
62-
require(v <= Decimal.unit() / 2, "too large value");
84+
if (v > Decimal.unit() / 2) {
85+
revert ValueTooLarge();
86+
}
6387
treasuryFeeShare = v;
6488
}
6589

6690
function updateUnlockedRewardRatio(uint256 v) external virtual onlyOwner {
67-
require(v >= (5 * Decimal.unit()) / 100, "too small value");
68-
require(v <= Decimal.unit() / 2, "too large value");
91+
if (v < (5 * Decimal.unit()) / 100) {
92+
revert ValueTooSmall();
93+
}
94+
if (v > Decimal.unit() / 2) {
95+
revert ValueTooLarge();
96+
}
6997
unlockedRewardRatio = v;
7098
}
7199

72100
function updateMinLockupDuration(uint256 v) external virtual onlyOwner {
73-
require(v >= 86400, "too small value");
74-
require(v <= 86400 * 30, "too large value");
101+
if (v < 86400) {
102+
revert ValueTooSmall();
103+
}
104+
if (v > 86400 * 30) {
105+
revert ValueTooLarge();
106+
}
75107
minLockupDuration = v;
76108
}
77109

78110
function updateMaxLockupDuration(uint256 v) external virtual onlyOwner {
79-
require(v >= 86400 * 30, "too small value");
80-
require(v <= 86400 * 1460, "too large value");
111+
if (v < 86400 * 30) {
112+
revert ValueTooSmall();
113+
}
114+
if (v > 86400 * 1460) {
115+
revert ValueTooLarge();
116+
}
81117
maxLockupDuration = v;
82118
}
83119

84120
function updateWithdrawalPeriodEpochs(uint256 v) external virtual onlyOwner {
85-
require(v >= 2, "too small value");
86-
require(v <= 100, "too large value");
121+
if (v < 2) {
122+
revert ValueTooSmall();
123+
}
124+
if (v > 100) {
125+
revert ValueTooLarge();
126+
}
87127
withdrawalPeriodEpochs = v;
88128
}
89129

90130
function updateWithdrawalPeriodTime(uint256 v) external virtual onlyOwner {
91-
require(v >= 86400, "too small value");
92-
require(v <= 30 * 86400, "too large value");
131+
if (v < 86400) {
132+
revert ValueTooSmall();
133+
}
134+
if (v > 30 * 86400) {
135+
revert ValueTooLarge();
136+
}
93137
withdrawalPeriodTime = v;
94138
}
95139

96140
function updateBaseRewardPerSecond(uint256 v) external virtual onlyOwner {
97-
require(v >= 0.5 * 1e18, "too small value");
98-
require(v <= 32 * 1e18, "too large value");
141+
if (v < 0.5 * 1e18) {
142+
revert ValueTooSmall();
143+
}
144+
if (v > 32 * 1e18) {
145+
revert ValueTooLarge();
146+
}
99147
baseRewardPerSecond = v;
100148
}
101149

102150
function updateOfflinePenaltyThresholdTime(uint256 v) external virtual onlyOwner {
103-
require(v >= 86400, "too small value");
104-
require(v <= 10 * 86400, "too large value");
151+
if (v < 86400) {
152+
revert ValueTooSmall();
153+
}
154+
if (v > 10 * 86400) {
155+
revert ValueTooLarge();
156+
}
105157
offlinePenaltyThresholdTime = v;
106158
}
107159

108160
function updateOfflinePenaltyThresholdBlocksNum(uint256 v) external virtual onlyOwner {
109-
require(v >= 100, "too small value");
110-
require(v <= 1000000, "too large value");
161+
if (v < 100) {
162+
revert ValueTooSmall();
163+
}
164+
if (v > 1000000) {
165+
revert ValueTooLarge();
166+
}
111167
offlinePenaltyThresholdBlocksNum = v;
112168
}
113169

114170
function updateTargetGasPowerPerSecond(uint256 v) external virtual onlyOwner {
115-
require(v >= 1000000, "too small value");
116-
require(v <= 500000000, "too large value");
171+
if (v < 1000000) {
172+
revert ValueTooSmall();
173+
}
174+
if (v > 500000000) {
175+
revert ValueTooLarge();
176+
}
117177
targetGasPowerPerSecond = v;
118178
}
119179

120180
function updateGasPriceBalancingCounterweight(uint256 v) external virtual onlyOwner {
121-
require(v >= 100, "too small value");
122-
require(v <= 10 * 86400, "too large value");
181+
if (v < 100) {
182+
revert ValueTooSmall();
183+
}
184+
if (v > 10 * 86400) {
185+
revert ValueTooLarge();
186+
}
123187
gasPriceBalancingCounterweight = v;
124188
}
125189
}

contracts/sfc/GasPriceConstants.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-License-Identifier: UNLICENSED
22
pragma solidity ^0.8.9;
33

4-
import "../common/Decimal.sol";
4+
import {Decimal} from "../common/Decimal.sol";
55

66
library GP {
77
function trimGasPriceChangeRatio(uint256 x) internal pure returns (uint256) {

0 commit comments

Comments
 (0)