@@ -125,6 +125,7 @@ contract StaderOracleTest is Test {
125
125
}
126
126
127
127
function test_add_remove_trustedNode () public {
128
+ // Tests for adding nodes
128
129
address trustedNode = vm.addr (123 );
129
130
assertEq (staderOracle.trustedNodesCount (), 0 );
130
131
assertFalse (staderOracle.isTrustedNode (trustedNode));
@@ -139,16 +140,6 @@ contract StaderOracleTest is Test {
139
140
assertEq (staderOracle.trustedNodesCount (), 1 );
140
141
assertTrue (staderOracle.isTrustedNode (trustedNode));
141
142
142
- vm.expectRevert (IStaderOracle.NodeNotTrusted.selector );
143
- vm.prank (staderManager);
144
- staderOracle.removeTrustedNode (vm.addr (567 ));
145
-
146
- vm.prank (staderManager);
147
- staderOracle.removeTrustedNode (trustedNode);
148
-
149
- assertEq (staderOracle.trustedNodesCount (), 0 );
150
- assertFalse (staderOracle.isTrustedNode (trustedNode));
151
-
152
143
// lets update trustedNode cooling period
153
144
vm.expectRevert (UtilLib.CallerNotManager.selector );
154
145
staderOracle.updateTrustedNodeChangeCoolingPeriod (100 );
@@ -157,22 +148,36 @@ contract StaderOracleTest is Test {
157
148
staderOracle.updateTrustedNodeChangeCoolingPeriod (100 );
158
149
159
150
vm.expectRevert (IStaderOracle.CooldownNotComplete.selector );
160
- staderOracle.addTrustedNode (vm.addr (78 ));
151
+ staderOracle.addTrustedNode (vm.addr (77 ));
161
152
162
- // wait for 100 blocks
153
+ // wait for 100 blocks each time to add node
154
+ vm.roll (block .number + 100 );
155
+ staderOracle.addTrustedNode (vm.addr (77 ));
163
156
vm.roll (block .number + 100 );
164
157
staderOracle.addTrustedNode (vm.addr (78 ));
165
- assertEq (staderOracle.trustedNodesCount (), 1 );
158
+ vm.roll (block .number + 100 );
159
+ staderOracle.addTrustedNode (vm.addr (79 ));
160
+ assertEq (staderOracle.trustedNodesCount (), 4 );
161
+ assertTrue (staderOracle.isTrustedNode (vm.addr (77 )));
166
162
assertTrue (staderOracle.isTrustedNode (vm.addr (78 )));
163
+ assertTrue (staderOracle.isTrustedNode (vm.addr (79 )));
164
+
165
+ // Tests for removing nodes
166
+ vm.expectRevert (IStaderOracle.NodeNotTrusted.selector );
167
+ staderOracle.removeTrustedNode (vm.addr (567 ));
167
168
168
169
vm.expectRevert (IStaderOracle.CooldownNotComplete.selector );
169
- staderOracle.removeTrustedNode (vm.addr (78 ));
170
+ staderOracle.removeTrustedNode (vm.addr (77 ));
170
171
171
172
// wait for 100 blocks
172
173
vm.roll (block .number + 100 );
174
+ staderOracle.removeTrustedNode (vm.addr (77 ));
175
+ assertEq (staderOracle.trustedNodesCount (), 3 );
176
+ assertFalse (staderOracle.isTrustedNode (vm.addr (77 )));
177
+
178
+ vm.roll (block .number + 100 );
179
+ vm.expectRevert (IStaderOracle.InsufficientTrustedNodes.selector );
173
180
staderOracle.removeTrustedNode (vm.addr (78 ));
174
- assertEq (staderOracle.trustedNodesCount (), 0 );
175
- assertFalse (staderOracle.isTrustedNode (vm.addr (78 )));
176
181
vm.stopPrank ();
177
182
}
178
183
@@ -189,7 +194,7 @@ contract StaderOracleTest is Test {
189
194
vm.expectRevert (IStaderOracle.InsufficientTrustedNodes.selector );
190
195
staderOracle.submitSDPrice (sdPriceData);
191
196
192
- assertEq (staderOracle.MIN_TRUSTED_NODES (), 5 );
197
+ assertEq (staderOracle.MIN_TRUSTED_NODES (), 3 );
193
198
address trustedNode2 = vm.addr (702 );
194
199
address trustedNode3 = vm.addr (703 );
195
200
address trustedNode4 = vm.addr (704 );
@@ -307,17 +312,12 @@ contract StaderOracleTest is Test {
307
312
vm.prank (trustedNode3);
308
313
staderOracle.submitSDPrice (sdPriceData);
309
314
310
- sdPriceData.reportingBlockNumber = 5 * 7200 ;
311
- sdPriceData.sdPriceInETH = 4 ;
312
- vm.prank (trustedNode4);
313
- staderOracle.submitSDPrice (sdPriceData);
314
-
315
315
// now consensus is met for reporting block num 5 * 7200
316
316
// trustedNode1 manipulated the sd price if other oracles are not wrking properly
317
- // sdPrice submited were [1,6,2,4 ] => hence median = (2+4)/2 = 3
317
+ // sdPrice submited were [1,6,2] => hence median = 2
318
318
(lastSDReportingBlockNumber, lastSDPrice) = staderOracle.lastReportedSDPriceData ();
319
319
assertEq (lastSDReportingBlockNumber, 5 * 7200 );
320
- assertEq (lastSDPrice, 3 );
320
+ assertEq (lastSDPrice, 2 );
321
321
322
322
// trusted node 5 tries to submit at reportable block 5 * 7200
323
323
sdPriceData.reportingBlockNumber = 5 * 7200 ;
@@ -330,7 +330,7 @@ contract StaderOracleTest is Test {
330
330
function test_submitSDPrice_manipulation_not_possible_by_minority_malicious_oracles () public {
331
331
SDPriceData memory sdPriceData = SDPriceData ({ reportingBlockNumber: 1212 , sdPriceInETH: 1 });
332
332
333
- assertEq (staderOracle.MIN_TRUSTED_NODES (), 5 );
333
+ assertEq (staderOracle.MIN_TRUSTED_NODES (), 3 );
334
334
address trustedNode1 = vm.addr (701 );
335
335
address trustedNode2 = vm.addr (702 );
336
336
address trustedNode3 = vm.addr (703 );
@@ -355,9 +355,6 @@ contract StaderOracleTest is Test {
355
355
vm.prank (trustedNode2);
356
356
staderOracle.submitSDPrice (sdPriceData);
357
357
358
- vm.prank (trustedNode3);
359
- staderOracle.submitSDPrice (sdPriceData);
360
-
361
358
// cycle 2
362
359
vm.roll (2 * 7200 + 1 );
363
360
sdPriceData.reportingBlockNumber = 2 * 7200 ;
@@ -369,9 +366,6 @@ contract StaderOracleTest is Test {
369
366
vm.prank (trustedNode2);
370
367
staderOracle.submitSDPrice (sdPriceData);
371
368
372
- vm.prank (trustedNode3);
373
- staderOracle.submitSDPrice (sdPriceData);
374
-
375
369
// trustedNode4 submits for cycle 1
376
370
sdPriceData.reportingBlockNumber = 1 * 7200 ;
377
371
sdPriceData.sdPriceInETH = 1 ;
@@ -800,7 +794,7 @@ contract StaderOracleTest is Test {
800
794
totalETHXSupply: 100
801
795
});
802
796
803
- assertEq (staderOracle.MIN_TRUSTED_NODES (), 5 );
797
+ assertEq (staderOracle.MIN_TRUSTED_NODES (), 3 );
804
798
address trustedNode1 = vm.addr (701 );
805
799
address trustedNode2 = vm.addr (702 );
806
800
address trustedNode3 = vm.addr (703 );
@@ -1007,7 +1001,7 @@ contract StaderOracleTest is Test {
1007
1001
sortedInvalidSignaturePubkeys: invalidSignaturePubkeys
1008
1002
});
1009
1003
1010
- assertEq (staderOracle.MIN_TRUSTED_NODES (), 5 );
1004
+ assertEq (staderOracle.MIN_TRUSTED_NODES (), 3 );
1011
1005
address trustedNode1 = vm.addr (701 );
1012
1006
address trustedNode2 = vm.addr (702 );
1013
1007
address trustedNode3 = vm.addr (703 );
@@ -1082,7 +1076,7 @@ contract StaderOracleTest is Test {
1082
1076
sortedPubkeys: sortedPubkeys
1083
1077
});
1084
1078
1085
- assertEq (staderOracle.MIN_TRUSTED_NODES (), 5 );
1079
+ assertEq (staderOracle.MIN_TRUSTED_NODES (), 3 );
1086
1080
address trustedNode1 = vm.addr (701 );
1087
1081
address trustedNode2 = vm.addr (702 );
1088
1082
address trustedNode3 = vm.addr (703 );
@@ -1162,7 +1156,7 @@ contract StaderOracleTest is Test {
1162
1156
sortedPubkeys: sortedPubkeys
1163
1157
});
1164
1158
1165
- assertEq (staderOracle.MIN_TRUSTED_NODES (), 5 );
1159
+ assertEq (staderOracle.MIN_TRUSTED_NODES (), 3 );
1166
1160
address trustedNode1 = vm.addr (701 );
1167
1161
address trustedNode2 = vm.addr (702 );
1168
1162
address trustedNode3 = vm.addr (703 );
@@ -1232,7 +1226,7 @@ contract StaderOracleTest is Test {
1232
1226
slashedValidatorsCount: 4
1233
1227
});
1234
1228
1235
- assertEq (staderOracle.MIN_TRUSTED_NODES (), 5 );
1229
+ assertEq (staderOracle.MIN_TRUSTED_NODES (), 3 );
1236
1230
address trustedNode1 = vm.addr (701 );
1237
1231
address trustedNode2 = vm.addr (702 );
1238
1232
address trustedNode3 = vm.addr (703 );
0 commit comments