Skip to content

Commit fb6aefd

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

File tree

1 file changed

+19
-29
lines changed

1 file changed

+19
-29
lines changed

contracts/0.4.24/template/LidoTemplate.sol

Lines changed: 19 additions & 29 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());
421-
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());
424-
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());
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());
431419

432-
_transferPermissionFromTemplate(state.acl, address(state.acl), address(state.agent), state.acl.CREATE_PERMISSIONS_ROLE(), address(state.agent));
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());
433422

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 */
@@ -777,4 +755,16 @@ contract LidoTemplate is IsContract {
777755
delete apmRepos.aragonVoting;
778756
delete apmRepos;
779757
}
758+
759+
function _finalizePermissions(address newManager) private {
760+
deployState.acl.setPermissionManager(newManager, address(deployState.agent), deployState.agent.RUN_SCRIPT_ROLE());
761+
deployState.acl.setPermissionManager(newManager, address(deployState.agent), deployState.agent.EXECUTE_ROLE());
762+
763+
ACL apmACL = ACL(deployState.lidoRegistry.kernel().acl());
764+
_transferPermissionFromTemplate(apmACL, apmACL, address(deployState.agent), apmACL.CREATE_PERMISSIONS_ROLE());
765+
766+
_transferPermissionFromTemplate(deployState.acl, address(deployState.acl), newManager, deployState.acl.CREATE_PERMISSIONS_ROLE(), newManager);
767+
768+
_resetState();
769+
}
780770
}

0 commit comments

Comments
 (0)