@@ -31,20 +31,21 @@ contract StakedTokenV3 is StakedTokenV2, IStakedTokenV3, RoleManager {
3131 using SafeERC20 for IERC20 ;
3232 using PercentageMath for uint256 ;
3333
34- uint256 public constant SLASH_ADMIN_ROLE = 0 ;
34+ uint256 public constant MAIN_ADMIN_ROLE = 0 ;
3535 uint256 public constant COOLDOWN_ADMIN_ROLE = 1 ;
36- uint256 public constant CLAIM_HELPER_ROLE = 2 ;
3736
3837 function REVISION () public pure virtual override returns (uint256 ) {
39- return 3 ;
38+ return 6 ;
4039 }
4140
4241 //maximum percentage of the underlying that can be slashed in a single realization event
4342 uint256 internal _maxSlashablePercentage;
4443 bool _cooldownPaused;
4544
46- modifier onlySlashingAdmin {
47- require (msg .sender == getAdmin (SLASH_ADMIN_ROLE), 'CALLER_NOT_SLASHING_ADMIN ' );
45+ address internal _claimHelper;
46+
47+ modifier onlyAdmin {
48+ require (msg .sender == getAdmin (MAIN_ADMIN_ROLE), 'CALLER_NOT_MAIN_ADMIN ' );
4849 _;
4950 }
5051
@@ -54,7 +55,7 @@ contract StakedTokenV3 is StakedTokenV2, IStakedTokenV3, RoleManager {
5455 }
5556
5657 modifier onlyClaimHelper {
57- require (msg .sender == getAdmin (CLAIM_HELPER_ROLE) , 'CALLER_NOT_CLAIM_HELPER ' );
58+ require (msg .sender == _claimHelper , 'CALLER_NOT_CLAIM_HELPER ' );
5859 _;
5960 }
6061
@@ -142,18 +143,17 @@ contract StakedTokenV3 is StakedTokenV2, IStakedTokenV3, RoleManager {
142143 _setupDecimals (decimals);
143144 }
144145
145- address [] memory adminsAddresses = new address [](3 );
146- uint256 [] memory adminsRoles = new uint256 [](3 );
146+ address [] memory adminsAddresses = new address [](2 );
147+ uint256 [] memory adminsRoles = new uint256 [](2 );
147148
148149 adminsAddresses[0 ] = slashingAdmin;
149150 adminsAddresses[1 ] = cooldownPauseAdmin;
150- adminsAddresses[2 ] = claimHelper;
151151
152- adminsRoles[0 ] = SLASH_ADMIN_ROLE ;
152+ adminsRoles[0 ] = MAIN_ADMIN_ROLE ;
153153 adminsRoles[1 ] = COOLDOWN_ADMIN_ROLE;
154- adminsRoles[2 ] = CLAIM_HELPER_ROLE;
155154
156155 _initAdmins (adminsRoles, adminsAddresses);
156+ _claimHelper = claimHelper;
157157
158158 _maxSlashablePercentage = maxSlashablePercentage;
159159 }
@@ -321,7 +321,7 @@ contract StakedTokenV3 is StakedTokenV2, IStakedTokenV3, RoleManager {
321321 * @param destination the address where seized funds will be transferred
322322 * @param amount the amount
323323 **/
324- function slash (address destination , uint256 amount ) external override onlySlashingAdmin {
324+ function slash (address destination , uint256 amount ) external override onlyAdmin {
325325 uint256 balance = STAKED_TOKEN.balanceOf (address (this ));
326326
327327 uint256 maxSlashable = balance.percentMul (_maxSlashablePercentage);
@@ -333,6 +333,14 @@ contract StakedTokenV3 is StakedTokenV2, IStakedTokenV3, RoleManager {
333333 emit Slashed (destination, amount);
334334 }
335335
336+ function setClaimHelper (address claimHelper ) external override onlyAdmin {
337+ _claimHelper = claimHelper;
338+ }
339+
340+ function getClaimHelper () external view override returns (address ) {
341+ return _claimHelper;
342+ }
343+
336344 /**
337345 * @dev returns true if the unstake cooldown is paused
338346 */
@@ -353,7 +361,7 @@ contract StakedTokenV3 is StakedTokenV2, IStakedTokenV3, RoleManager {
353361 * @dev sets the admin of the slashing pausing function
354362 * @param percentage the new maximum slashable percentage
355363 */
356- function setMaxSlashablePercentage (uint256 percentage ) external override onlySlashingAdmin {
364+ function setMaxSlashablePercentage (uint256 percentage ) external override onlyAdmin {
357365 require (percentage <= PercentageMath.PERCENTAGE_FACTOR, 'INVALID_SLASHING_PERCENTAGE ' );
358366
359367 _maxSlashablePercentage = percentage;
0 commit comments