Skip to content

Commit 1263c4e

Browse files
cruzdanilopatitonar
andcommitted
🔨 contracts: setup new deployer address
co-authored-by: Gerardo Nardelli <patitonardelli@gmail.com>
1 parent 5bf0af0 commit 1263c4e

5 files changed

Lines changed: 64 additions & 55 deletions

File tree

‎contracts/.gas-snapshot‎

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
ExaAccountFactoryTest:testFuzz_createAccount_EOAOwners(uint256,address[63]) (runs: 256, μ: 5888117, ~: 5393451)
1+
ExaAccountFactoryTest:testFuzz_createAccount_EOAOwners(uint256,address[63]) (runs: 256, μ: 5861692, ~: 5360703)
22
ExaAccountFactoryTest:test_deploy_deploysToSameAddress() (gas: 15501257)
3-
ExaPluginTest:testFork_claimAndVestEscrowedEXA_claimsAndVests() (gas: 38980399)
4-
ExaPluginTest:testFork_collectCollateral_collects() (gas: 32196281)
5-
ExaPluginTest:testFork_crossRepay_repays() (gas: 34018435)
6-
ExaPluginTest:testFork_repay_whenFlashLoanerHasFees() (gas: 25604908)
7-
ExaPluginTest:testFork_stakeEXA_stakes() (gas: 33046103)
8-
ExaPluginTest:testFork_swap_swaps() (gas: 28132102)
3+
ExaPluginTest:testFork_claimAndVestEscrowedEXA_claimsAndVests() (gas: 38991407)
4+
ExaPluginTest:testFork_collectCollateral_collects() (gas: 32206505)
5+
ExaPluginTest:testFork_crossRepay_repays() (gas: 34028659)
6+
ExaPluginTest:testFork_repay_whenFlashLoanerHasFees() (gas: 25609109)
7+
ExaPluginTest:testFork_stakeEXA_stakes() (gas: 33056706)
8+
ExaPluginTest:testFork_swap_swaps() (gas: 28141397)
99
ExaPluginTest:test_allowPlugin_emitsPluginAllowed() (gas: 58464)
1010
ExaPluginTest:test_allowPlugin_reverts_whenAddressZero() (gas: 32411)
1111
ExaPluginTest:test_allowPlugin_reverts_whenNotAdmin() (gas: 40964)
@@ -32,12 +32,12 @@ ExaPluginTest:test_collectCredit_collects_whenHealthFactorHigherThanOne() (gas:
3232
ExaPluginTest:test_collectCredit_collects_whenProposalCausesInsufficientLiquidity() (gas: 1064907)
3333
ExaPluginTest:test_collectCredit_collects_whenProposalLeavesHealthFactorLowerThanOne() (gas: 1055304)
3434
ExaPluginTest:test_collectCredit_collects_withEnoughSlippage() (gas: 782171)
35-
ExaPluginTest:test_collectCredit_collects_withPrevIssuerSignature() (gas: 987650)
35+
ExaPluginTest:test_collectCredit_collects_withPrevIssuerSignature() (gas: 987863)
3636
ExaPluginTest:test_collectCredit_passes_whenProposalLeavesEnoughLiquidity() (gas: 1082504)
3737
ExaPluginTest:test_collectCredit_reverts_asNotKeeper() (gas: 342073)
3838
ExaPluginTest:test_collectCredit_reverts_whenDisagreement() (gas: 538742)
3939
ExaPluginTest:test_collectCredit_reverts_whenExpired() (gas: 352692)
40-
ExaPluginTest:test_collectCredit_reverts_whenPrevSignatureNotValidAnymore() (gas: 484563)
40+
ExaPluginTest:test_collectCredit_reverts_whenPrevSignatureNotValidAnymore() (gas: 484776)
4141
ExaPluginTest:test_collectCredit_reverts_whenReplay() (gas: 825752)
4242
ExaPluginTest:test_collectCredit_reverts_whenTimelocked() (gas: 334493)
4343
ExaPluginTest:test_collectCredit_toleratesTimeDrift() (gas: 798771)
@@ -58,7 +58,7 @@ ExaPluginTest:test_collectInstallments_reverts_whenTimelocked() (gas: 336628)
5858
ExaPluginTest:test_collectInstallments_toleratesTimeDrift() (gas: 1161512)
5959
ExaPluginTest:test_collect_collects_whenProposalsLeaveNoLiquidity() (gas: 1783561)
6060
ExaPluginTest:test_collect_collects_whenTooMuchProposedDebt() (gas: 1923760)
61-
ExaPluginTest:test_crossRepay_avoidsFrozenDeposit() (gas: 981727)
61+
ExaPluginTest:test_crossRepay_avoidsFrozenDeposit() (gas: 981939)
6262
ExaPluginTest:test_crossRepay_avoidsZeroSharesDeposit() (gas: 1392740)
6363
ExaPluginTest:test_crossRepay_consumesProposal() (gas: 2204191)
6464
ExaPluginTest:test_crossRepay_repays() (gas: 2267981)
@@ -202,22 +202,22 @@ ExaPreviewerTest:test_collect_reverts_whenProposalsLeaveNoLiquidity() (gas: 1437
202202
ExaPreviewerTest:test_markets_returnsMarkets() (gas: 150447)
203203
ExaPreviewerTest:test_pendingProposals_returnsPendingProposals() (gas: 1983943)
204204
ExaPreviewerTest:test_utilizations_returns() (gas: 134922)
205-
HypEXATest:test_deployRouter_enrollsBase_whenNoRemotesOnOptimism() (gas: 30706283)
206-
HypEXATest:test_deployRouter_enrollsOptimism_whenNoRemotesOnBase() (gas: 30811917)
207-
HypEXATest:test_deployRouter_reverts_whenNoRemotesOnUnsupportedChain() (gas: 20627783)
208-
HypEXATest:test_deployRouter_setsHookAndIsm() (gas: 270936)
205+
HypEXATest:test_deployRouter_enrollsBase_whenNoRemotesOnOptimism() (gas: 30768019)
206+
HypEXATest:test_deployRouter_enrollsOptimism_whenNoRemotesOnBase() (gas: 30874426)
207+
HypEXATest:test_deployRouter_reverts_whenNoRemotesOnUnsupportedChain() (gas: 20663714)
208+
HypEXATest:test_deployRouter_setsHookAndIsm() (gas: 272092)
209209
HypEXATest:test_handle_reverts_withoutBridgeRole() (gas: 578581)
210210
HypEXATest:test_hookAndIsm_trackMailboxDefaults_withoutRedeploy() (gas: 154299)
211-
HypEXATest:test_pause_pausesHookAndIsmViaPauser() (gas: 144877)
211+
HypEXATest:test_pause_pausesHookAndIsmViaPauser() (gas: 145089)
212212
HypEXATest:test_process_reverts_whenIsmPaused() (gas: 712859)
213-
HypEXATest:test_proposeBridgeRole_reverts_whenAlreadyGranted() (gas: 273918)
214-
HypEXATest:test_proposeBridgeRole_reverts_whenRouterNotDeployed() (gas: 20387421)
215-
HypEXATest:test_proposeBridgeRole_schedulesGrantOnTimelock() (gas: 2303697)
216-
HypEXATest:test_rotateRouterPausable_restoresProcessAfterPauserIsmPaused() (gas: 22139948)
217-
HypEXATest:test_rotateRouterPausable_restoresTransferRemoteAfterPauserHookPaused() (gas: 2126569)
213+
HypEXATest:test_proposeBridgeRole_reverts_whenAlreadyGranted() (gas: 275205)
214+
HypEXATest:test_proposeBridgeRole_reverts_whenRouterNotDeployed() (gas: 20423566)
215+
HypEXATest:test_proposeBridgeRole_schedulesGrantOnTimelock() (gas: 2306945)
216+
HypEXATest:test_rotateRouterPausable_restoresProcessAfterPauserIsmPaused() (gas: 22179901)
217+
HypEXATest:test_rotateRouterPausable_restoresTransferRemoteAfterPauserHookPaused() (gas: 2131395)
218218
HypEXATest:test_roundTrip_opToBaseToOp() (gas: 1312360)
219219
HypEXATest:test_roundTrip_opToPolygonToBaseToOp() (gas: 1960009)
220-
HypEXATest:test_transferRemote_reverts_whenHookPaused() (gas: 1106969)
220+
HypEXATest:test_transferRemote_reverts_whenHookPaused() (gas: 1108255)
221221
HypEXATest:test_transferRemote_reverts_withoutBridgeRole() (gas: 754963)
222222
IssuerCheckerTest:test_setIssuer_emits_IssuerSet() (gas: 82935)
223223
IssuerCheckerTest:test_setIssuer_reverts_whenNotAdmin() (gas: 43708)
@@ -229,24 +229,24 @@ IssuerCheckerTest:test_setPrevIssuerWindow_emits_PrevIssuerWindowSet() (gas: 526
229229
IssuerCheckerTest:test_setPrevIssuerWindow_reverts_whenNotAdmin() (gas: 45548)
230230
MockSwapperTest:test_swapExactAmountIn_swaps() (gas: 269414)
231231
MockSwapperTest:test_swapExactAmountOut_swaps() (gas: 269410)
232-
RedeployerTest:test_deployEXA_allowsProxyAdminV4Upgrade_onBase() (gas: 26863755)
233-
RedeployerTest:test_deployEXA_deploysAtSameAddress_onBase() (gas: 56738230)
234-
RedeployerTest:test_deployEXA_migratesProxyAdmin_onBase() (gas: 24115062)
235-
RedeployerTest:test_deployEXA_preservesERC20_onBase() (gas: 24089790)
236-
RedeployerTest:test_deployEXA_revokesOldProxyAdmin_onBase() (gas: 25716596)
237-
RedeployerTest:test_deployExaFactoryWithProxy_reverts_whenNotPrepared() (gas: 16339201)
238-
RedeployerTest:test_deployExaFactoryWithProxy_succeeds_whenAlreadyUpgraded() (gas: 31625336)
239-
RedeployerTest:test_deployExaFactory_deploysAtSameAddress_onEthereum() (gas: 260785642)
240-
RedeployerTest:test_deployExaFactory_deploysAtSameAddress_onPolygon() (gas: 356377284)
241-
RedeployerTest:test_deployExaFactory_deploysViaCreate3AtSameAddress_onPolygon() (gas: 34816837)
242-
RedeployerTest:test_deployExaFactory_reverts_whenNotPrepared() (gas: 16364144)
243-
RedeployerTest:test_deployExaFactory_succeeds_whenVersionAlreadyDeployed() (gas: 32173472)
244-
RedeployerTest:test_prepare_reusesExistingDeps_onBase() (gas: 19880501)
245-
RedeployerTest:test_prepare_reverts_whenAdminIsDeployer() (gas: 16369486)
246-
RedeployerTest:test_prepare_succeeds_whenCalledTwice() (gas: 31117178)
247-
RedeployerTest:test_recoversNativeETHOnPolygon() (gas: 34988681)
248-
RedeployerTest:test_serialProxies_reverts_whenAttackerUpgradesProxy() (gas: 40085030)
249-
RedeployerTest:test_serialProxies_reverts_whenTargetNonceTooLow() (gas: 44565432)
232+
RedeployerTest:test_deployEXA_allowsProxyAdminV4Upgrade_onBase() (gas: 27523407)
233+
RedeployerTest:test_deployEXA_deploysAtSameAddress_onBase() (gas: 57396366)
234+
RedeployerTest:test_deployEXA_migratesProxyAdmin_onBase() (gas: 24774630)
235+
RedeployerTest:test_deployEXA_preservesERC20_onBase() (gas: 24749358)
236+
RedeployerTest:test_deployEXA_revokesOldProxyAdmin_onBase() (gas: 26376248)
237+
RedeployerTest:test_deployExaFactoryWithProxy_reverts_whenNotPrepared() (gas: 16538703)
238+
RedeployerTest:test_deployExaFactoryWithProxy_succeeds_whenAlreadyUpgraded() (gas: 31829057)
239+
RedeployerTest:test_deployExaFactory_deploysAtSameAddress_onEthereum() (gas: 260989714)
240+
RedeployerTest:test_deployExaFactory_deploysAtSameAddress_onPolygon() (gas: 356581568)
241+
RedeployerTest:test_deployExaFactory_deploysViaCreate3AtSameAddress_onPolygon() (gas: 35020186)
242+
RedeployerTest:test_deployExaFactory_reverts_whenNotPrepared() (gas: 16563859)
243+
RedeployerTest:test_deployExaFactory_succeeds_whenVersionAlreadyDeployed() (gas: 32377034)
244+
RedeployerTest:test_prepare_reusesExistingDeps_onBase() (gas: 20085218)
245+
RedeployerTest:test_prepare_reverts_whenAdminIsDeployer() (gas: 16569617)
246+
RedeployerTest:test_prepare_succeeds_whenCalledTwice() (gas: 31320932)
247+
RedeployerTest:test_recoversNativeETHOnPolygon() (gas: 35192114)
248+
RedeployerTest:test_serialProxies_reverts_whenAttackerUpgradesProxy() (gas: 60042487)
249+
RedeployerTest:test_serialProxies_reverts_whenTargetNonceTooLow() (gas: 44966347)
250250
RefunderTest:test_refund_refunds() (gas: 263288)
251251
RefunderTest:test_refund_reverts_whenExpired() (gas: 88359)
252252
RefunderTest:test_refund_reverts_whenNotKeeper() (gas: 68861)

‎contracts/deploy.json‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88
},
99
"deployer": {
1010
"31337": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
11+
"84532": "0xDb90CDB64CfF03f254e4015C4F705C3F3C834400",
12+
"11155420": "0xDb90CDB64CfF03f254e4015C4F705C3F3C834400",
13+
"default": "0xa48B91Ac2A2DdD690EC2Ad3185489E49af186fb7"
14+
},
15+
"redeployer": {
1116
"84532": "0xDb90CDB64CfF03f254e4015C4F705C3F3C834400",
1217
"11155420": "0xDb90CDB64CfF03f254e4015C4F705C3F3C834400",
1318
"default": "0xe61Bdef3FFF4C3CF7A07996DCB8802b5C85B665a"

‎contracts/script/Redeployer.s.sol‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ contract Redeployer is BaseScript {
6464
/// @notice Deploys all reusable contracts via CREATE3, skipping any already deployed.
6565
function prepare() external {
6666
address admin = acct("admin");
67-
if (admin == acct("deployer")) revert AdminIsDeployer();
67+
if (admin == acct("redeployer")) revert AdminIsDeployer();
6868
vm.startBroadcast(admin);
6969
if (address(dummy).code.length == 0) {
7070
dummy = Dummy(CREATE3_FACTORY.deploy(keccak256(abi.encode("Dummy")), vm.getCode("Redeployer.s.sol:Dummy")));
@@ -169,7 +169,7 @@ contract Redeployer is BaseScript {
169169
if (address(dummy).code.length == 0) revert DummyNotDeployed();
170170
if (address(proxyAdmin).code.length == 0) revert ProxyAdminNotDeployed();
171171

172-
address deployer = acct("deployer");
172+
address deployer = acct("redeployer");
173173

174174
start = vm.getNonce(deployer);
175175
if (targetNonce < start) revert TargetNonceTooLow();

‎contracts/test/HypEXA.t.sol‎

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ contract HypEXATest is ForkTest {
5757
Redeployer polygonRedeployer = new Redeployer();
5858
polygonRedeployer.setUp();
5959
if (address(polygonRedeployer.proxyAdmin()).code.length == 0) polygonRedeployer.prepare();
60-
polygonRedeployer.proxyThrough(polygonRedeployer.findNonce(acct("deployer"), address(exa), 1000) + 1);
60+
polygonRedeployer.proxyThrough(polygonRedeployer.findNonce(acct("redeployer"), address(exa), 1000) + 1);
6161
set("exactly", makeAddr("exactly")); // no exactly on polygon — test-only chain
6262
set("TimelockController", makeAddr("exactly"));
6363
set("pauser", makeAddr("pauser"));
@@ -79,7 +79,7 @@ contract HypEXATest is ForkTest {
7979
Redeployer baseRedeployer = new Redeployer();
8080
baseRedeployer.setUp();
8181
if (address(baseRedeployer.proxyAdmin()).code.length == 0) baseRedeployer.prepare();
82-
baseRedeployer.proxyThrough(baseRedeployer.findNonce(acct("deployer"), address(exa), 1000) + 1);
82+
baseRedeployer.proxyThrough(baseRedeployer.findNonce(acct("redeployer"), address(exa), 1000) + 1);
8383
baseRedeployer.deployEXA();
8484
uint32[] memory baseRemotes = new uint32[](2);
8585
baseRemotes[0] = uint32(getChain("optimism").chainId);
@@ -88,7 +88,7 @@ contract HypEXATest is ForkTest {
8888
vm.prank(protocol("TimelockController"));
8989
exa.grantRole(keccak256("BRIDGE_ROLE"), address(baseRouter));
9090

91-
opFork = vm.createSelectFork("optimism", 147_967_000);
91+
opFork = vm.createSelectFork("optimism", 153_448_100);
9292
opMailbox = acct("hyperlaneMailbox");
9393
opRedeployer = new Redeployer();
9494
opRedeployer.setUp();
@@ -234,16 +234,17 @@ contract HypEXATest is ForkTest {
234234
HypEXA hypEXA = new HypEXA();
235235

236236
vm.expectRevert(RouterNotDeployed.selector);
237-
hypEXA.proposeBridgeRole(keccak256("HypEXA.BRIDGE_ROLE"));
237+
hypEXA.proposeBridgeRole("HypEXA.BRIDGE_ROLE");
238238
}
239239

240240
function test_proposeBridgeRole_schedulesGrantOnTimelock() external {
241241
vm.selectFork(opFork);
242242
vm.prank(protocol("TimelockController"));
243243
exa.revokeRole(keccak256("BRIDGE_ROLE"), address(opRouter));
244244

245-
bytes32 salt = keccak256("HypEXA.BRIDGE_ROLE");
246-
opHypEXA.proposeBridgeRole(salt);
245+
string memory saltString = "HypEXA.BRIDGE_ROLE";
246+
bytes32 salt = keccak256(abi.encode(saltString));
247+
opHypEXA.proposeBridgeRole(saltString);
247248

248249
TimelockController timelock = TimelockController(payable(protocol("TimelockController")));
249250
bytes32 id = timelock.hashOperation(
@@ -259,7 +260,7 @@ contract HypEXATest is ForkTest {
259260
function test_proposeBridgeRole_reverts_whenAlreadyGranted() external {
260261
vm.selectFork(opFork);
261262
vm.expectRevert(AlreadyGranted.selector);
262-
opHypEXA.proposeBridgeRole(keccak256("HypEXA.BRIDGE_ROLE"));
263+
opHypEXA.proposeBridgeRole("HypEXA.BRIDGE_ROLE");
263264
}
264265

265266
function test_deployRouter_setsHookAndIsm() external {

‎contracts/test/Redeployer.t.sol‎

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ contract RedeployerTest is ForkTest {
3232

3333
redeployer = new Redeployer();
3434

35-
address deployer = acct("deployer");
35+
address deployer = acct("redeployer");
3636
address exaOP = protocol("EXA", true, 10);
3737
uint256 targetNonce = redeployer.findNonce(deployer, exaOP, 1_000_000);
3838
uint256 currentNonce = vm.getNonce(deployer);
@@ -55,13 +55,16 @@ contract RedeployerTest is ForkTest {
5555
function test_serialProxies_reverts_whenAttackerUpgradesProxy() external {
5656
vm.createSelectFork("base", 41_053_217);
5757

58-
address deployer = acct("deployer");
59-
uint256 target = vm.getNonce(deployer) + 10;
6058
redeployer = new Redeployer();
59+
60+
address deployer = acct("redeployer");
61+
address exaOP = protocol("EXA", true, 10);
62+
uint256 target = redeployer.findNonce(deployer, exaOP, 1_000_000);
63+
6164
redeployer.prepare();
6265
redeployer.proxyThrough(target);
6366

64-
address proxy = vm.computeCreateAddress(deployer, target - 1);
67+
address proxy = vm.computeCreateAddress(deployer, target);
6568
assertTrue(proxy.code.length > 0, "proxy not deployed");
6669

6770
ProxyAdmin proxyAdmin = redeployer.proxyAdmin();
@@ -139,7 +142,7 @@ contract RedeployerTest is ForkTest {
139142

140143
redeployer = new Redeployer();
141144

142-
address deployer = acct("deployer");
145+
address deployer = acct("redeployer");
143146
uint256 targetNonce = redeployer.findNonce(deployer, factoryOP, 1_000_000);
144147
uint256 currentNonce = vm.getNonce(deployer);
145148
assertGt(targetNonce, currentNonce, "target nonce <= current nonce");
@@ -186,7 +189,7 @@ contract RedeployerTest is ForkTest {
186189

187190
redeployer = new Redeployer();
188191

189-
address deployer = acct("deployer");
192+
address deployer = acct("redeployer");
190193
uint256 targetNonce = redeployer.findNonce(deployer, factoryOP, 1_000_000);
191194
uint256 currentNonce = vm.getNonce(deployer);
192195
assertGt(targetNonce, currentNonce, "target nonce <= current nonce");
@@ -240,7 +243,7 @@ contract RedeployerTest is ForkTest {
240243
vm.createSelectFork("polygon", 82_000_000);
241244
redeployer = new Redeployer();
242245
redeployer.prepare();
243-
address deployer = acct("deployer");
246+
address deployer = acct("redeployer");
244247
uint256 nonce = vm.getNonce(deployer);
245248
redeployer.proxyThrough(nonce);
246249
address proxy = vm.computeCreateAddress(deployer, nonce);

0 commit comments

Comments
 (0)