Skip to content

Commit 26b5926

Browse files
committed
test(fork): simulate executing txs from the TimelockController queue
1 parent 4b5cf3c commit 26b5926

File tree

3 files changed

+37
-10
lines changed

3 files changed

+37
-10
lines changed

script/configs/mainnet/mainnet-addresses.config.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
"0xAe60d8180437b5C34bB956822ac2710972584473",
5656
"0x298aFB19A105D59E74658C4C334Ff360BadE6dd2"
5757
],
58+
"strategyBaseTVLLimitsImplementation": "0x62F7226Fb9d615590EadB539713b250fB2fdf4E0",
5859
"token": {
5960
"tokenProxyAdmin": "0x3f5Ab2D4418d38568705bFd6672630fCC3435CC9",
6061
"EIGEN": "0xec53bf9167f50cdeb3ae105f56099aaab9061f83",
@@ -74,6 +75,7 @@
7475
"communityMultisig": "0xFEA47018D632A77bA579846c840d5706705Dc598",
7576
"executorMultisig": "0x369e6F597e22EaB55fFb173C6d9cD234BD699111",
7677
"operationsMultisig": "0xBE1685C81aA44FF9FB319dD389addd9374383e90",
78+
"protocolCouncil": "0x461854d84ee845f905e0ecf6c288ddeeb4a9533f",
7779
"pauserMultisig": "0x5050389572f2d220ad927CcbeA0D406831012390",
7880
"timelockController": "0xC06Fd4F821eaC1fF1ae8067b36342899b57BAa2d",
7981
"semver": "v1.4.1"

script/utils/ExistingDeploymentParser.sol

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ contract ExistingDeploymentParser is Script, Logger {
167167
address executorMultisig;
168168
address operationsMultisig;
169169
address communityMultisig;
170+
address protocolCouncil;
170171
address pauserMultisig;
171172
address timelockController;
172173

@@ -213,6 +214,7 @@ contract ExistingDeploymentParser is Script, Logger {
213214
executorMultisig = json.readAddress(".parameters.executorMultisig");
214215
operationsMultisig = json.readAddress(".parameters.operationsMultisig");
215216
communityMultisig = json.readAddress(".parameters.communityMultisig");
217+
protocolCouncil = json.readAddress(".parameters.protocolCouncil");
216218
pauserMultisig = json.readAddress(".parameters.pauserMultisig");
217219
timelockController = json.readAddress(".parameters.timelockController");
218220

src/test/integration/IntegrationDeployer.t.sol

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import "src/contracts/pods/EigenPodManager.sol";
1919
import "src/contracts/pods/EigenPod.sol";
2020
import "src/contracts/permissions/PauserRegistry.sol";
2121
import "src/contracts/permissions/PermissionController.sol";
22+
import {TimelockController} from "@openzeppelin/contracts/governance/TimelockController.sol";
2223

2324
import "src/test/mocks/EmptyContract.sol";
2425
import "src/test/mocks/ETHDepositMock.sol";
@@ -37,7 +38,7 @@ abstract contract IntegrationDeployer is ExistingDeploymentParser {
3738

3839
// Fork ids for specific fork tests
3940
bool isUpgraded;
40-
uint mainnetForkBlock = 22_514_370; // Post Pectra Compatibility Upgrade
41+
uint mainnetForkBlock = 22_949_454; // Post Pectra Compatibility Upgrade
4142

4243
string version = "9.9.9";
4344

@@ -54,6 +55,12 @@ abstract contract IntegrationDeployer is ExistingDeploymentParser {
5455

5556
uint32 INITIAL_GLOBAL_DELAY_BLOCKS = 4 days / 12 seconds; // 4 days in blocks
5657

58+
// derived from
59+
bytes calldataToExecutor_DISTRO =
60+
hex"6A76120200000000000000000000000040A2ACCBD92BCA938B02010E17A5B8929B49130D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C800000000000000000000000000000000000000000000000000000000000000B048D80FF0A00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000AA2008B9566ADA63B64D1E1DCF1418B43FD1433B724440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004499A88EC400000000000000000000000039053D51B77DC0D36036FC1FCC8CB819DF8EF37A0000000000000000000000006EED6C2802DF347E05884857CDDB2D3E96D12F89008B9566ADA63B64D1E1DCF1418B43FD1433B724440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004499A88EC4000000000000000000000000948A420B8CC1D6BFD0B6087C2E7C344A2CD0BC39000000000000000000000000C97602648FA52F92B4EE2B0E5A54BD15B6CB0345008B9566ADA63B64D1E1DCF1418B43FD1433B724440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004499A88EC4000000000000000000000000858646372CC42E1A627FCE94AA7A7033E7CF075A00000000000000000000000046AEFD30415BE99E20169EE7046F65784B46D123008B9566ADA63B64D1E1DCF1418B43FD1433B724440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004499A88EC400000000000000000000000091E677B07F7AF907EC9A428AAFA9FC14A0D3A338000000000000000000000000E48D7CAEC1790B293667E4BB2DE1E00536F2BABD008B9566ADA63B64D1E1DCF1418B43FD1433B724440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004499A88EC4000000000000000000000000ACB55C530ACDB2849E6D4F36992CD8C9D50ED8F7000000000000000000000000530FDB7ADF7D489DF49C27E3D3512C0DD64886BE000ED6703C298D28AE0878D1B28E88CA87F9662FE9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000243659CFE6000000000000000000000000D4D1746142642DB4C1AB17B03B9C58BAAC913E5B008B9566ADA63B64D1E1DCF1418B43FD1433B724440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004499A88EC400000000000000000000000093C4B944D05DFE6DF7645A86CD2206016C51564D00000000000000000000000062F7226FB9D615590EADB539713B250FB2FDF4E0008B9566ADA63B64D1E1DCF1418B43FD1433B724440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004499A88EC40000000000000000000000001BEE69B7DFFFA4E2D53C2A2DF135C388AD25DCD200000000000000000000000062F7226FB9D615590EADB539713B250FB2FDF4E0008B9566ADA63B64D1E1DCF1418B43FD1433B724440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004499A88EC400000000000000000000000054945180DB7943C0ED0FEE7EDAB2BD24620256BC00000000000000000000000062F7226FB9D615590EADB539713B250FB2FDF4E0008B9566ADA63B64D1E1DCF1418B43FD1433B724440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004499A88EC40000000000000000000000009D7ED45EE2E8FC5482FA2428F15C971E6369011D00000000000000000000000062F7226FB9D615590EADB539713B250FB2FDF4E0008B9566ADA63B64D1E1DCF1418B43FD1433B724440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004499A88EC400000000000000000000000013760F50A9D7377E4F20CB8CF9E4C26586C658FF00000000000000000000000062F7226FB9D615590EADB539713B250FB2FDF4E0008B9566ADA63B64D1E1DCF1418B43FD1433B724440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004499A88EC4000000000000000000000000A4C637E0F704745D182E4D38CAB7E7485321D05900000000000000000000000062F7226FB9D615590EADB539713B250FB2FDF4E0008B9566ADA63B64D1E1DCF1418B43FD1433B724440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004499A88EC400000000000000000000000057BA429517C3473B6D34CA9ACD56C0E735B94C0200000000000000000000000062F7226FB9D615590EADB539713B250FB2FDF4E0008B9566ADA63B64D1E1DCF1418B43FD1433B724440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004499A88EC40000000000000000000000000FE4F44BEE93503346A3AC9EE5A26B130A5796D600000000000000000000000062F7226FB9D615590EADB539713B250FB2FDF4E0008B9566ADA63B64D1E1DCF1418B43FD1433B724440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004499A88EC40000000000000000000000007CA911E83DABF90C90DD3DE5411A10F1A611218400000000000000000000000062F7226FB9D615590EADB539713B250FB2FDF4E0008B9566ADA63B64D1E1DCF1418B43FD1433B724440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004499A88EC40000000000000000000000008CA7A5D6F3ACD3A7A8BC468A8CD0FB14B6BD28B600000000000000000000000062F7226FB9D615590EADB539713B250FB2FDF4E0008B9566ADA63B64D1E1DCF1418B43FD1433B724440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004499A88EC4000000000000000000000000AE60D8180437B5C34BB956822AC271097258447300000000000000000000000062F7226FB9D615590EADB539713B250FB2FDF4E0008B9566ADA63B64D1E1DCF1418B43FD1433B724440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004499A88EC4000000000000000000000000298AFB19A105D59E74658C4C334FF360BADE6DD200000000000000000000000062F7226FB9D615590EADB539713B250FB2FDF4E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041000000000000000000000000C06FD4F821EAC1FF1AE8067B36342899B57BAA2D00000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000";
61+
bytes calldataToExecutor_MOOCOW =
62+
hex"6A76120200000000000000000000000040A2ACCBD92BCA938B02010E17A5B8929B49130D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002E000000000000000000000000000000000000000000000000000000000000001648D80FF0A00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000112005A2A4F2F3C18F09179B6703E63D9EDD165909073000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000243659CFE6000000000000000000000000CB27A4819A64FBA93ABD4D480E4466AEC0503745008B9566ADA63B64D1E1DCF1418B43FD1433B724440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004499A88EC4000000000000000000000000EC53BF9167F50CDEB3AE105F56099AAAB9061F830000000000000000000000002C4A81E257381F87F5A5C4BD525116466D972E500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041000000000000000000000000C06FD4F821EAC1FF1AE8067B36342899B57BAA2D00000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000";
63+
5764
// Lists of strategies used in the system
5865
//
5966
// When we select random user assets, we use the `assetType` to determine
@@ -265,25 +272,40 @@ abstract contract IntegrationDeployer is ExistingDeploymentParser {
265272
// Since we haven't done the slashing upgrade on mainnet yet, upgrade mainnet contracts
266273
// prior to test. `isUpgraded` is true by default, but is set to false in `UpgradeTest.t.sol`
267274
if (isUpgraded) {
268-
_upgradeMainnetContracts();
275+
cheats.startPrank(executorMultisig);
276+
277+
_deployProxies();
278+
_deployImplementations();
279+
_upgradeProxies();
269280

270281
// Set the `pectraForkTimestamp` on the EigenPodManager. Use pectra state
271-
cheats.startPrank(executorMultisig);
272282
eigenPodManager.setProofTimestampSetter(executorMultisig);
273283
eigenPodManager.setPectraForkTimestamp(BEACON_GENESIS_TIME);
274284
cheats.stopPrank();
275285
}
276286
}
277287

278288
function _upgradeMainnetContracts() public virtual {
279-
cheats.startPrank(address(executorMultisig));
289+
cheats.startPrank(address(protocolCouncil));
290+
291+
TimelockController tc = TimelockController(payable(timelockController));
292+
293+
uint executeTimestamp = tc.getTimestamp(tc.hashOperation(executorMultisig, 0, calldataToExecutor_MOOCOW, bytes32(0), bytes32(0))); // using MOOCOW as it's the last tx in the queue
294+
295+
console.log("executeTimestamp:", executeTimestamp);
296+
cheats.warp(executeTimestamp);
297+
298+
console.log(
299+
"is it ready?", tc.isOperationReady(tc.hashOperation(executorMultisig, 0, calldataToExecutor_MOOCOW, bytes32(0), bytes32(0)))
300+
);
301+
302+
console.log("trying first queued tx");
303+
// execute queued txs
304+
tc.execute({target: executorMultisig, value: 0, payload: calldataToExecutor_DISTRO, predecessor: bytes32(0), salt: bytes32(0)});
305+
306+
console.log("trying second queued tx");
307+
tc.execute({target: executorMultisig, value: 0, payload: calldataToExecutor_MOOCOW, predecessor: bytes32(0), salt: bytes32(0)});
280308

281-
// First, deploy the new contracts as empty contracts
282-
emptyContract = new EmptyContract();
283-
// Deploy new implementation contracts and upgrade all proxies to point to them
284-
_deployProxies(); // deploy proxies (if undeployed)
285-
_deployImplementations();
286-
_upgradeProxies();
287309
cheats.stopPrank();
288310
}
289311

@@ -375,6 +397,7 @@ abstract contract IntegrationDeployer is ExistingDeploymentParser {
375397

376398
// Pre-longtail StrategyBaseTVLLimits implementation
377399
// TODO - need to update ExistingDeploymentParser
400+
deployedStrategyArray;
378401

379402
// multichain
380403
keyRegistrarImplementation = new KeyRegistrar(permissionController, allocationManager, "9.9.9");

0 commit comments

Comments
 (0)