Skip to content

Commit fd7b01f

Browse files
committed
chore: implement pausable in ServiceManager
1 parent 7ce49d4 commit fd7b01f

File tree

5 files changed

+58
-22
lines changed

5 files changed

+58
-22
lines changed

contracts/script/deploy/AlignedLayerDeployer.s.sol

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ contract AlignedLayerDeployer is ExistingDeploymentParser {
3232
address public alignedLayerOwner;
3333
address public alignedLayerUpgrader;
3434
address public pauser;
35+
address public pauserAddress;
3536
uint256 public initalPausedStatus;
3637
address public deployer;
3738

@@ -42,6 +43,7 @@ contract AlignedLayerDeployer is ExistingDeploymentParser {
4243
StakeRegistry public stakeRegistry;
4344
OperatorStateRetriever public operatorStateRetriever;
4445
ServiceManagerRouter public serviceManagerRouter;
46+
PauserRegistry public pauserRegistry;
4547

4648
BLSApkRegistry public apkRegistryImplementation;
4749
AlignedLayerServiceManager public alignedLayerServiceManagerImplementation;
@@ -86,7 +88,8 @@ contract AlignedLayerDeployer is ExistingDeploymentParser {
8688
".permissions.initalPausedStatus"
8789
);
8890

89-
pauser = address(eigenLayerPauserReg);
91+
pauser = address(eigenLayerPauserReg); //TODO: Change to the pauser
92+
pauserAddress = stdJson.readAddress(config_data, ".permissions.pauser");
9093

9194
deployer = stdJson.readAddress(config_data, ".permissions.deployer");
9295
require(
@@ -100,6 +103,13 @@ contract AlignedLayerDeployer is ExistingDeploymentParser {
100103
// deploy proxy admin for ability to upgrade proxy contracts
101104
alignedLayerProxyAdmin = new ProxyAdmin();
102105

106+
//deploy pauser registry
107+
{
108+
address[] memory pausers = new address[](1);
109+
pausers[0] = pauserAddress;
110+
pauserRegistry = new PauserRegistry(pausers, pauserAddress); // (pausers, unpauser)
111+
}
112+
103113
//deploy service manager router
104114
serviceManagerRouter = new ServiceManagerRouter();
105115

@@ -241,7 +251,9 @@ contract AlignedLayerDeployer is ExistingDeploymentParser {
241251
address(alignedLayerServiceManagerImplementation),
242252
abi.encodeWithSelector(
243253
AlignedLayerServiceManager.initialize.selector,
244-
deployer
254+
deployer,
255+
pauserRegistry,
256+
initalPausedStatus
245257
)
246258
);
247259

@@ -765,6 +777,11 @@ contract AlignedLayerDeployer is ExistingDeploymentParser {
765777
"serviceManagerRouter",
766778
address(serviceManagerRouter)
767779
);
780+
vm.serializeAddress(
781+
deployed_addresses,
782+
"pauserRegistry",
783+
address(pauserRegistry)
784+
);
768785
string memory deployed_addresses_output = vm.serializeAddress(
769786
deployed_addresses,
770787
"stakeRegistryImplementation",
@@ -787,6 +804,10 @@ contract AlignedLayerDeployer is ExistingDeploymentParser {
787804
config_data,
788805
".permissions.ejector"
789806
);
807+
address pauserAddress = stdJson.readAddress(
808+
config_data,
809+
".permissions.pauser"
810+
);
790811
string memory permissions = "permissions";
791812
vm.serializeAddress(
792813
permissions,
@@ -799,7 +820,8 @@ contract AlignedLayerDeployer is ExistingDeploymentParser {
799820
alignedLayerUpgrader
800821
);
801822
vm.serializeAddress(permissions, "alignedLayerChurner", churner);
802-
vm.serializeAddress(permissions, "pauserRegistry", pauser);
823+
vm.serializeAddress(permissions, "alignedLayerPauser", pauserAddress);
824+
// vm.serializeAddress(permissions, "pauserRegistry", pauser);
803825
string memory permissions_output = vm.serializeAddress(
804826
permissions,
805827
"alignedLayerEjector",

contracts/script/deploy/config/devnet/aligned.devnet.config.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"churner": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
1010
"ejector": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
1111
"deployer": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
12+
"pauser": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
1213
"initalPausedStatus": 0
1314
},
1415
"minimumStakes": [
Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
{
22
"addresses": {
33
"alignedLayerProxyAdmin": "0x9E545E3C0baAB3E08CdfD552C960A1050f373042",
4-
"alignedLayerServiceManager": "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8",
5-
"alignedLayerServiceManagerImplementation": "0x809d550fca64d94Bd9F66E60752A544199cfAC3D",
6-
"blsApkRegistry": "0x998abeb3E57409262aE5b751f60747921B33613E",
7-
"blsApkRegistryImplementation": "0x8f86403A4DE0BB5791fa46B8e795C547942fE4Cf",
8-
"indexRegistry": "0xf5059a5D33d5853360D16C683c16e67980206f36",
9-
"indexRegistryImplementation": "0x70e0bA845a1A0F2DA3359C97E0285013525FFC49",
10-
"operatorStateRetriever": "0xb7278A61aa25c888815aFC32Ad3cC52fF24fE575",
11-
"registryCoordinator": "0x851356ae760d987E095750cCeb3bC6014560891C",
12-
"registryCoordinatorImplementation": "0x5eb3Bc0a489C5A8288765d2336659EbCA68FCd00",
13-
"serviceManagerRouter": "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9",
14-
"stakeRegistry": "0x95401dc811bb5740090279Ba06cfA8fcF6113778",
15-
"stakeRegistryImplementation": "0x99bbA657f2BbC93c02D617f8bA121cB8Fc104Acf"
4+
"alignedLayerServiceManager": "0x851356ae760d987E095750cCeb3bC6014560891C",
5+
"alignedLayerServiceManagerImplementation": "0x4c5859f0F772848b2D91F1D83E2Fe57935348029",
6+
"blsApkRegistry": "0x70e0bA845a1A0F2DA3359C97E0285013525FFC49",
7+
"blsApkRegistryImplementation": "0x9d4454B023096f34B160D6B654540c56A1F81688",
8+
"indexRegistry": "0x95401dc811bb5740090279Ba06cfA8fcF6113778",
9+
"indexRegistryImplementation": "0x4826533B4897376654Bb4d4AD88B7faFD0C98528",
10+
"operatorStateRetriever": "0xCD8a1C3ba11CF5ECfa6267617243239504a98d90",
11+
"pauserRegistry": "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9",
12+
"registryCoordinator": "0xf5059a5D33d5853360D16C683c16e67980206f36",
13+
"registryCoordinatorImplementation": "0x36C02dA8a0983159322a80FFE9F24b1acfF8B570",
14+
"serviceManagerRouter": "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8",
15+
"stakeRegistry": "0x998abeb3E57409262aE5b751f60747921B33613E",
16+
"stakeRegistryImplementation": "0x0E801D84Fa97b50751Dbf25036d067dCf18858bF"
1617
},
1718
"chainInfo": {
1819
"chainId": 31337,
@@ -22,7 +23,7 @@
2223
"alignedLayerChurner": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
2324
"alignedLayerEjector": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
2425
"alignedLayerOwner": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
25-
"alignedLayerUpgrader": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
26-
"pauserRegistry": "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512"
26+
"alignedLayerPauser": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
27+
"alignedLayerUpgrader": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
2728
}
2829
}

contracts/scripts/anvil/state/alignedlayer-deployed-anvil-state.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

contracts/src/core/AlignedLayerServiceManager.sol

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ import {AlignedLayerServiceManagerStorage} from "./AlignedLayerServiceManagerSto
1818
contract AlignedLayerServiceManager is
1919
ServiceManagerBase,
2020
BLSSignatureChecker,
21-
AlignedLayerServiceManagerStorage
21+
AlignedLayerServiceManagerStorage,
22+
Pausable
2223
{
2324
uint256 internal constant THRESHOLD_DENOMINATOR = 100;
2425
uint8 internal constant QUORUM_THRESHOLD_PERCENTAGE = 67;
@@ -49,14 +50,25 @@ contract AlignedLayerServiceManager is
4950
_disableInitializers();
5051
}
5152

52-
function initialize(address _initialOwner) public initializer {
53+
/**
54+
* @notice Initializes the contract with the initial owner.
55+
* @param _initialOwner The initial owner of the contract.
56+
* @param _pauserRegistry a registry of addresses that can pause the contract
57+
* @param _initialPausedStatus pause status after calling initialize
58+
*/
59+
function initialize(
60+
address _initialOwner,
61+
IPauserRegistry _pauserRegistry,
62+
uint256 _initialPausedStatus
63+
) public initializer {
5364
_transferOwnership(_initialOwner);
65+
_initializePauser(_pauserRegistry, _initialPausedStatus);
5466
}
5567

5668
function createNewTask(
5769
bytes32 batchMerkleRoot,
5870
string calldata batchDataPointer
59-
) external payable {
71+
) external payable whenNotPaused {
6072
require(
6173
batchesState[batchMerkleRoot].taskCreatedBlock == 0,
6274
"Batch was already verified"
@@ -76,7 +88,7 @@ contract AlignedLayerServiceManager is
7688
// Root is signed as a way to verify the batch was right
7789
bytes32 batchMerkleRoot,
7890
NonSignerStakesAndSignature memory nonSignerStakesAndSignature
79-
) external {
91+
) external whenNotPaused {
8092
/* CHECKING SIGNATURES & WHETHER THRESHOLD IS MET OR NOT */
8193

8294
// Note: This is a hacky solidity way to see that the element exists

0 commit comments

Comments
 (0)