Skip to content

Commit ccc9880

Browse files
committed
test: more extensive setup for slashOperator
1 parent 252ce51 commit ccc9880

File tree

2 files changed

+196
-16
lines changed

2 files changed

+196
-16
lines changed

test/unit/InstantSlasher.t.sol

Lines changed: 101 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,50 +10,143 @@ import {ISlashingRegistryCoordinator} from "../../src/interfaces/ISlashingRegist
1010
import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
1111
import {TransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
1212
import {EmptyContract} from "eigenlayer-contracts/src/test/mocks/EmptyContract.sol";
13+
import {AllocationManager} from "eigenlayer-contracts/src/contracts/core/AllocationManager.sol";
14+
import {PermissionController} from "eigenlayer-contracts/src/contracts/permissions/PermissionController.sol";
15+
import {PauserRegistry} from "eigenlayer-contracts/src/contracts/permissions/PauserRegistry.sol";
16+
import {DelegationMock} from "../mocks/DelegationMock.sol";
17+
import {SlashingRegistryCoordinator} from "../../src/SlashingRegistryCoordinator.sol";
18+
import {IBLSApkRegistry} from "../../src/interfaces/IBLSApkRegistry.sol";
19+
import {IStakeRegistry} from "../../src/interfaces/IStakeRegistry.sol";
20+
import {IIndexRegistry} from "../../src/interfaces/IIndexRegistry.sol";
21+
import {ISocketRegistry} from "../../src/interfaces/ISocketRegistry.sol";
1322

1423
contract InstantSlasherTest is Test {
1524
InstantSlasher public instantSlasher;
1625
InstantSlasher public instantSlasherImplementation;
1726
ProxyAdmin public proxyAdmin;
1827
EmptyContract public emptyContract;
28+
AllocationManager public allocationManager;
29+
AllocationManager public allocationManagerImplementation;
30+
PermissionController public permissionController;
31+
PauserRegistry public pauserRegistry;
32+
DelegationMock public delegationMock;
33+
SlashingRegistryCoordinator public slashingRegistryCoordinator;
34+
SlashingRegistryCoordinator public slashingRegistryCoordinatorImplementation;
1935

20-
address public allocationManager;
21-
address public slashingRegistryCoordinator;
2236
address public slasher;
37+
address public serviceManager;
2338
address public operator;
2439
IStrategy public mockStrategy;
2540
address public proxyAdminOwner = address(uint160(uint256(keccak256("proxyAdminOwner"))));
41+
address public pauser = address(uint160(uint256(keccak256("pauser"))));
42+
address public unpauser = address(uint160(uint256(keccak256("unpauser"))));
43+
address public churnApprover = address(uint160(uint256(keccak256("churnApprover"))));
44+
address public ejector = address(uint160(uint256(keccak256("ejector"))));
45+
46+
uint32 constant DEALLOCATION_DELAY = 7 days;
47+
uint32 constant ALLOCATION_CONFIGURATION_DELAY = 1 days;
2648

2749
function setUp() public {
28-
allocationManager = address(0x1);
50+
serviceManager = address(0x2);
2951
slasher = address(0x3);
3052
operator = address(0x4);
3153
mockStrategy = IStrategy(address(0x5));
32-
slashingRegistryCoordinator = address(0x6);
3354

3455
vm.startPrank(proxyAdminOwner);
3556
proxyAdmin = new ProxyAdmin();
3657
emptyContract = new EmptyContract();
3758

38-
instantSlasher = InstantSlasher(
59+
address[] memory pausers = new address[](1);
60+
pausers[0] = pauser;
61+
pauserRegistry = new PauserRegistry(pausers, unpauser);
62+
63+
delegationMock = new DelegationMock();
64+
65+
permissionController = new PermissionController();
66+
67+
allocationManagerImplementation = new AllocationManager(
68+
delegationMock,
69+
pauserRegistry,
70+
permissionController,
71+
DEALLOCATION_DELAY,
72+
ALLOCATION_CONFIGURATION_DELAY
73+
);
74+
75+
allocationManager = AllocationManager(
76+
address(
77+
new TransparentUpgradeableProxy(
78+
address(allocationManagerImplementation),
79+
address(proxyAdmin),
80+
""
81+
)
82+
)
83+
);
84+
85+
allocationManager.initialize(proxyAdminOwner, 0);
86+
87+
// Deploy and set up SlashingRegistryCoordinator
88+
slashingRegistryCoordinatorImplementation = new SlashingRegistryCoordinator(
89+
IStakeRegistry(address(0)), // Mock stake registry
90+
IBLSApkRegistry(address(0)), // Mock BLS APK registry
91+
IIndexRegistry(address(0)), // Mock index registry
92+
ISocketRegistry(address(0)), // Mock socket registry
93+
allocationManager,
94+
pauserRegistry
95+
);
96+
97+
slashingRegistryCoordinator = SlashingRegistryCoordinator(
3998
address(
40-
new TransparentUpgradeableProxy(address(emptyContract), address(proxyAdmin), "")
99+
new TransparentUpgradeableProxy(
100+
address(slashingRegistryCoordinatorImplementation),
101+
address(proxyAdmin),
102+
""
103+
)
41104
)
42105
);
43106

107+
slashingRegistryCoordinator.initialize(
108+
proxyAdminOwner,
109+
churnApprover,
110+
ejector,
111+
0, // Initial paused status
112+
serviceManager
113+
);
114+
115+
vm.stopPrank();
116+
44117
instantSlasherImplementation = new InstantSlasher(
45-
IAllocationManager(allocationManager),
118+
allocationManager,
46119
ISlashingRegistryCoordinator(slashingRegistryCoordinator),
47120
slasher
48121
);
49122

123+
instantSlasher = InstantSlasher(
124+
address(
125+
new TransparentUpgradeableProxy(
126+
address(emptyContract),
127+
address(proxyAdmin),
128+
""
129+
)
130+
)
131+
);
132+
133+
vm.startPrank(proxyAdminOwner);
50134
proxyAdmin.upgrade(
51135
TransparentUpgradeableProxy(payable(address(instantSlasher))),
52136
address(instantSlasherImplementation)
53137
);
54138
vm.stopPrank();
55139

140+
56141
instantSlasher.initialize(slasher);
142+
143+
vm.prank(serviceManager);
144+
permissionController.setAppointee(
145+
address(serviceManager),
146+
address(instantSlasher),
147+
address(allocationManager),
148+
AllocationManager.slashOperator.selector
149+
);
57150
}
58151

59152
function test_initialization() public {
@@ -83,9 +176,8 @@ contract InstantSlasherTest is Test {
83176
}
84177

85178
function test_fulfillSlashingRequest() public {
86-
vm.skip(true); // TODO:
179+
vm.skip(true); /// TODO:
87180
IAllocationManagerTypes.SlashingParams memory params = _createMockSlashingParams();
88-
89181
vm.prank(slasher);
90182
instantSlasher.fulfillSlashingRequest(params);
91183
}

test/unit/VetoableSlasher.t.sol

Lines changed: 95 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,53 +10,141 @@ import {ISlashingRegistryCoordinator} from "../../src/interfaces/ISlashingRegist
1010
import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
1111
import {TransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
1212
import {EmptyContract} from "eigenlayer-contracts/src/test/mocks/EmptyContract.sol";
13+
import {AllocationManager} from "eigenlayer-contracts/src/contracts/core/AllocationManager.sol";
14+
import {PermissionController} from "eigenlayer-contracts/src/contracts/permissions/PermissionController.sol";
15+
import {PauserRegistry} from "eigenlayer-contracts/src/contracts/permissions/PauserRegistry.sol";
16+
import {DelegationMock} from "../mocks/DelegationMock.sol";
17+
import {SlashingRegistryCoordinator} from "../../src/SlashingRegistryCoordinator.sol";
18+
import {IBLSApkRegistry} from "../../src/interfaces/IBLSApkRegistry.sol";
19+
import {IStakeRegistry} from "../../src/interfaces/IStakeRegistry.sol";
20+
import {IIndexRegistry} from "../../src/interfaces/IIndexRegistry.sol";
21+
import {ISocketRegistry} from "../../src/interfaces/ISocketRegistry.sol";
1322

1423
contract VetoableSlasherTest is Test {
1524
VetoableSlasher public vetoableSlasher;
1625
VetoableSlasher public vetoableSlasherImplementation;
1726
ProxyAdmin public proxyAdmin;
1827
EmptyContract public emptyContract;
28+
AllocationManager public allocationManager;
29+
AllocationManager public allocationManagerImplementation;
30+
PermissionController public permissionController;
31+
PauserRegistry public pauserRegistry;
32+
DelegationMock public delegationMock;
33+
SlashingRegistryCoordinator public slashingRegistryCoordinator;
34+
SlashingRegistryCoordinator public slashingRegistryCoordinatorImplementation;
1935

20-
address public allocationManager;
21-
address public slashingRegistryCoordinator;
2236
address public vetoCommittee;
2337
address public slasher;
38+
address public serviceManager;
2439
address public operator;
2540
IStrategy public mockStrategy;
2641
address public proxyAdminOwner = address(uint160(uint256(keccak256("proxyAdminOwner"))));
42+
address public pauser = address(uint160(uint256(keccak256("pauser"))));
43+
address public unpauser = address(uint160(uint256(keccak256("unpauser"))));
44+
address public churnApprover = address(uint160(uint256(keccak256("churnApprover"))));
45+
address public ejector = address(uint160(uint256(keccak256("ejector"))));
2746

2847
uint256 constant VETO_PERIOD = 3 days;
48+
uint32 constant DEALLOCATION_DELAY = 7 days;
49+
uint32 constant ALLOCATION_CONFIGURATION_DELAY = 1 days;
2950

3051
function setUp() public {
31-
allocationManager = address(0x1);
52+
serviceManager = address(0x1);
3253
vetoCommittee = address(0x2);
3354
slasher = address(0x3);
3455
operator = address(0x4);
3556
mockStrategy = IStrategy(address(0x5));
36-
slashingRegistryCoordinator = address(0x6);
3757

3858
vm.startPrank(proxyAdminOwner);
3959
proxyAdmin = new ProxyAdmin();
4060
emptyContract = new EmptyContract();
4161

42-
vetoableSlasher = VetoableSlasher(
62+
address[] memory pausers = new address[](1);
63+
pausers[0] = pauser;
64+
pauserRegistry = new PauserRegistry(pausers, unpauser);
65+
66+
delegationMock = new DelegationMock();
67+
68+
permissionController = new PermissionController();
69+
70+
allocationManagerImplementation = new AllocationManager(
71+
delegationMock,
72+
pauserRegistry,
73+
permissionController,
74+
DEALLOCATION_DELAY,
75+
ALLOCATION_CONFIGURATION_DELAY
76+
);
77+
78+
allocationManager = AllocationManager(
79+
address(
80+
new TransparentUpgradeableProxy(
81+
address(allocationManagerImplementation),
82+
address(proxyAdmin),
83+
""
84+
)
85+
)
86+
);
87+
88+
allocationManager.initialize(proxyAdminOwner, 0);
89+
90+
// Deploy and set up SlashingRegistryCoordinator
91+
slashingRegistryCoordinatorImplementation = new SlashingRegistryCoordinator(
92+
IStakeRegistry(address(0)), // Mock stake registry
93+
IBLSApkRegistry(address(0)), // Mock BLS APK registry
94+
IIndexRegistry(address(0)), // Mock index registry
95+
ISocketRegistry(address(0)), // Mock socket registry
96+
allocationManager,
97+
pauserRegistry
98+
);
99+
100+
slashingRegistryCoordinator = SlashingRegistryCoordinator(
43101
address(
44-
new TransparentUpgradeableProxy(address(emptyContract), address(proxyAdmin), "")
102+
new TransparentUpgradeableProxy(
103+
address(slashingRegistryCoordinatorImplementation),
104+
address(proxyAdmin),
105+
""
106+
)
45107
)
46108
);
47109

110+
slashingRegistryCoordinator.initialize(
111+
proxyAdminOwner,
112+
churnApprover,
113+
ejector,
114+
0, // Initial paused status
115+
serviceManager
116+
);
117+
48118
vetoableSlasherImplementation = new VetoableSlasher(
49119
IAllocationManager(allocationManager),
50120
ISlashingRegistryCoordinator(slashingRegistryCoordinator)
51121
);
52122

123+
vetoableSlasher = VetoableSlasher(
124+
address(
125+
new TransparentUpgradeableProxy(
126+
address(emptyContract),
127+
address(proxyAdmin),
128+
""
129+
)
130+
)
131+
);
132+
53133
proxyAdmin.upgrade(
54134
TransparentUpgradeableProxy(payable(address(vetoableSlasher))),
55135
address(vetoableSlasherImplementation)
56136
);
57137
vm.stopPrank();
58138

59139
vetoableSlasher.initialize(vetoCommittee, slasher);
140+
141+
vm.prank(serviceManager);
142+
permissionController.setAppointee(
143+
address(serviceManager),
144+
address(vetoableSlasher),
145+
address(allocationManager),
146+
AllocationManager.slashOperator.selector
147+
);
60148
}
61149

62150
function test_initialization() public {
@@ -150,7 +238,7 @@ contract VetoableSlasherTest is Test {
150238
}
151239

152240
function test_fulfillSlashingRequest() public {
153-
vm.skip(true);
241+
vm.skip(true); /// TODO:
154242
IAllocationManagerTypes.SlashingParams memory params = _createMockSlashingParams();
155243

156244
vm.prank(slasher);

0 commit comments

Comments
 (0)