Skip to content

Commit 925b502

Browse files
committed
fix: reduce LidoTemplate contract size
1 parent adad353 commit 925b502

File tree

2 files changed

+26
-31
lines changed

2 files changed

+26
-31
lines changed

contracts/0.4.24/template/LidoTemplate.sol

Lines changed: 15 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ contract LidoTemplate is IsContract {
4242
string private constant ERROR_BAD_AMOUNTS_LEN = "TMPL_BAD_AMOUNTS_LEN";
4343
string private constant ERROR_INVALID_ID = "TMPL_INVALID_ID";
4444
string private constant ERROR_UNEXPECTED_TOTAL_SUPPLY = "TMPL_UNEXPECTED_TOTAL_SUPPLY";
45-
string private constant ERROR_INVALID_DG_ADMIN_EXECUTOR = "TMPL_INVALID_DG_ADMIN_EXECUTOR";
45+
string private constant ERROR_INVALID_DG_ADMIN_EXECUTOR = "TMPL_0_ADDR";
4646

4747
// Operational errors
4848
string private constant ERROR_PERMISSION_DENIED = "TMPL_PERMISSION_DENIED";
@@ -414,39 +414,17 @@ contract LidoTemplate is IsContract {
414414
function finalizePermissionsAfterDGDeployment(address dgAdminExecutor) external onlyOwner {
415415
require(dgAdminExecutor != address(0), ERROR_INVALID_DG_ADMIN_EXECUTOR);
416416

417-
DeployState memory state = deployState;
418-
419-
state.acl.grantPermission(dgAdminExecutor, address(state.agent), state.agent.RUN_SCRIPT_ROLE());
420-
state.acl.grantPermission(dgAdminExecutor, address(state.agent), state.agent.EXECUTE_ROLE());
417+
deployState.acl.grantPermission(dgAdminExecutor, address(deployState.agent), deployState.agent.RUN_SCRIPT_ROLE());
418+
deployState.acl.grantPermission(dgAdminExecutor, address(deployState.agent), deployState.agent.EXECUTE_ROLE());
421419

422-
state.acl.revokePermission(address(state.voting), address(state.agent), state.agent.RUN_SCRIPT_ROLE());
423-
state.acl.revokePermission(address(state.voting), address(state.agent), state.agent.EXECUTE_ROLE());
420+
deployState.acl.revokePermission(address(deployState.voting), address(deployState.agent), deployState.agent.RUN_SCRIPT_ROLE());
421+
deployState.acl.revokePermission(address(deployState.voting), address(deployState.agent), deployState.agent.EXECUTE_ROLE());
424422

425-
state.acl.setPermissionManager(address(state.agent), address(state.agent), state.agent.RUN_SCRIPT_ROLE());
426-
state.acl.setPermissionManager(address(state.agent), address(state.agent), state.agent.EXECUTE_ROLE());
427-
428-
Kernel apmDAO = Kernel(state.lidoRegistry.kernel());
429-
ACL apmACL = ACL(apmDAO.acl());
430-
_transferPermissionFromTemplate(apmACL, apmACL, address(state.agent), apmACL.CREATE_PERMISSIONS_ROLE());
431-
432-
_transferPermissionFromTemplate(state.acl, address(state.acl), address(state.agent), state.acl.CREATE_PERMISSIONS_ROLE(), address(state.agent));
433-
434-
_resetState();
423+
_finalizePermissions(address(deployState.agent));
435424
}
436425

437426
function finalizePermissionsWithoutDGDeployment() external onlyOwner {
438-
DeployState memory state = deployState;
439-
440-
state.acl.setPermissionManager(address(state.voting), address(state.agent), state.agent.RUN_SCRIPT_ROLE());
441-
state.acl.setPermissionManager(address(state.voting), address(state.agent), state.agent.EXECUTE_ROLE());
442-
443-
Kernel apmDAO = Kernel(state.lidoRegistry.kernel());
444-
ACL apmACL = ACL(apmDAO.acl());
445-
_transferPermissionFromTemplate(apmACL, apmACL, address(state.agent), apmACL.CREATE_PERMISSIONS_ROLE());
446-
447-
_transferPermissionFromTemplate(state.acl, address(state.acl), address(state.voting), state.acl.CREATE_PERMISSIONS_ROLE(), address(state.voting));
448-
449-
_resetState();
427+
_finalizePermissions(address(deployState.voting));
450428
}
451429

452430
/* DAO AND APPS */
@@ -754,9 +732,15 @@ contract LidoTemplate is IsContract {
754732
return keccak256(abi.encodePacked(_apmRootNode, keccak256(abi.encodePacked(_appName))));
755733
}
756734

757-
/* STATE RESET */
735+
function _finalizePermissions(address newManager) private {
736+
deployState.acl.setPermissionManager(newManager, address(deployState.agent), deployState.agent.RUN_SCRIPT_ROLE());
737+
deployState.acl.setPermissionManager(newManager, address(deployState.agent), deployState.agent.EXECUTE_ROLE());
738+
739+
ACL apmACL = ACL(deployState.lidoRegistry.kernel().acl());
740+
_transferPermissionFromTemplate(apmACL, apmACL, address(deployState.agent), apmACL.CREATE_PERMISSIONS_ROLE());
741+
742+
_transferPermissionFromTemplate(deployState.acl, address(deployState.acl), newManager, deployState.acl.CREATE_PERMISSIONS_ROLE(), newManager);
758743

759-
function _resetState() private {
760744
delete deployState.lidoRegistryEnsNode;
761745
delete deployState.lidoRegistry;
762746
delete deployState.dao;

hardhat.config.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,17 @@ const config: HardhatUserConfig = {
219219
evmVersion: "cancun",
220220
},
221221
},
222+
"contracts/0.4.24/template/LidoTemplate.sol": {
223+
version: "0.4.24",
224+
settings: {
225+
optimizer: {
226+
enabled: true,
227+
runs: 50,
228+
},
229+
viaIR: true,
230+
evmVersion: "constantinople",
231+
},
232+
},
222233
},
223234
},
224235
tracer: {

0 commit comments

Comments
 (0)