Skip to content

Commit 05ed1a5

Browse files
Merge branch 'main' into feat/update-2503
2 parents c0ab112 + 39aea69 commit 05ed1a5

25 files changed

+1788
-757
lines changed

contracts/config/anvil.json

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,14 @@
2121
"rewardsCoordinatorInitPausedStatus": 0,
2222
"allocationManagerInitPausedStatus": 0,
2323
"deallocationDelay": 50,
24-
"allocationConfigurationDelay": 75,
24+
"allocationConfigurationDelay": 0,
2525
"beaconChainGenesisTimestamp": 1695902400
2626
},
2727
"avs": {
2828
"avsOwner": "0x976EA74026E726554dB657fA54763abd0C3a0aa9",
2929
"rewardsInitiator": "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955",
3030
"validatorSetSubmitter": "0x976EA74026E726554dB657fA54763abd0C3a0aa9",
31-
"validatorsStrategies": [
32-
"0xbeaC0eeEeeeeEEeEeEEEEeeEEeEeeeEeeEEBEaC0"
33-
]
31+
"validatorsStrategies": []
3432
},
3533
"snowbridge": {
3634
"randaoCommitDelay": 4,
@@ -49,4 +47,4 @@
4947
"0xf68aec7304bf37f340dae2ea20fb5271ee28a3128812b84a615da4789e458bde"
5048
]
5149
}
52-
}
50+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
aa4e5f7e459c7a4f337016e845cd05aa56cccb41
1+
9c861e3e1d290888127bc6d772fb1a3422bdf8b3

contracts/deployments/state-diff.json

Lines changed: 38 additions & 545 deletions
Large diffs are not rendered by default.

contracts/script/deploy/DeployBase.s.sol

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ import {
3232
} from "eigenlayer-contracts/src/contracts/permissions/PermissionController.sol";
3333
import {EigenPodManager} from "eigenlayer-contracts/src/contracts/pods/EigenPodManager.sol";
3434
import {IETHPOSDeposit} from "eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol";
35+
import {IStrategy} from "eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol";
36+
import {
37+
IRewardsCoordinatorTypes
38+
} from "eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol";
3539

3640
// DataHaven imports
3741
import {DataHavenServiceManager} from "../../src/DataHavenServiceManager.sol";
@@ -41,7 +45,7 @@ import {ValidatorsUtils} from "../../script/utils/ValidatorsUtils.sol";
4145
struct ServiceManagerInitParams {
4246
address avsOwner;
4347
address rewardsInitiator;
44-
address[] validatorsStrategies;
48+
IRewardsCoordinatorTypes.StrategyAndMultiplier[] validatorsStrategiesAndMultipliers;
4549
address gateway;
4650
address validatorSetSubmitter;
4751
}
@@ -246,11 +250,21 @@ abstract contract DeployBase is Script, DeployParams, Accounts {
246250
"ServiceManager Implementation", address(serviceManagerImplementation)
247251
);
248252

253+
// Build StrategyAndMultiplier[] from config addresses with default multiplier of 1.
254+
// Multipliers can be updated post-deployment via setStrategiesAndMultipliers if needed.
255+
IRewardsCoordinatorTypes.StrategyAndMultiplier[] memory strategiesAndMultipliers = new IRewardsCoordinatorTypes
256+
.StrategyAndMultiplier[](avsConfig.validatorsStrategies.length);
257+
for (uint256 i = 0; i < avsConfig.validatorsStrategies.length; i++) {
258+
strategiesAndMultipliers[i] = IRewardsCoordinatorTypes.StrategyAndMultiplier({
259+
strategy: IStrategy(avsConfig.validatorsStrategies[i]), multiplier: 1
260+
});
261+
}
262+
249263
// Create service manager initialisation parameters struct
250264
ServiceManagerInitParams memory initParams = ServiceManagerInitParams({
251265
avsOwner: avsConfig.avsOwner,
252266
rewardsInitiator: avsConfig.rewardsInitiator,
253-
validatorsStrategies: avsConfig.validatorsStrategies,
267+
validatorsStrategiesAndMultipliers: strategiesAndMultipliers,
254268
gateway: address(gateway),
255269
validatorSetSubmitter: avsConfig.validatorSetSubmitter
256270
});

contracts/script/deploy/DeployLive.s.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ contract DeployLive is DeployBase {
120120
DataHavenServiceManager.initialize.selector,
121121
params.avsOwner,
122122
params.rewardsInitiator,
123-
params.validatorsStrategies,
123+
params.validatorsStrategiesAndMultipliers,
124124
params.gateway,
125125
params.validatorSetSubmitter
126126
);

contracts/script/deploy/DeployLocal.s.sol

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ contract DeployLocal is DeployBase {
206206
DataHavenServiceManager.initialize.selector,
207207
params.avsOwner,
208208
params.rewardsInitiator,
209-
params.validatorsStrategies,
209+
params.validatorsStrategiesAndMultipliers,
210210
params.gateway,
211211
params.validatorSetSubmitter
212212
);
@@ -356,11 +356,15 @@ contract DeployLocal is DeployBase {
356356
function _prepareStrategiesForServiceManager(
357357
ServiceManagerInitParams memory params
358358
) internal view {
359-
if (params.validatorsStrategies.length == 0) {
360-
params.validatorsStrategies = new address[](deployedStrategies.length);
359+
if (params.validatorsStrategiesAndMultipliers.length == 0) {
360+
IRewardsCoordinatorTypes.StrategyAndMultiplier[] memory sm =
361+
new IRewardsCoordinatorTypes.StrategyAndMultiplier[](deployedStrategies.length);
361362
for (uint256 i = 0; i < deployedStrategies.length; i++) {
362-
params.validatorsStrategies[i] = deployedStrategies[i].address_;
363+
sm[i] = IRewardsCoordinatorTypes.StrategyAndMultiplier({
364+
strategy: IStrategy(deployedStrategies[i].address_), multiplier: 1
365+
});
363366
}
367+
params.validatorsStrategiesAndMultipliers = sm;
364368
}
365369
}
366370

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
// SPDX-License-Identifier: UNLICENSED
2+
pragma solidity ^0.8.27;
3+
4+
// EigenLayer imports
5+
import {
6+
IAllocationManagerTypes
7+
} from "eigenlayer-contracts/src/contracts/interfaces/IAllocationManager.sol";
8+
import {OperatorSet} from "eigenlayer-contracts/src/contracts/libraries/OperatorSetLib.sol";
9+
import {IStrategy} from "eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol";
10+
11+
// Testing imports
12+
import {Script} from "forge-std/Script.sol";
13+
import {console} from "forge-std/console.sol";
14+
import {Logging} from "../utils/Logging.sol";
15+
import {ELScriptStorage} from "../utils/ELScriptStorage.s.sol";
16+
import {DHScriptStorage} from "../utils/DHScriptStorage.s.sol";
17+
import {Accounts} from "../utils/Accounts.sol";
18+
19+
/**
20+
* @title AllocateOperatorStake
21+
* @notice Allocates full magnitude to the validator operator set.
22+
* Must be run AFTER SignUpValidator (needs at least 1 block gap
23+
* for the allocation delay to initialize).
24+
*/
25+
contract AllocateOperatorStake is Script, ELScriptStorage, DHScriptStorage, Accounts {
26+
function run() public {
27+
string memory network = vm.envOr("NETWORK", string("anvil"));
28+
Logging.logHeader("ALLOCATE OPERATOR STAKE");
29+
console.log("| Network: %s", network);
30+
Logging.logFooter();
31+
32+
_loadELContracts(network);
33+
_loadDHContracts(network);
34+
35+
IStrategy[] memory strategies = new IStrategy[](deployedStrategies.length);
36+
for (uint256 i = 0; i < deployedStrategies.length; i++) {
37+
strategies[i] = IStrategy(address(deployedStrategies[i].strategy));
38+
}
39+
40+
uint64[] memory newMagnitudes = new uint64[](strategies.length);
41+
for (uint256 i = 0; i < strategies.length; i++) {
42+
newMagnitudes[i] = 1e18;
43+
}
44+
45+
IAllocationManagerTypes.AllocateParams[] memory allocParams =
46+
new IAllocationManagerTypes.AllocateParams[](1);
47+
allocParams[0] = IAllocationManagerTypes.AllocateParams({
48+
operatorSet: OperatorSet({
49+
avs: address(serviceManager), id: serviceManager.VALIDATORS_SET_ID()
50+
}),
51+
strategies: strategies,
52+
newMagnitudes: newMagnitudes
53+
});
54+
55+
vm.broadcast(_operatorPrivateKey);
56+
allocationManager.modifyAllocations(_operator, allocParams);
57+
Logging.logStep(
58+
string.concat("Allocated full magnitude for operator: ", vm.toString(_operator))
59+
);
60+
}
61+
}

contracts/scripts/check-storage-layout.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ normalize_json() {
3333
| .storage
3434
| map(
3535
del(.astId, .contract)
36-
# Remove unstable AST ID suffixes from type strings (e.g., t_contract(IGatewayV2)12345)
37-
| .type |= sub("\\)[0-9]+$"; ")")
36+
# Remove unstable AST IDs from type strings (e.g., t_contract(IGatewayV2)12345, nested mappings)
37+
| .type |= gsub("\\)[0-9]+"; ")")
3838
)
3939
| sort_by(.slot | tonumber)' "$1"
4040
}

0 commit comments

Comments
 (0)