@layerzerolabs/utils-upgradeable-evm-contracts 0.2.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-lint.log +491 -0
- package/.turbo/turbo-test.log +1356 -0
- package/LICENSE +23 -0
- package/contracts/access/AccessControl2StepUpgradeable.sol +144 -0
- package/contracts/allowlist/AllowlistBaseUpgradeable.sol +184 -0
- package/contracts/allowlist/AllowlistRBACUpgradeable.sol +55 -0
- package/contracts/fee-accounting/FeeHandlerBaseUpgradeable.sol +69 -0
- package/contracts/fee-accounting/FeeHandlerRBACUpgradeable.sol +34 -0
- package/contracts/fee-config/FeeConfigBaseUpgradeable.sol +128 -0
- package/contracts/fee-config/FeeConfigRBACUpgradeable.sol +44 -0
- package/contracts/libs/EnumerableSetPagination.sol +77 -0
- package/contracts/pause/PauseBaseUpgradeable.sol +107 -0
- package/contracts/pause/PauseRBACUpgradeable.sol +47 -0
- package/contracts/pause-by-id/PauseByIDBaseUpgradeable.sol +127 -0
- package/contracts/pause-by-id/PauseByIDRBACUpgradeable.sol +74 -0
- package/contracts/rate-limiter/RateLimiterBaseUpgradeable.sol +636 -0
- package/contracts/rate-limiter/RateLimiterRBACUpgradeable.sol +89 -0
- package/contracts/rate-limiter/libs/RateLimiterUtils.sol +82 -0
- package/foundry.toml +27 -0
- package/package.json +34 -0
- package/solhint.config.js +3 -0
- package/test/AccessControl2StepUpgradeable.t.sol +374 -0
- package/test/AllowlistBaseUpgradeable.t.sol +380 -0
- package/test/AllowlistRBACUpgradeable.t.sol +84 -0
- package/test/EnumerableSetPagination.t.sol +445 -0
- package/test/FeeConfigBaseUpgradeable.t.sol +232 -0
- package/test/FeeConfigRBACUpgradeable.t.sol +59 -0
- package/test/FeeHandlerBaseUpgradeable.t.sol +78 -0
- package/test/FeeHandlerRBACUpgradeable.t.sol +45 -0
- package/test/PauseBaseUpgradeable.t.sol +244 -0
- package/test/PauseByIDBaseUpgradeable.t.sol +337 -0
- package/test/PauseByIDRBACUpgradeable.t.sol +414 -0
- package/test/PauseRBACUpgradeable.t.sol +258 -0
- package/test/RateLimiterBaseUpgradeable.t.sol +826 -0
- package/test/RateLimiterRBACUpgradeable.t.sol +128 -0
- package/test/RateLimiterRBACUpgradeableInvariant.t.sol +444 -0
- package/test/RateLimiterUtils.t.sol +137 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.22;
|
|
3
|
+
|
|
4
|
+
import { Test } from "forge-std/Test.sol";
|
|
5
|
+
import { RateLimiterUtils } from "../contracts/rate-limiter/libs/RateLimiterUtils.sol";
|
|
6
|
+
|
|
7
|
+
/// @dev Individual harnesses to prevent function selection costs in snapshots.
|
|
8
|
+
|
|
9
|
+
contract DecodeOverrideDefaultConfigHarness {
|
|
10
|
+
function decodeOverrideDefaultConfig(uint24 _config) external pure returns (bool overrideDefaultConfig) {
|
|
11
|
+
return RateLimiterUtils.decodeOverrideDefaultConfig(_config);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
contract DecodeConfigBitmapFlagsHarness {
|
|
16
|
+
function decodeConfigBitmapFlags(
|
|
17
|
+
uint24 _config
|
|
18
|
+
)
|
|
19
|
+
external
|
|
20
|
+
pure
|
|
21
|
+
returns (bool outboundEnabled, bool inboundEnabled, bool netAccountingEnabled, bool addressExemptionEnabled)
|
|
22
|
+
{
|
|
23
|
+
return RateLimiterUtils.decodeConfigBitmapFlags(_config);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
contract EncodeConfigBitmapHarness {
|
|
28
|
+
function encodeConfigBitmap(
|
|
29
|
+
bool _overrideDefaultConfig,
|
|
30
|
+
bool _outboundEnabled,
|
|
31
|
+
bool _inboundEnabled,
|
|
32
|
+
bool _netAccountingEnabled,
|
|
33
|
+
bool _addressExemptionEnabled
|
|
34
|
+
) external pure returns (uint24 config) {
|
|
35
|
+
return
|
|
36
|
+
RateLimiterUtils.encodeConfigBitmap(
|
|
37
|
+
_overrideDefaultConfig,
|
|
38
|
+
_outboundEnabled,
|
|
39
|
+
_inboundEnabled,
|
|
40
|
+
_netAccountingEnabled,
|
|
41
|
+
_addressExemptionEnabled
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
contract RateLimiterUtilsTest is Test {
|
|
47
|
+
DecodeOverrideDefaultConfigHarness public decodeOverrideDefaultConfigHarness;
|
|
48
|
+
DecodeConfigBitmapFlagsHarness public decodeConfigBitmapFlagsHarness;
|
|
49
|
+
EncodeConfigBitmapHarness public encodeConfigBitmapHarness;
|
|
50
|
+
|
|
51
|
+
function setUp() public {
|
|
52
|
+
decodeOverrideDefaultConfigHarness = new DecodeOverrideDefaultConfigHarness();
|
|
53
|
+
decodeConfigBitmapFlagsHarness = new DecodeConfigBitmapFlagsHarness();
|
|
54
|
+
encodeConfigBitmapHarness = new EncodeConfigBitmapHarness();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// ============ Encode/Decode Tests ============
|
|
58
|
+
|
|
59
|
+
function test_decodeOverrideDefaultConfig_False() public view {
|
|
60
|
+
uint24 config = 0;
|
|
61
|
+
bool overrideDefaultConfig = decodeOverrideDefaultConfigHarness.decodeOverrideDefaultConfig(config);
|
|
62
|
+
assertFalse(overrideDefaultConfig);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function test_decodeOverrideDefaultConfig_True() public view {
|
|
66
|
+
uint24 config = 1;
|
|
67
|
+
bool overrideDefaultConfig = decodeOverrideDefaultConfigHarness.decodeOverrideDefaultConfig(config);
|
|
68
|
+
assertTrue(overrideDefaultConfig);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function test_decodeOverrideDefaultConfig_Fuzz(uint24 config) public pure {
|
|
72
|
+
bool overrideDefaultConfig = RateLimiterUtils.decodeOverrideDefaultConfig(config);
|
|
73
|
+
if (config % 2 == 0) {
|
|
74
|
+
assertFalse(overrideDefaultConfig);
|
|
75
|
+
} else {
|
|
76
|
+
assertTrue(overrideDefaultConfig);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function test_encodeConfigBitmap_AllFalse() public view {
|
|
81
|
+
uint24 config = encodeConfigBitmapHarness.encodeConfigBitmap(false, false, false, false, false);
|
|
82
|
+
assertEq(config, 0);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function test_encodeConfigBitmap_AllTrue() public view {
|
|
86
|
+
uint24 config = encodeConfigBitmapHarness.encodeConfigBitmap(true, true, true, true, true);
|
|
87
|
+
// 1 | 2 | 4 | 8 | 16 = 31.
|
|
88
|
+
assertEq(config, 31);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function test_encodeConfigBitmap_Mixed() public view {
|
|
92
|
+
// Only `netAccounting` (bit 3) and `addressExemption` (bit 4).
|
|
93
|
+
uint24 config = encodeConfigBitmapHarness.encodeConfigBitmap(false, false, false, true, true);
|
|
94
|
+
// 8 | 16 = 24.
|
|
95
|
+
assertEq(config, 24);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function test_decodeConfigBitmapFlags_AllFalse() public view {
|
|
99
|
+
uint24 c = 0;
|
|
100
|
+
(bool out, bool inn, bool net, bool exempt) = decodeConfigBitmapFlagsHarness.decodeConfigBitmapFlags(c);
|
|
101
|
+
assertFalse(out);
|
|
102
|
+
assertFalse(inn);
|
|
103
|
+
assertFalse(net);
|
|
104
|
+
assertFalse(exempt);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function test_decodeConfigBitmapFlags_AllTrue() public view {
|
|
108
|
+
uint24 c = 31;
|
|
109
|
+
(bool out, bool inn, bool net, bool exempt) = decodeConfigBitmapFlagsHarness.decodeConfigBitmapFlags(c);
|
|
110
|
+
assertTrue(out);
|
|
111
|
+
assertTrue(inn);
|
|
112
|
+
assertTrue(net);
|
|
113
|
+
assertTrue(exempt);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function test_decodeConfigBitmapFlags_Mixed() public view {
|
|
117
|
+
uint24 c = 24; // 8 | 16
|
|
118
|
+
(bool out, bool inn, bool net, bool exempt) = decodeConfigBitmapFlagsHarness.decodeConfigBitmapFlags(c);
|
|
119
|
+
assertFalse(out);
|
|
120
|
+
assertFalse(inn);
|
|
121
|
+
assertTrue(net);
|
|
122
|
+
assertTrue(exempt);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// ============ Fuzz Tests ============
|
|
126
|
+
|
|
127
|
+
function test_encodeDecode_Fuzz(bool f, bool out, bool inn, bool net, bool exempt) public pure {
|
|
128
|
+
uint24 config = RateLimiterUtils.encodeConfigBitmap(f, out, inn, net, exempt);
|
|
129
|
+
|
|
130
|
+
(bool dout, bool dinn, bool dnet, bool dexempt) = RateLimiterUtils.decodeConfigBitmapFlags(config);
|
|
131
|
+
|
|
132
|
+
assertEq(out, dout);
|
|
133
|
+
assertEq(inn, dinn);
|
|
134
|
+
assertEq(net, dnet);
|
|
135
|
+
assertEq(exempt, dexempt);
|
|
136
|
+
}
|
|
137
|
+
}
|