Skip to content

Commit bb24f93

Browse files
authored
remove the superchainProxyAdmin input from upgradeSuperchainConfig function (#17902)
* remove the superchainProxyAdmin input from upgradeSuperchainConfig function * pull and update * fix semver
1 parent 32b170b commit bb24f93

File tree

11 files changed

+31
-73
lines changed

11 files changed

+31
-73
lines changed

op-deployer/pkg/deployer/integration_test/apply_test.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -221,10 +221,9 @@ func TestEndToEndBootstrapApplyWithUpgrade(t *testing.T) {
221221
// of the contracts-bedrock folder so upgrading directly would revert.
222222
t.Run("upgrade superchain config", func(t *testing.T) {
223223
upgradeConfig := embedded.UpgradeSuperchainConfigInput{
224-
Prank: superchainProxyAdminOwner,
225-
Opcm: impls.Opcm,
226-
SuperchainConfig: superchain.SuperchainConfigAddr,
227-
SuperchainProxyAdmin: superchainProxyAdmin,
224+
Prank: superchainProxyAdminOwner,
225+
Opcm: impls.Opcm,
226+
SuperchainConfig: superchain.SuperchainConfigAddr,
228227
}
229228

230229
err = embedded.UpgradeSuperchainConfig(host, upgradeConfig)

op-deployer/pkg/deployer/upgrade/embedded/upgrade_superchainconfig.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@ import (
99
)
1010

1111
type UpgradeSuperchainConfigInput struct {
12-
Prank common.Address `json:"prank"`
13-
Opcm common.Address `json:"opcm"`
14-
SuperchainConfig common.Address `json:"superchainConfig"`
15-
SuperchainProxyAdmin common.Address `json:"superchainProxyAdmin"`
12+
Prank common.Address `json:"prank"`
13+
Opcm common.Address `json:"opcm"`
14+
SuperchainConfig common.Address `json:"superchainConfig"`
1615
}
1716

1817
type UpgradeSuperchainConfigScript script.DeployScriptWithoutOutput[UpgradeSuperchainConfigInput]

packages/contracts-bedrock/interfaces/L1/IOPContractsManager.sol

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ interface IOPContractsManagerUpgrader {
9494

9595
function upgrade(IOPContractsManager.OpChainConfig[] memory _opChainConfigs) external;
9696

97-
function upgradeSuperchainConfig(ISuperchainConfig _superchainConfig, IProxyAdmin _superchainProxyAdmin) external;
97+
function upgradeSuperchainConfig(ISuperchainConfig _superchainConfig) external;
9898

9999
function contractsContainer() external view returns (IOPContractsManagerContractsContainer);
100100
}
@@ -343,8 +343,7 @@ interface IOPContractsManager {
343343

344344
/// @notice Upgrades the SuperchainConfig contract.
345345
/// @param _superchainConfig The SuperchainConfig contract to upgrade.
346-
/// @param _superchainProxyAdmin The ProxyAdmin contract to use for the upgrade.
347-
function upgradeSuperchainConfig(ISuperchainConfig _superchainConfig, IProxyAdmin _superchainProxyAdmin) external;
346+
function upgradeSuperchainConfig(ISuperchainConfig _superchainConfig) external;
348347

349348
/// @notice addGameType deploys a new dispute game and links it to the DisputeGameFactory. The inputted _gameConfigs
350349
/// must be added in ascending GameType order.

packages/contracts-bedrock/scripts/deploy/UpgradeSuperchainConfig.s.sol

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,12 @@ pragma solidity ^0.8.0;
44
import { Script } from "forge-std/Script.sol";
55
import { IOPContractsManager } from "interfaces/L1/IOPContractsManager.sol";
66
import { ISuperchainConfig } from "interfaces/L1/ISuperchainConfig.sol";
7-
import { IProxyAdmin } from "interfaces/universal/IProxyAdmin.sol";
87

98
contract UpgradeSuperchainConfig is Script {
109
struct Input {
1110
address prank;
1211
IOPContractsManager opcm;
1312
ISuperchainConfig superchainConfig;
14-
IProxyAdmin superchainProxyAdmin;
1513
}
1614

1715
/// @notice Delegate calls upgradeSuperchainConfig on the OPCM from the input.prank address.
@@ -33,12 +31,11 @@ contract UpgradeSuperchainConfig is Script {
3331
vm.label(prank, "DummyCaller");
3432

3533
ISuperchainConfig superchainConfig = _input.superchainConfig;
36-
IProxyAdmin superchainProxyAdmin = _input.superchainProxyAdmin;
3734

3835
// Call into the DummyCaller to perform the delegatecall
3936
vm.broadcast(msg.sender);
4037

41-
(bool success,) = DummyCaller(prank).upgradeSuperchainConfig(superchainConfig, superchainProxyAdmin);
38+
(bool success,) = DummyCaller(prank).upgradeSuperchainConfig(superchainConfig);
4239
require(success, "UpgradeSuperchainConfig: upgradeSuperchainConfig failed");
4340
}
4441

@@ -47,9 +44,6 @@ contract UpgradeSuperchainConfig is Script {
4744
require(_input.prank != address(0), "UpgradeSuperchainConfig: prank not set");
4845
require(address(_input.opcm) != address(0), "UpgradeSuperchainConfig: opcm not set");
4946
require(address(_input.superchainConfig) != address(0), "UpgradeSuperchainConfig: superchainConfig not set");
50-
require(
51-
address(_input.superchainProxyAdmin) != address(0), "UpgradeSuperchainConfig: superchainProxyAdmin not set"
52-
);
5347
}
5448
}
5549

@@ -58,15 +52,8 @@ contract UpgradeSuperchainConfig is Script {
5852
contract DummyCaller {
5953
address internal _opcmAddr;
6054

61-
function upgradeSuperchainConfig(
62-
ISuperchainConfig _superchainConfig,
63-
IProxyAdmin _superchainProxyAdmin
64-
)
65-
external
66-
returns (bool, bytes memory)
67-
{
68-
bytes memory data =
69-
abi.encodeCall(IOPContractsManager.upgradeSuperchainConfig, (_superchainConfig, _superchainProxyAdmin));
55+
function upgradeSuperchainConfig(ISuperchainConfig _superchainConfig) external returns (bool, bytes memory) {
56+
bytes memory data = abi.encodeCall(IOPContractsManager.upgradeSuperchainConfig, (_superchainConfig));
7057
(bool success, bytes memory result) = _opcmAddr.delegatecall(data);
7158
return (success, result);
7259
}

packages/contracts-bedrock/snapshots/abi/OPContractsManager.json

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -817,11 +817,6 @@
817817
"internalType": "contract ISuperchainConfig",
818818
"name": "_superchainConfig",
819819
"type": "address"
820-
},
821-
{
822-
"internalType": "contract IProxyAdmin",
823-
"name": "_superchainProxyAdmin",
824-
"type": "address"
825820
}
826821
],
827822
"name": "upgradeSuperchainConfig",

packages/contracts-bedrock/snapshots/abi/OPContractsManagerUpgrader.json

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -298,11 +298,6 @@
298298
"internalType": "contract ISuperchainConfig",
299299
"name": "_superchainConfig",
300300
"type": "address"
301-
},
302-
{
303-
"internalType": "contract IProxyAdmin",
304-
"name": "_superchainProxyAdmin",
305-
"type": "address"
306301
}
307302
],
308303
"name": "upgradeSuperchainConfig",

packages/contracts-bedrock/snapshots/semver-lock.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
"sourceCodeHash": "0xfca613b5d055ffc4c3cbccb0773ddb9030abedc1aa6508c9e2e7727cc0cd617b"
2121
},
2222
"src/L1/OPContractsManager.sol:OPContractsManager": {
23-
"initCodeHash": "0xc6a5146f158bc14297447cda1668f83e8dbfdd74f1b8bc2291d9626933bd23ad",
24-
"sourceCodeHash": "0xd883ebfcc637ba9c6de12a872015098614cd288aaee84cda9d4c746aa1dcba18"
23+
"initCodeHash": "0x0ef3fcb6fee1f73c95a48269bba8c83ee463a6f116f36f8d88edb247f72e8a05",
24+
"sourceCodeHash": "0x16a845ddb5ee469e81f3d817ee9f6d6ff5697ace0bc399bd1e0f26e05546f781"
2525
},
2626
"src/L1/OPContractsManagerStandardValidator.sol:OPContractsManagerStandardValidator": {
2727
"initCodeHash": "0x2eaa345ba05582c67b40a1eb7ec9d54823aa08468e697e2d6c04bb74cc574abc",

packages/contracts-bedrock/src/L1/OPContractsManager.sol

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,10 +1003,9 @@ contract OPContractsManagerUpgrader is OPContractsManagerBase {
10031003

10041004
/// @notice Upgrades the SuperchainConfig contract.
10051005
/// @param _superchainConfig The SuperchainConfig contract to upgrade.
1006-
/// @param _superchainProxyAdmin The ProxyAdmin contract to use for the upgrade.
10071006
/// @dev This function is intended to be DELEGATECALLed by the superchainConfig's ProxyAdminOwner.
10081007
/// @dev This function will revert if the SuperchainConfig is already at or above the target version.
1009-
function upgradeSuperchainConfig(ISuperchainConfig _superchainConfig, IProxyAdmin _superchainProxyAdmin) external {
1008+
function upgradeSuperchainConfig(ISuperchainConfig _superchainConfig) external {
10101009
// Only upgrade the superchainConfig if the current version is less than the target version.
10111010
if (
10121011
SemverComp.gte(
@@ -1018,6 +1017,8 @@ contract OPContractsManagerUpgrader is OPContractsManagerBase {
10181017

10191018
// Grab the implementations.
10201019
OPContractsManager.Implementations memory impls = getImplementations();
1020+
// Grab the superchainConfig's proxyAdmin.
1021+
IProxyAdmin _superchainProxyAdmin = IProxyAdmin(_superchainConfig.proxyAdmin());
10211022

10221023
// Attempt to upgrade. If the ProxyAdmin is not the SuperchainConfig's admin, this will revert.
10231024
upgradeTo(_superchainProxyAdmin, address(_superchainConfig), impls.superchainConfigImpl);
@@ -2088,9 +2089,9 @@ contract OPContractsManager is ISemver {
20882089

20892090
// -------- Constants and Variables --------
20902091

2091-
/// @custom:semver 4.3.0
2092+
/// @custom:semver 4.4.0
20922093
function version() public pure virtual returns (string memory) {
2093-
return "4.3.0";
2094+
return "4.4.0";
20942095
}
20952096

20962097
OPContractsManagerGameTypeAdder public immutable opcmGameTypeAdder;
@@ -2232,15 +2233,12 @@ contract OPContractsManager is ISemver {
22322233

22332234
/// @notice Upgrades the SuperchainConfig contract.
22342235
/// @param _superchainConfig The SuperchainConfig contract to upgrade.
2235-
/// @param _superchainProxyAdmin The ProxyAdmin contract to use for the upgrade.
22362236
/// @dev This function is intended to be DELEGATECALLed by the superchainConfig's ProxyAdminOwner.
22372237
/// @dev This function will revert if the SuperchainConfig is already at or above the target version.
2238-
function upgradeSuperchainConfig(ISuperchainConfig _superchainConfig, IProxyAdmin _superchainProxyAdmin) external {
2238+
function upgradeSuperchainConfig(ISuperchainConfig _superchainConfig) external {
22392239
if (address(this) == address(thisOPCM)) revert OnlyDelegatecall();
22402240

2241-
bytes memory data = abi.encodeCall(
2242-
OPContractsManagerUpgrader.upgradeSuperchainConfig, (_superchainConfig, _superchainProxyAdmin)
2243-
);
2241+
bytes memory data = abi.encodeCall(OPContractsManagerUpgrader.upgradeSuperchainConfig, (_superchainConfig));
22442242
_performDelegateCall(address(opcmUpgrader), data);
22452243
}
22462244

packages/contracts-bedrock/test/L1/OPContractsManager.t.sol

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,7 @@ contract OPContractsManager_Upgrade_Harness is CommonTest {
206206
// Execute the SuperchainConfig upgrade.
207207
// nosemgrep: sol-safety-trycatch-eip150
208208
try DelegateCaller(superchainPAO).dcForward(
209-
address(_opcm),
210-
abi.encodeCall(IOPContractsManager.upgradeSuperchainConfig, (superchainConfig, superchainProxyAdmin))
209+
address(_opcm), abi.encodeCall(IOPContractsManager.upgradeSuperchainConfig, (superchainConfig))
211210
) {
212211
// Great, the upgrade succeeded.
213212
} catch (bytes memory reason) {
@@ -1535,8 +1534,7 @@ contract OPContractsManager_UpgradeSuperchainConfig_Test is OPContractsManager_U
15351534
vm.expectEmit(address(superchainConfig));
15361535
emit Upgraded(impls.superchainConfigImpl);
15371536
DelegateCaller(superchainPAO).dcForward(
1538-
address(opcm),
1539-
abi.encodeCall(IOPContractsManager.upgradeSuperchainConfig, (superchainConfig, superchainProxyAdmin))
1537+
address(opcm), abi.encodeCall(IOPContractsManager.upgradeSuperchainConfig, (superchainConfig))
15401538
);
15411539
}
15421540

@@ -1545,7 +1543,7 @@ contract OPContractsManager_UpgradeSuperchainConfig_Test is OPContractsManager_U
15451543
ISuperchainConfig superchainConfig = ISuperchainConfig(artifacts.mustGetAddress("SuperchainConfigProxy"));
15461544

15471545
vm.expectRevert(IOPContractsManager.OnlyDelegatecall.selector);
1548-
opcm.upgradeSuperchainConfig(superchainConfig, superchainProxyAdmin);
1546+
opcm.upgradeSuperchainConfig(superchainConfig);
15491547
}
15501548

15511549
/// @notice Tests that the upgradeSuperchainConfig function reverts when the delegate caller is not the
@@ -1561,8 +1559,7 @@ contract OPContractsManager_UpgradeSuperchainConfig_Test is OPContractsManager_U
15611559

15621560
vm.expectRevert("Ownable: caller is not the owner");
15631561
DelegateCaller(delegateCaller).dcForward(
1564-
address(opcm),
1565-
abi.encodeCall(IOPContractsManager.upgradeSuperchainConfig, (superchainConfig, superchainProxyAdmin))
1562+
address(opcm), abi.encodeCall(IOPContractsManager.upgradeSuperchainConfig, (superchainConfig))
15661563
);
15671564
}
15681565

@@ -1580,8 +1577,7 @@ contract OPContractsManager_UpgradeSuperchainConfig_Test is OPContractsManager_U
15801577
// Try to upgrade the SuperchainConfig contract again, should fail.
15811578
vm.expectRevert(IOPContractsManagerUpgrader.OPContractsManagerUpgrader_SuperchainConfigAlreadyUpToDate.selector);
15821579
DelegateCaller(upgrader).dcForward(
1583-
address(opcm),
1584-
abi.encodeCall(IOPContractsManager.upgradeSuperchainConfig, (superchainConfig, superchainProxyAdmin))
1580+
address(opcm), abi.encodeCall(IOPContractsManager.upgradeSuperchainConfig, (superchainConfig))
15851581
);
15861582
}
15871583
}

packages/contracts-bedrock/test/opcm/UpgradeSuperchainConfig.t.sol

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,17 @@ pragma solidity 0.8.15;
44
import { Test } from "forge-std/Test.sol";
55

66
import { ISuperchainConfig } from "interfaces/L1/ISuperchainConfig.sol";
7-
import { IProxyAdmin } from "interfaces/universal/IProxyAdmin.sol";
87

98
import { UpgradeSuperchainConfig } from "scripts/deploy/UpgradeSuperchainConfig.s.sol";
109
import { IOPContractsManager } from "interfaces/L1/IOPContractsManager.sol";
1110

1211
/// @title MockOPCM
1312
/// @notice This contract is used to mock the OPCM contract and emit an event which we check for in the test.
1413
contract MockOPCM {
15-
event UpgradeCalled(address indexed superchainConfig, address indexed superchainProxyAdmin);
14+
event UpgradeCalled(address indexed superchainConfig);
1615

17-
function upgradeSuperchainConfig(ISuperchainConfig _superchainConfig, IProxyAdmin _superchainProxyAdmin) public {
18-
emit UpgradeCalled(address(_superchainConfig), address(_superchainProxyAdmin));
16+
function upgradeSuperchainConfig(ISuperchainConfig _superchainConfig) public {
17+
emit UpgradeCalled(address(_superchainConfig));
1918
}
2019
}
2120

@@ -27,9 +26,8 @@ contract UpgradeSuperchainConfig_Run_Test is Test {
2726
UpgradeSuperchainConfig upgradeSuperchainConfig;
2827
address prank;
2928
ISuperchainConfig superchainConfig;
30-
IProxyAdmin superchainProxyAdmin;
3129

32-
event UpgradeCalled(address indexed superchainConfig, address indexed superchainProxyAdmin);
30+
event UpgradeCalled(address indexed superchainConfig);
3331

3432
/// @notice Sets up the test suite.
3533
function setUp() public virtual {
@@ -38,11 +36,9 @@ contract UpgradeSuperchainConfig_Run_Test is Test {
3836
input.opcm = IOPContractsManager(address(mockOPCM));
3937

4038
superchainConfig = ISuperchainConfig(makeAddr("superchainConfig"));
41-
superchainProxyAdmin = IProxyAdmin(makeAddr("superchainProxyAdmin"));
4239
prank = makeAddr("prank");
4340

4441
input.superchainConfig = superchainConfig;
45-
input.superchainProxyAdmin = superchainProxyAdmin;
4642
input.prank = prank;
4743

4844
upgradeSuperchainConfig = new UpgradeSuperchainConfig();
@@ -52,7 +48,7 @@ contract UpgradeSuperchainConfig_Run_Test is Test {
5248
function test_upgrade_succeeds() public {
5349
// UpgradeCalled should be emitted by the prank since it's a delegate call.
5450
vm.expectEmit(address(prank));
55-
emit UpgradeCalled(address(superchainConfig), address(superchainProxyAdmin));
51+
emit UpgradeCalled(address(superchainConfig));
5652
upgradeSuperchainConfig.run(input);
5753
}
5854

@@ -72,10 +68,5 @@ contract UpgradeSuperchainConfig_Run_Test is Test {
7268
vm.expectRevert("UpgradeSuperchainConfig: superchainConfig not set");
7369
upgradeSuperchainConfig.run(input);
7470
input.superchainConfig = ISuperchainConfig(address(superchainConfig));
75-
76-
input.superchainProxyAdmin = IProxyAdmin(address(0));
77-
vm.expectRevert("UpgradeSuperchainConfig: superchainProxyAdmin not set");
78-
upgradeSuperchainConfig.run(input);
79-
input.superchainProxyAdmin = IProxyAdmin(address(superchainProxyAdmin));
8071
}
8172
}

0 commit comments

Comments
 (0)