guardian role introduced in the StakeManager

This commit is contained in:
Filip Pajic
2025-08-27 14:52:41 +02:00
parent 7371ba36ee
commit 19a44146f5

View File

@@ -76,6 +76,14 @@ contract StakeManager is
mapping(address vault => address owner) public vaultOwners;
/// @notice Flag to enable emergency mode.
bool public emergencyModeEnabled;
address public guardian;
modifier onlyAdminOrGuardian() {
if (msg.sender != guardian && msg.sender != owner()) {
revert StakeManager__Unauthorized();
}
_;
}
modifier onlyRegisteredVault() {
if (vaultOwners[msg.sender] == address(0)) {
@@ -137,6 +145,10 @@ contract StakeManager is
rewardsSupplier = _rewardsSupplier;
}
function setGuardian(address _guardian) external onlyOwner onlyNotEmergencyMode {
guardian = _guardian;
}
/**
* @notice Registers a vault with its owner. Called by the vault itself during initialization.
* @dev Only callable by contracts with trusted codehash
@@ -350,7 +362,7 @@ contract StakeManager is
* @dev This function is only callable when emergency mode is disabled.
* @dev Only the owner of the contract can call this function.
*/
function enableEmergencyMode() external onlyOwner onlyNotEmergencyMode {
function enableEmergencyMode() external onlyAdminOrGuardian onlyNotEmergencyMode {
emergencyModeEnabled = true;
emit EmergencyModeEnabled();
}