Commit 144a7750 authored by Matt Solomon's avatar Matt Solomon Committed by GitHub

test: fix test and variable naming conventions (#11845)

parent 84b1cde3
...@@ -239,11 +239,11 @@ contract DeployImplementations is Script { ...@@ -239,11 +239,11 @@ contract DeployImplementations is Script {
// -------- Core Deployment Methods -------- // -------- Core Deployment Methods --------
function run(string memory _infile) public { function run(string memory _infile) public {
(DeployImplementationsInput dsi, DeployImplementationsOutput dso) = etchIOContracts(); (DeployImplementationsInput dii, DeployImplementationsOutput dio) = etchIOContracts();
dsi.loadInputFile(_infile); dii.loadInputFile(_infile);
run(dsi, dso); run(dii, dio);
string memory outfile = ""; // This will be derived from input file name, e.g. `foo.in.toml` -> `foo.out.toml` string memory outfile = ""; // This will be derived from input file name, e.g. `foo.in.toml` -> `foo.out.toml`
dso.writeOutputFile(outfile); dio.writeOutputFile(outfile);
require(false, "DeployImplementations: run is not implemented"); require(false, "DeployImplementations: run is not implemented");
} }
...@@ -251,31 +251,31 @@ contract DeployImplementations is Script { ...@@ -251,31 +251,31 @@ contract DeployImplementations is Script {
public public
returns (DeployImplementationsOutput.Output memory) returns (DeployImplementationsOutput.Output memory)
{ {
(DeployImplementationsInput dsi, DeployImplementationsOutput dso) = etchIOContracts(); (DeployImplementationsInput dii, DeployImplementationsOutput dio) = etchIOContracts();
dsi.loadInput(_input); dii.loadInput(_input);
run(dsi, dso); run(dii, dio);
return dso.output(); return dio.output();
} }
function run(DeployImplementationsInput _dsi, DeployImplementationsOutput _dso) public { function run(DeployImplementationsInput _dii, DeployImplementationsOutput _dio) public {
require(_dsi.inputSet(), "DeployImplementations: input not set"); require(_dii.inputSet(), "DeployImplementations: input not set");
// Deploy the implementations. // Deploy the implementations.
deploySystemConfigImpl(_dsi, _dso); deploySystemConfigImpl(_dii, _dio);
deployL1CrossDomainMessengerImpl(_dsi, _dso); deployL1CrossDomainMessengerImpl(_dii, _dio);
deployL1ERC721BridgeImpl(_dsi, _dso); deployL1ERC721BridgeImpl(_dii, _dio);
deployL1StandardBridgeImpl(_dsi, _dso); deployL1StandardBridgeImpl(_dii, _dio);
deployOptimismMintableERC20FactoryImpl(_dsi, _dso); deployOptimismMintableERC20FactoryImpl(_dii, _dio);
deployOptimismPortalImpl(_dsi, _dso); deployOptimismPortalImpl(_dii, _dio);
deployDelayedWETHImpl(_dsi, _dso); deployDelayedWETHImpl(_dii, _dio);
deployPreimageOracleSingleton(_dsi, _dso); deployPreimageOracleSingleton(_dii, _dio);
deployMipsSingleton(_dsi, _dso); deployMipsSingleton(_dii, _dio);
deployDisputeGameFactoryImpl(_dsi, _dso); deployDisputeGameFactoryImpl(_dii, _dio);
// Deploy the OP Stack Manager with the new implementations set. // Deploy the OP Stack Manager with the new implementations set.
deployOPStackManager(_dsi, _dso); deployOPStackManager(_dii, _dio);
_dso.checkOutput(); _dio.checkOutput();
} }
// -------- Deployment Steps -------- // -------- Deployment Steps --------
...@@ -284,7 +284,7 @@ contract DeployImplementations is Script { ...@@ -284,7 +284,7 @@ contract DeployImplementations is Script {
function opsmSystemConfigSetter( function opsmSystemConfigSetter(
DeployImplementationsInput, DeployImplementationsInput,
DeployImplementationsOutput _dso DeployImplementationsOutput _dio
) )
internal internal
view view
...@@ -293,12 +293,12 @@ contract DeployImplementations is Script { ...@@ -293,12 +293,12 @@ contract DeployImplementations is Script {
{ {
return OPStackManager.ImplementationSetter({ return OPStackManager.ImplementationSetter({
name: "SystemConfig", name: "SystemConfig",
info: OPStackManager.Implementation(address(_dso.systemConfigImpl()), SystemConfig.initialize.selector) info: OPStackManager.Implementation(address(_dio.systemConfigImpl()), SystemConfig.initialize.selector)
}); });
} }
function createOPSMContract( function createOPSMContract(
DeployImplementationsInput _dsi, DeployImplementationsInput _dii,
DeployImplementationsOutput, DeployImplementationsOutput,
OPStackManager.Blueprints memory blueprints OPStackManager.Blueprints memory blueprints
) )
...@@ -306,8 +306,8 @@ contract DeployImplementations is Script { ...@@ -306,8 +306,8 @@ contract DeployImplementations is Script {
virtual virtual
returns (OPStackManager opsm_) returns (OPStackManager opsm_)
{ {
SuperchainConfig superchainConfigProxy = _dsi.superchainConfigProxy(); SuperchainConfig superchainConfigProxy = _dii.superchainConfigProxy();
ProtocolVersions protocolVersionsProxy = _dsi.protocolVersionsProxy(); ProtocolVersions protocolVersionsProxy = _dii.protocolVersionsProxy();
vm.broadcast(msg.sender); vm.broadcast(msg.sender);
opsm_ = new OPStackManager({ opsm_ = new OPStackManager({
...@@ -317,8 +317,8 @@ contract DeployImplementations is Script { ...@@ -317,8 +317,8 @@ contract DeployImplementations is Script {
}); });
} }
function deployOPStackManager(DeployImplementationsInput _dsi, DeployImplementationsOutput _dso) public virtual { function deployOPStackManager(DeployImplementationsInput _dii, DeployImplementationsOutput _dio) public virtual {
string memory release = _dsi.release(); string memory release = _dii.release();
// First we deploy the blueprints for the singletons deployed by OPSM. // First we deploy the blueprints for the singletons deployed by OPSM.
// forgefmt: disable-start // forgefmt: disable-start
...@@ -335,55 +335,55 @@ contract DeployImplementations is Script { ...@@ -335,55 +335,55 @@ contract DeployImplementations is Script {
// forgefmt: disable-end // forgefmt: disable-end
// This call contains a broadcast to deploy OPSM. // This call contains a broadcast to deploy OPSM.
OPStackManager opsm = createOPSMContract(_dsi, _dso, blueprints); OPStackManager opsm = createOPSMContract(_dii, _dio, blueprints);
OPStackManager.ImplementationSetter[] memory setters = new OPStackManager.ImplementationSetter[](6); OPStackManager.ImplementationSetter[] memory setters = new OPStackManager.ImplementationSetter[](6);
setters[0] = OPStackManager.ImplementationSetter({ setters[0] = OPStackManager.ImplementationSetter({
name: "L1ERC721Bridge", name: "L1ERC721Bridge",
info: OPStackManager.Implementation(address(_dso.l1ERC721BridgeImpl()), L1ERC721Bridge.initialize.selector) info: OPStackManager.Implementation(address(_dio.l1ERC721BridgeImpl()), L1ERC721Bridge.initialize.selector)
}); });
setters[1] = OPStackManager.ImplementationSetter({ setters[1] = OPStackManager.ImplementationSetter({
name: "OptimismPortal", name: "OptimismPortal",
info: OPStackManager.Implementation(address(_dso.optimismPortalImpl()), OptimismPortal2.initialize.selector) info: OPStackManager.Implementation(address(_dio.optimismPortalImpl()), OptimismPortal2.initialize.selector)
}); });
setters[2] = opsmSystemConfigSetter(_dsi, _dso); setters[2] = opsmSystemConfigSetter(_dii, _dio);
setters[3] = OPStackManager.ImplementationSetter({ setters[3] = OPStackManager.ImplementationSetter({
name: "OptimismMintableERC20Factory", name: "OptimismMintableERC20Factory",
info: OPStackManager.Implementation( info: OPStackManager.Implementation(
address(_dso.optimismMintableERC20FactoryImpl()), OptimismMintableERC20Factory.initialize.selector address(_dio.optimismMintableERC20FactoryImpl()), OptimismMintableERC20Factory.initialize.selector
) )
}); });
setters[4] = OPStackManager.ImplementationSetter({ setters[4] = OPStackManager.ImplementationSetter({
name: "L1CrossDomainMessenger", name: "L1CrossDomainMessenger",
info: OPStackManager.Implementation( info: OPStackManager.Implementation(
address(_dso.l1CrossDomainMessengerImpl()), L1CrossDomainMessenger.initialize.selector address(_dio.l1CrossDomainMessengerImpl()), L1CrossDomainMessenger.initialize.selector
) )
}); });
setters[5] = OPStackManager.ImplementationSetter({ setters[5] = OPStackManager.ImplementationSetter({
name: "L1StandardBridge", name: "L1StandardBridge",
info: OPStackManager.Implementation(address(_dso.l1StandardBridgeImpl()), L1StandardBridge.initialize.selector) info: OPStackManager.Implementation(address(_dio.l1StandardBridgeImpl()), L1StandardBridge.initialize.selector)
}); });
vm.broadcast(msg.sender); vm.broadcast(msg.sender);
opsm.setRelease({ _release: release, _isLatest: true, _setters: setters }); opsm.setRelease({ _release: release, _isLatest: true, _setters: setters });
vm.label(address(opsm), "OPStackManager"); vm.label(address(opsm), "OPStackManager");
_dso.set(_dso.opsm.selector, address(opsm)); _dio.set(_dio.opsm.selector, address(opsm));
} }
// --- Core Contracts --- // --- Core Contracts ---
function deploySystemConfigImpl(DeployImplementationsInput, DeployImplementationsOutput _dso) public virtual { function deploySystemConfigImpl(DeployImplementationsInput, DeployImplementationsOutput _dio) public virtual {
vm.broadcast(msg.sender); vm.broadcast(msg.sender);
SystemConfig systemConfigImpl = new SystemConfig(); SystemConfig systemConfigImpl = new SystemConfig();
vm.label(address(systemConfigImpl), "systemConfigImpl"); vm.label(address(systemConfigImpl), "systemConfigImpl");
_dso.set(_dso.systemConfigImpl.selector, address(systemConfigImpl)); _dio.set(_dio.systemConfigImpl.selector, address(systemConfigImpl));
} }
function deployL1CrossDomainMessengerImpl( function deployL1CrossDomainMessengerImpl(
DeployImplementationsInput, DeployImplementationsInput,
DeployImplementationsOutput _dso DeployImplementationsOutput _dio
) )
public public
virtual virtual
...@@ -392,28 +392,28 @@ contract DeployImplementations is Script { ...@@ -392,28 +392,28 @@ contract DeployImplementations is Script {
L1CrossDomainMessenger l1CrossDomainMessengerImpl = new L1CrossDomainMessenger(); L1CrossDomainMessenger l1CrossDomainMessengerImpl = new L1CrossDomainMessenger();
vm.label(address(l1CrossDomainMessengerImpl), "L1CrossDomainMessengerImpl"); vm.label(address(l1CrossDomainMessengerImpl), "L1CrossDomainMessengerImpl");
_dso.set(_dso.l1CrossDomainMessengerImpl.selector, address(l1CrossDomainMessengerImpl)); _dio.set(_dio.l1CrossDomainMessengerImpl.selector, address(l1CrossDomainMessengerImpl));
} }
function deployL1ERC721BridgeImpl(DeployImplementationsInput, DeployImplementationsOutput _dso) public virtual { function deployL1ERC721BridgeImpl(DeployImplementationsInput, DeployImplementationsOutput _dio) public virtual {
vm.broadcast(msg.sender); vm.broadcast(msg.sender);
L1ERC721Bridge l1ERC721BridgeImpl = new L1ERC721Bridge(); L1ERC721Bridge l1ERC721BridgeImpl = new L1ERC721Bridge();
vm.label(address(l1ERC721BridgeImpl), "L1ERC721BridgeImpl"); vm.label(address(l1ERC721BridgeImpl), "L1ERC721BridgeImpl");
_dso.set(_dso.l1ERC721BridgeImpl.selector, address(l1ERC721BridgeImpl)); _dio.set(_dio.l1ERC721BridgeImpl.selector, address(l1ERC721BridgeImpl));
} }
function deployL1StandardBridgeImpl(DeployImplementationsInput, DeployImplementationsOutput _dso) public virtual { function deployL1StandardBridgeImpl(DeployImplementationsInput, DeployImplementationsOutput _dio) public virtual {
vm.broadcast(msg.sender); vm.broadcast(msg.sender);
L1StandardBridge l1StandardBridgeImpl = new L1StandardBridge(); L1StandardBridge l1StandardBridgeImpl = new L1StandardBridge();
vm.label(address(l1StandardBridgeImpl), "L1StandardBridgeImpl"); vm.label(address(l1StandardBridgeImpl), "L1StandardBridgeImpl");
_dso.set(_dso.l1StandardBridgeImpl.selector, address(l1StandardBridgeImpl)); _dio.set(_dio.l1StandardBridgeImpl.selector, address(l1StandardBridgeImpl));
} }
function deployOptimismMintableERC20FactoryImpl( function deployOptimismMintableERC20FactoryImpl(
DeployImplementationsInput, DeployImplementationsInput,
DeployImplementationsOutput _dso DeployImplementationsOutput _dio
) )
public public
virtual virtual
...@@ -422,7 +422,7 @@ contract DeployImplementations is Script { ...@@ -422,7 +422,7 @@ contract DeployImplementations is Script {
OptimismMintableERC20Factory optimismMintableERC20FactoryImpl = new OptimismMintableERC20Factory(); OptimismMintableERC20Factory optimismMintableERC20FactoryImpl = new OptimismMintableERC20Factory();
vm.label(address(optimismMintableERC20FactoryImpl), "OptimismMintableERC20FactoryImpl"); vm.label(address(optimismMintableERC20FactoryImpl), "OptimismMintableERC20FactoryImpl");
_dso.set(_dso.optimismMintableERC20FactoryImpl.selector, address(optimismMintableERC20FactoryImpl)); _dio.set(_dio.optimismMintableERC20FactoryImpl.selector, address(optimismMintableERC20FactoryImpl));
} }
// --- Fault Proofs Contracts --- // --- Fault Proofs Contracts ---
...@@ -448,14 +448,14 @@ contract DeployImplementations is Script { ...@@ -448,14 +448,14 @@ contract DeployImplementations is Script {
// - MIPS (singleton) // - MIPS (singleton)
function deployOptimismPortalImpl( function deployOptimismPortalImpl(
DeployImplementationsInput _dsi, DeployImplementationsInput _dii,
DeployImplementationsOutput _dso DeployImplementationsOutput _dio
) )
public public
virtual virtual
{ {
uint256 proofMaturityDelaySeconds = _dsi.proofMaturityDelaySeconds(); uint256 proofMaturityDelaySeconds = _dii.proofMaturityDelaySeconds();
uint256 disputeGameFinalityDelaySeconds = _dsi.disputeGameFinalityDelaySeconds(); uint256 disputeGameFinalityDelaySeconds = _dii.disputeGameFinalityDelaySeconds();
vm.broadcast(msg.sender); vm.broadcast(msg.sender);
OptimismPortal2 optimismPortalImpl = new OptimismPortal2({ OptimismPortal2 optimismPortalImpl = new OptimismPortal2({
...@@ -464,50 +464,50 @@ contract DeployImplementations is Script { ...@@ -464,50 +464,50 @@ contract DeployImplementations is Script {
}); });
vm.label(address(optimismPortalImpl), "OptimismPortalImpl"); vm.label(address(optimismPortalImpl), "OptimismPortalImpl");
_dso.set(_dso.optimismPortalImpl.selector, address(optimismPortalImpl)); _dio.set(_dio.optimismPortalImpl.selector, address(optimismPortalImpl));
} }
function deployDelayedWETHImpl(DeployImplementationsInput _dsi, DeployImplementationsOutput _dso) public virtual { function deployDelayedWETHImpl(DeployImplementationsInput _dii, DeployImplementationsOutput _dio) public virtual {
uint256 withdrawalDelaySeconds = _dsi.withdrawalDelaySeconds(); uint256 withdrawalDelaySeconds = _dii.withdrawalDelaySeconds();
vm.broadcast(msg.sender); vm.broadcast(msg.sender);
DelayedWETH delayedWETHImpl = new DelayedWETH({ _delay: withdrawalDelaySeconds }); DelayedWETH delayedWETHImpl = new DelayedWETH({ _delay: withdrawalDelaySeconds });
vm.label(address(delayedWETHImpl), "DelayedWETHImpl"); vm.label(address(delayedWETHImpl), "DelayedWETHImpl");
_dso.set(_dso.delayedWETHImpl.selector, address(delayedWETHImpl)); _dio.set(_dio.delayedWETHImpl.selector, address(delayedWETHImpl));
} }
function deployPreimageOracleSingleton( function deployPreimageOracleSingleton(
DeployImplementationsInput _dsi, DeployImplementationsInput _dii,
DeployImplementationsOutput _dso DeployImplementationsOutput _dio
) )
public public
virtual virtual
{ {
uint256 minProposalSizeBytes = _dsi.minProposalSizeBytes(); uint256 minProposalSizeBytes = _dii.minProposalSizeBytes();
uint256 challengePeriodSeconds = _dsi.challengePeriodSeconds(); uint256 challengePeriodSeconds = _dii.challengePeriodSeconds();
vm.broadcast(msg.sender); vm.broadcast(msg.sender);
PreimageOracle preimageOracleSingleton = PreimageOracle preimageOracleSingleton =
new PreimageOracle({ _minProposalSize: minProposalSizeBytes, _challengePeriod: challengePeriodSeconds }); new PreimageOracle({ _minProposalSize: minProposalSizeBytes, _challengePeriod: challengePeriodSeconds });
vm.label(address(preimageOracleSingleton), "PreimageOracleSingleton"); vm.label(address(preimageOracleSingleton), "PreimageOracleSingleton");
_dso.set(_dso.preimageOracleSingleton.selector, address(preimageOracleSingleton)); _dio.set(_dio.preimageOracleSingleton.selector, address(preimageOracleSingleton));
} }
function deployMipsSingleton(DeployImplementationsInput, DeployImplementationsOutput _dso) public virtual { function deployMipsSingleton(DeployImplementationsInput, DeployImplementationsOutput _dio) public virtual {
IPreimageOracle preimageOracle = IPreimageOracle(_dso.preimageOracleSingleton()); IPreimageOracle preimageOracle = IPreimageOracle(_dio.preimageOracleSingleton());
vm.broadcast(msg.sender); vm.broadcast(msg.sender);
MIPS mipsSingleton = new MIPS(preimageOracle); MIPS mipsSingleton = new MIPS(preimageOracle);
vm.label(address(mipsSingleton), "MIPSSingleton"); vm.label(address(mipsSingleton), "MIPSSingleton");
_dso.set(_dso.mipsSingleton.selector, address(mipsSingleton)); _dio.set(_dio.mipsSingleton.selector, address(mipsSingleton));
} }
function deployDisputeGameFactoryImpl( function deployDisputeGameFactoryImpl(
DeployImplementationsInput, DeployImplementationsInput,
DeployImplementationsOutput _dso DeployImplementationsOutput _dio
) )
public public
virtual virtual
...@@ -516,20 +516,20 @@ contract DeployImplementations is Script { ...@@ -516,20 +516,20 @@ contract DeployImplementations is Script {
DisputeGameFactory disputeGameFactoryImpl = new DisputeGameFactory(); DisputeGameFactory disputeGameFactoryImpl = new DisputeGameFactory();
vm.label(address(disputeGameFactoryImpl), "DisputeGameFactoryImpl"); vm.label(address(disputeGameFactoryImpl), "DisputeGameFactoryImpl");
_dso.set(_dso.disputeGameFactoryImpl.selector, address(disputeGameFactoryImpl)); _dio.set(_dio.disputeGameFactoryImpl.selector, address(disputeGameFactoryImpl));
} }
// -------- Utilities -------- // -------- Utilities --------
function etchIOContracts() internal returns (DeployImplementationsInput dsi_, DeployImplementationsOutput dso_) { function etchIOContracts() internal returns (DeployImplementationsInput dii_, DeployImplementationsOutput dio_) {
(dsi_, dso_) = getIOContracts(); (dii_, dio_) = getIOContracts();
vm.etch(address(dsi_), type(DeployImplementationsInput).runtimeCode); vm.etch(address(dii_), type(DeployImplementationsInput).runtimeCode);
vm.etch(address(dso_), type(DeployImplementationsOutput).runtimeCode); vm.etch(address(dio_), type(DeployImplementationsOutput).runtimeCode);
} }
function getIOContracts() public view returns (DeployImplementationsInput dsi_, DeployImplementationsOutput dso_) { function getIOContracts() public view returns (DeployImplementationsInput dii_, DeployImplementationsOutput dio_) {
dsi_ = DeployImplementationsInput(DeployUtils.toIOAddress(msg.sender, "optimism.DeployImplementationsInput")); dii_ = DeployImplementationsInput(DeployUtils.toIOAddress(msg.sender, "optimism.DeployImplementationsInput"));
dso_ = DeployImplementationsOutput(DeployUtils.toIOAddress(msg.sender, "optimism.DeployImplementationsOutput")); dio_ = DeployImplementationsOutput(DeployUtils.toIOAddress(msg.sender, "optimism.DeployImplementationsOutput"));
} }
function deployBytecode(bytes memory _bytecode, bytes32 _salt) public returns (address newContract_) { function deployBytecode(bytes memory _bytecode, bytes32 _salt) public returns (address newContract_) {
...@@ -574,7 +574,7 @@ contract DeployImplementations is Script { ...@@ -574,7 +574,7 @@ contract DeployImplementations is Script {
// is the same as the proxy admin owner. // is the same as the proxy admin owner.
contract DeployImplementationsInterop is DeployImplementations { contract DeployImplementationsInterop is DeployImplementations {
function createOPSMContract( function createOPSMContract(
DeployImplementationsInput _dsi, DeployImplementationsInput _dii,
DeployImplementationsOutput, DeployImplementationsOutput,
OPStackManager.Blueprints memory blueprints OPStackManager.Blueprints memory blueprints
) )
...@@ -582,8 +582,8 @@ contract DeployImplementationsInterop is DeployImplementations { ...@@ -582,8 +582,8 @@ contract DeployImplementationsInterop is DeployImplementations {
override override
returns (OPStackManager opsm_) returns (OPStackManager opsm_)
{ {
SuperchainConfig superchainConfigProxy = _dsi.superchainConfigProxy(); SuperchainConfig superchainConfigProxy = _dii.superchainConfigProxy();
ProtocolVersions protocolVersionsProxy = _dsi.protocolVersionsProxy(); ProtocolVersions protocolVersionsProxy = _dii.protocolVersionsProxy();
vm.broadcast(msg.sender); vm.broadcast(msg.sender);
opsm_ = new OPStackManagerInterop({ opsm_ = new OPStackManagerInterop({
...@@ -594,14 +594,14 @@ contract DeployImplementationsInterop is DeployImplementations { ...@@ -594,14 +594,14 @@ contract DeployImplementationsInterop is DeployImplementations {
} }
function deployOptimismPortalImpl( function deployOptimismPortalImpl(
DeployImplementationsInput _dsi, DeployImplementationsInput _dii,
DeployImplementationsOutput _dso DeployImplementationsOutput _dio
) )
public public
override override
{ {
uint256 proofMaturityDelaySeconds = _dsi.proofMaturityDelaySeconds(); uint256 proofMaturityDelaySeconds = _dii.proofMaturityDelaySeconds();
uint256 disputeGameFinalityDelaySeconds = _dsi.disputeGameFinalityDelaySeconds(); uint256 disputeGameFinalityDelaySeconds = _dii.disputeGameFinalityDelaySeconds();
vm.broadcast(msg.sender); vm.broadcast(msg.sender);
OptimismPortalInterop optimismPortalImpl = new OptimismPortalInterop({ OptimismPortalInterop optimismPortalImpl = new OptimismPortalInterop({
...@@ -610,20 +610,20 @@ contract DeployImplementationsInterop is DeployImplementations { ...@@ -610,20 +610,20 @@ contract DeployImplementationsInterop is DeployImplementations {
}); });
vm.label(address(optimismPortalImpl), "OptimismPortalImpl"); vm.label(address(optimismPortalImpl), "OptimismPortalImpl");
_dso.set(_dso.optimismPortalImpl.selector, address(optimismPortalImpl)); _dio.set(_dio.optimismPortalImpl.selector, address(optimismPortalImpl));
} }
function deploySystemConfigImpl(DeployImplementationsInput, DeployImplementationsOutput _dso) public override { function deploySystemConfigImpl(DeployImplementationsInput, DeployImplementationsOutput _dio) public override {
vm.broadcast(msg.sender); vm.broadcast(msg.sender);
SystemConfigInterop systemConfigImpl = new SystemConfigInterop(); SystemConfigInterop systemConfigImpl = new SystemConfigInterop();
vm.label(address(systemConfigImpl), "systemConfigImpl"); vm.label(address(systemConfigImpl), "systemConfigImpl");
_dso.set(_dso.systemConfigImpl.selector, address(systemConfigImpl)); _dio.set(_dio.systemConfigImpl.selector, address(systemConfigImpl));
} }
function opsmSystemConfigSetter( function opsmSystemConfigSetter(
DeployImplementationsInput, DeployImplementationsInput,
DeployImplementationsOutput _dso DeployImplementationsOutput _dio
) )
internal internal
view view
...@@ -632,7 +632,7 @@ contract DeployImplementationsInterop is DeployImplementations { ...@@ -632,7 +632,7 @@ contract DeployImplementationsInterop is DeployImplementations {
{ {
return OPStackManager.ImplementationSetter({ return OPStackManager.ImplementationSetter({
name: "SystemConfig", name: "SystemConfig",
info: OPStackManager.Implementation(address(_dso.systemConfigImpl()), SystemConfigInterop.initialize.selector) info: OPStackManager.Implementation(address(_dio.systemConfigImpl()), SystemConfigInterop.initialize.selector)
}); });
} }
} }
...@@ -292,39 +292,39 @@ contract DeployOPChainOutput { ...@@ -292,39 +292,39 @@ contract DeployOPChainOutput {
contract DeployOPChain is Script { contract DeployOPChain is Script {
// -------- Core Deployment Methods -------- // -------- Core Deployment Methods --------
function run(string memory _infile) public { function run(string memory _infile) public {
(DeployOPChainInput dsi, DeployOPChainOutput dso) = etchIOContracts(); (DeployOPChainInput doi, DeployOPChainOutput doo) = etchIOContracts();
dsi.loadInputFile(_infile); doi.loadInputFile(_infile);
run(dsi, dso); run(doi, doo);
string memory outfile = ""; // This will be derived from input file name, e.g. `foo.in.toml` -> `foo.out.toml` string memory outfile = ""; // This will be derived from input file name, e.g. `foo.in.toml` -> `foo.out.toml`
dso.writeOutputFile(outfile); doo.writeOutputFile(outfile);
require(false, "DeployOPChain: run is not implemented"); require(false, "DeployOPChain: run is not implemented");
} }
function run(DeployOPChainInput.Input memory _input) public returns (DeployOPChainOutput.Output memory) { function run(DeployOPChainInput.Input memory _input) public returns (DeployOPChainOutput.Output memory) {
(DeployOPChainInput dsi, DeployOPChainOutput dso) = etchIOContracts(); (DeployOPChainInput doi, DeployOPChainOutput doo) = etchIOContracts();
dsi.loadInput(_input); doi.loadInput(_input);
run(dsi, dso); run(doi, doo);
return dso.output(); return doo.output();
} }
function run(DeployOPChainInput _dsi, DeployOPChainOutput _dso) public { function run(DeployOPChainInput _doi, DeployOPChainOutput _doo) public {
require(_dsi.inputSet(), "DeployOPChain: input not set"); require(_doi.inputSet(), "DeployOPChain: input not set");
OPStackManager opsm = _dsi.opsm(); OPStackManager opsm = _doi.opsm();
OPStackManager.Roles memory roles = OPStackManager.Roles({ OPStackManager.Roles memory roles = OPStackManager.Roles({
opChainProxyAdminOwner: _dsi.opChainProxyAdminOwner(), opChainProxyAdminOwner: _doi.opChainProxyAdminOwner(),
systemConfigOwner: _dsi.systemConfigOwner(), systemConfigOwner: _doi.systemConfigOwner(),
batcher: _dsi.batcher(), batcher: _doi.batcher(),
unsafeBlockSigner: _dsi.unsafeBlockSigner(), unsafeBlockSigner: _doi.unsafeBlockSigner(),
proposer: _dsi.proposer(), proposer: _doi.proposer(),
challenger: _dsi.challenger() challenger: _doi.challenger()
}); });
OPStackManager.DeployInput memory deployInput = OPStackManager.DeployInput({ OPStackManager.DeployInput memory deployInput = OPStackManager.DeployInput({
roles: roles, roles: roles,
basefeeScalar: _dsi.basefeeScalar(), basefeeScalar: _doi.basefeeScalar(),
blobBasefeeScalar: _dsi.blobBaseFeeScalar(), blobBasefeeScalar: _doi.blobBaseFeeScalar(),
l2ChainId: _dsi.l2ChainId() l2ChainId: _doi.l2ChainId()
}); });
vm.broadcast(msg.sender); vm.broadcast(msg.sender);
...@@ -347,40 +347,40 @@ contract DeployOPChain is Script { ...@@ -347,40 +347,40 @@ contract DeployOPChain is Script {
vm.label(address(deployOutput.delayedWETHPermissionedGameProxy), "delayedWETHPermissionedGameProxy"); vm.label(address(deployOutput.delayedWETHPermissionedGameProxy), "delayedWETHPermissionedGameProxy");
vm.label(address(deployOutput.delayedWETHPermissionlessGameProxy), "delayedWETHPermissionlessGameProxy"); vm.label(address(deployOutput.delayedWETHPermissionlessGameProxy), "delayedWETHPermissionlessGameProxy");
_dso.set(_dso.opChainProxyAdmin.selector, address(deployOutput.opChainProxyAdmin)); _doo.set(_doo.opChainProxyAdmin.selector, address(deployOutput.opChainProxyAdmin));
_dso.set(_dso.addressManager.selector, address(deployOutput.addressManager)); _doo.set(_doo.addressManager.selector, address(deployOutput.addressManager));
_dso.set(_dso.l1ERC721BridgeProxy.selector, address(deployOutput.l1ERC721BridgeProxy)); _doo.set(_doo.l1ERC721BridgeProxy.selector, address(deployOutput.l1ERC721BridgeProxy));
_dso.set(_dso.systemConfigProxy.selector, address(deployOutput.systemConfigProxy)); _doo.set(_doo.systemConfigProxy.selector, address(deployOutput.systemConfigProxy));
_dso.set( _doo.set(
_dso.optimismMintableERC20FactoryProxy.selector, address(deployOutput.optimismMintableERC20FactoryProxy) _doo.optimismMintableERC20FactoryProxy.selector, address(deployOutput.optimismMintableERC20FactoryProxy)
); );
_dso.set(_dso.l1StandardBridgeProxy.selector, address(deployOutput.l1StandardBridgeProxy)); _doo.set(_doo.l1StandardBridgeProxy.selector, address(deployOutput.l1StandardBridgeProxy));
_dso.set(_dso.l1CrossDomainMessengerProxy.selector, address(deployOutput.l1CrossDomainMessengerProxy)); _doo.set(_doo.l1CrossDomainMessengerProxy.selector, address(deployOutput.l1CrossDomainMessengerProxy));
_dso.set(_dso.optimismPortalProxy.selector, address(deployOutput.optimismPortalProxy)); _doo.set(_doo.optimismPortalProxy.selector, address(deployOutput.optimismPortalProxy));
_dso.set(_dso.disputeGameFactoryProxy.selector, address(deployOutput.disputeGameFactoryProxy)); _doo.set(_doo.disputeGameFactoryProxy.selector, address(deployOutput.disputeGameFactoryProxy));
_dso.set(_dso.disputeGameFactoryImpl.selector, address(deployOutput.disputeGameFactoryImpl)); _doo.set(_doo.disputeGameFactoryImpl.selector, address(deployOutput.disputeGameFactoryImpl));
_dso.set(_dso.anchorStateRegistryProxy.selector, address(deployOutput.anchorStateRegistryProxy)); _doo.set(_doo.anchorStateRegistryProxy.selector, address(deployOutput.anchorStateRegistryProxy));
_dso.set(_dso.anchorStateRegistryImpl.selector, address(deployOutput.anchorStateRegistryImpl)); _doo.set(_doo.anchorStateRegistryImpl.selector, address(deployOutput.anchorStateRegistryImpl));
_dso.set(_dso.faultDisputeGame.selector, address(deployOutput.faultDisputeGame)); _doo.set(_doo.faultDisputeGame.selector, address(deployOutput.faultDisputeGame));
_dso.set(_dso.permissionedDisputeGame.selector, address(deployOutput.permissionedDisputeGame)); _doo.set(_doo.permissionedDisputeGame.selector, address(deployOutput.permissionedDisputeGame));
_dso.set(_dso.delayedWETHPermissionedGameProxy.selector, address(deployOutput.delayedWETHPermissionedGameProxy)); _doo.set(_doo.delayedWETHPermissionedGameProxy.selector, address(deployOutput.delayedWETHPermissionedGameProxy));
_dso.set( _doo.set(
_dso.delayedWETHPermissionlessGameProxy.selector, address(deployOutput.delayedWETHPermissionlessGameProxy) _doo.delayedWETHPermissionlessGameProxy.selector, address(deployOutput.delayedWETHPermissionlessGameProxy)
); );
_dso.checkOutput(); _doo.checkOutput();
} }
// -------- Utilities -------- // -------- Utilities --------
function etchIOContracts() internal returns (DeployOPChainInput dsi_, DeployOPChainOutput dso_) { function etchIOContracts() internal returns (DeployOPChainInput doi_, DeployOPChainOutput doo_) {
(dsi_, dso_) = getIOContracts(); (doi_, doo_) = getIOContracts();
vm.etch(address(dsi_), type(DeployOPChainInput).runtimeCode); vm.etch(address(doi_), type(DeployOPChainInput).runtimeCode);
vm.etch(address(dso_), type(DeployOPChainOutput).runtimeCode); vm.etch(address(doo_), type(DeployOPChainOutput).runtimeCode);
} }
function getIOContracts() public view returns (DeployOPChainInput dsi_, DeployOPChainOutput dso_) { function getIOContracts() public view returns (DeployOPChainInput doi_, DeployOPChainOutput doo_) {
dsi_ = DeployOPChainInput(DeployUtils.toIOAddress(msg.sender, "optimism.DeployOPChainInput")); doi_ = DeployOPChainInput(DeployUtils.toIOAddress(msg.sender, "optimism.DeployOPChainInput"));
dso_ = DeployOPChainOutput(DeployUtils.toIOAddress(msg.sender, "optimism.DeployOPChainOutput")); doo_ = DeployOPChainOutput(DeployUtils.toIOAddress(msg.sender, "optimism.DeployOPChainOutput"));
} }
} }
...@@ -56,7 +56,15 @@ import { Solarray } from "scripts/libraries/Solarray.sol"; ...@@ -56,7 +56,15 @@ import { Solarray } from "scripts/libraries/Solarray.sol";
// documentation. // documentation.
// //
// Additionally, we intentionally use "Input" and "Output" terminology to clearly distinguish these // Additionally, we intentionally use "Input" and "Output" terminology to clearly distinguish these
// scripts from the existing ones that use the "Config" and "Artifacts" terminology. // scripts from the existing ones that use the "Config" and "Artifacts" terminology. Within scripts
// we use variable names that are shorthand for the full contract names, for example:
// - `dsi` for DeploySuperchainInput
// - `dso` for DeploySuperchainOutput
// - `dio` for DeployImplementationsInput
// - `dio` for DeployImplementationsOutput
// - `doo` for DeployOPChainInput
// - `doo` for DeployOPChainOutput
// - etc.
contract DeploySuperchainInput is CommonBase { contract DeploySuperchainInput is CommonBase {
using stdToml for string; using stdToml for string;
......
...@@ -26,7 +26,7 @@ import { ...@@ -26,7 +26,7 @@ import {
} from "scripts/DeployImplementations.s.sol"; } from "scripts/DeployImplementations.s.sol";
contract DeployImplementationsInput_Test is Test { contract DeployImplementationsInput_Test is Test {
DeployImplementationsInput dsi; DeployImplementationsInput dii;
DeployImplementationsInput.Input input = DeployImplementationsInput.Input({ DeployImplementationsInput.Input input = DeployImplementationsInput.Input({
withdrawalDelaySeconds: 100, withdrawalDelaySeconds: 100,
...@@ -40,50 +40,50 @@ contract DeployImplementationsInput_Test is Test { ...@@ -40,50 +40,50 @@ contract DeployImplementationsInput_Test is Test {
}); });
function setUp() public { function setUp() public {
dsi = new DeployImplementationsInput(); dii = new DeployImplementationsInput();
} }
function test_loadInput_succeeds() public { function test_loadInput_succeeds() public {
dsi.loadInput(input); dii.loadInput(input);
assertTrue(dsi.inputSet(), "100"); assertTrue(dii.inputSet(), "100");
// Compare the test input struct to the getter methods. // Compare the test input struct to the getter methods.
assertEq(input.withdrawalDelaySeconds, dsi.withdrawalDelaySeconds(), "200"); assertEq(input.withdrawalDelaySeconds, dii.withdrawalDelaySeconds(), "200");
assertEq(input.minProposalSizeBytes, dsi.minProposalSizeBytes(), "300"); assertEq(input.minProposalSizeBytes, dii.minProposalSizeBytes(), "300");
assertEq(input.challengePeriodSeconds, dsi.challengePeriodSeconds(), "400"); assertEq(input.challengePeriodSeconds, dii.challengePeriodSeconds(), "400");
assertEq(input.proofMaturityDelaySeconds, dsi.proofMaturityDelaySeconds(), "500"); assertEq(input.proofMaturityDelaySeconds, dii.proofMaturityDelaySeconds(), "500");
assertEq(input.disputeGameFinalityDelaySeconds, dsi.disputeGameFinalityDelaySeconds(), "600"); assertEq(input.disputeGameFinalityDelaySeconds, dii.disputeGameFinalityDelaySeconds(), "600");
// Compare the test input struct to the `input` getter method. // Compare the test input struct to the `input` getter method.
assertEq(keccak256(abi.encode(input)), keccak256(abi.encode(dsi.input())), "800"); assertEq(keccak256(abi.encode(input)), keccak256(abi.encode(dii.input())), "800");
} }
function test_getters_whenNotSet_revert() public { function test_getters_whenNotSet_revert() public {
bytes memory expectedErr = "DeployImplementationsInput: input not set"; bytes memory expectedErr = "DeployImplementationsInput: input not set";
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dsi.withdrawalDelaySeconds(); dii.withdrawalDelaySeconds();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dsi.minProposalSizeBytes(); dii.minProposalSizeBytes();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dsi.challengePeriodSeconds(); dii.challengePeriodSeconds();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dsi.proofMaturityDelaySeconds(); dii.proofMaturityDelaySeconds();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dsi.disputeGameFinalityDelaySeconds(); dii.disputeGameFinalityDelaySeconds();
} }
} }
contract DeployImplementationsOutput_Test is Test { contract DeployImplementationsOutput_Test is Test {
DeployImplementationsOutput dso; DeployImplementationsOutput dio;
function setUp() public { function setUp() public {
dso = new DeployImplementationsOutput(); dio = new DeployImplementationsOutput();
} }
function test_set_succeeds() public { function test_set_succeeds() public {
...@@ -112,115 +112,115 @@ contract DeployImplementationsOutput_Test is Test { ...@@ -112,115 +112,115 @@ contract DeployImplementationsOutput_Test is Test {
vm.etch(address(output.l1StandardBridgeImpl), hex"01"); vm.etch(address(output.l1StandardBridgeImpl), hex"01");
vm.etch(address(output.optimismMintableERC20FactoryImpl), hex"01"); vm.etch(address(output.optimismMintableERC20FactoryImpl), hex"01");
vm.etch(address(output.disputeGameFactoryImpl), hex"01"); vm.etch(address(output.disputeGameFactoryImpl), hex"01");
dso.set(dso.opsm.selector, address(output.opsm)); dio.set(dio.opsm.selector, address(output.opsm));
dso.set(dso.optimismPortalImpl.selector, address(output.optimismPortalImpl)); dio.set(dio.optimismPortalImpl.selector, address(output.optimismPortalImpl));
dso.set(dso.delayedWETHImpl.selector, address(output.delayedWETHImpl)); dio.set(dio.delayedWETHImpl.selector, address(output.delayedWETHImpl));
dso.set(dso.preimageOracleSingleton.selector, address(output.preimageOracleSingleton)); dio.set(dio.preimageOracleSingleton.selector, address(output.preimageOracleSingleton));
dso.set(dso.mipsSingleton.selector, address(output.mipsSingleton)); dio.set(dio.mipsSingleton.selector, address(output.mipsSingleton));
dso.set(dso.systemConfigImpl.selector, address(output.systemConfigImpl)); dio.set(dio.systemConfigImpl.selector, address(output.systemConfigImpl));
dso.set(dso.l1CrossDomainMessengerImpl.selector, address(output.l1CrossDomainMessengerImpl)); dio.set(dio.l1CrossDomainMessengerImpl.selector, address(output.l1CrossDomainMessengerImpl));
dso.set(dso.l1ERC721BridgeImpl.selector, address(output.l1ERC721BridgeImpl)); dio.set(dio.l1ERC721BridgeImpl.selector, address(output.l1ERC721BridgeImpl));
dso.set(dso.l1StandardBridgeImpl.selector, address(output.l1StandardBridgeImpl)); dio.set(dio.l1StandardBridgeImpl.selector, address(output.l1StandardBridgeImpl));
dso.set(dso.optimismMintableERC20FactoryImpl.selector, address(output.optimismMintableERC20FactoryImpl)); dio.set(dio.optimismMintableERC20FactoryImpl.selector, address(output.optimismMintableERC20FactoryImpl));
dso.set(dso.disputeGameFactoryImpl.selector, address(output.disputeGameFactoryImpl)); dio.set(dio.disputeGameFactoryImpl.selector, address(output.disputeGameFactoryImpl));
assertEq(address(output.opsm), address(dso.opsm()), "50"); assertEq(address(output.opsm), address(dio.opsm()), "50");
assertEq(address(output.optimismPortalImpl), address(dso.optimismPortalImpl()), "100"); assertEq(address(output.optimismPortalImpl), address(dio.optimismPortalImpl()), "100");
assertEq(address(output.delayedWETHImpl), address(dso.delayedWETHImpl()), "200"); assertEq(address(output.delayedWETHImpl), address(dio.delayedWETHImpl()), "200");
assertEq(address(output.preimageOracleSingleton), address(dso.preimageOracleSingleton()), "300"); assertEq(address(output.preimageOracleSingleton), address(dio.preimageOracleSingleton()), "300");
assertEq(address(output.mipsSingleton), address(dso.mipsSingleton()), "400"); assertEq(address(output.mipsSingleton), address(dio.mipsSingleton()), "400");
assertEq(address(output.systemConfigImpl), address(dso.systemConfigImpl()), "500"); assertEq(address(output.systemConfigImpl), address(dio.systemConfigImpl()), "500");
assertEq(address(output.l1CrossDomainMessengerImpl), address(dso.l1CrossDomainMessengerImpl()), "600"); assertEq(address(output.l1CrossDomainMessengerImpl), address(dio.l1CrossDomainMessengerImpl()), "600");
assertEq(address(output.l1ERC721BridgeImpl), address(dso.l1ERC721BridgeImpl()), "700"); assertEq(address(output.l1ERC721BridgeImpl), address(dio.l1ERC721BridgeImpl()), "700");
assertEq(address(output.l1StandardBridgeImpl), address(dso.l1StandardBridgeImpl()), "800"); assertEq(address(output.l1StandardBridgeImpl), address(dio.l1StandardBridgeImpl()), "800");
assertEq( assertEq(
address(output.optimismMintableERC20FactoryImpl), address(dso.optimismMintableERC20FactoryImpl()), "900" address(output.optimismMintableERC20FactoryImpl), address(dio.optimismMintableERC20FactoryImpl()), "900"
); );
assertEq(address(output.disputeGameFactoryImpl), address(dso.disputeGameFactoryImpl()), "950"); assertEq(address(output.disputeGameFactoryImpl), address(dio.disputeGameFactoryImpl()), "950");
assertEq(keccak256(abi.encode(output)), keccak256(abi.encode(dso.output())), "1000"); assertEq(keccak256(abi.encode(output)), keccak256(abi.encode(dio.output())), "1000");
} }
function test_getters_whenNotSet_revert() public { function test_getters_whenNotSet_revert() public {
bytes memory expectedErr = "DeployUtils: zero address"; bytes memory expectedErr = "DeployUtils: zero address";
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.optimismPortalImpl(); dio.optimismPortalImpl();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.delayedWETHImpl(); dio.delayedWETHImpl();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.preimageOracleSingleton(); dio.preimageOracleSingleton();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.mipsSingleton(); dio.mipsSingleton();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.systemConfigImpl(); dio.systemConfigImpl();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.l1CrossDomainMessengerImpl(); dio.l1CrossDomainMessengerImpl();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.l1ERC721BridgeImpl(); dio.l1ERC721BridgeImpl();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.l1StandardBridgeImpl(); dio.l1StandardBridgeImpl();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.optimismMintableERC20FactoryImpl(); dio.optimismMintableERC20FactoryImpl();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.disputeGameFactoryImpl(); dio.disputeGameFactoryImpl();
} }
function test_getters_whenAddrHasNoCode_reverts() public { function test_getters_whenAddrHasNoCode_reverts() public {
address emptyAddr = makeAddr("emptyAddr"); address emptyAddr = makeAddr("emptyAddr");
bytes memory expectedErr = bytes(string.concat("DeployUtils: no code at ", vm.toString(emptyAddr))); bytes memory expectedErr = bytes(string.concat("DeployUtils: no code at ", vm.toString(emptyAddr)));
dso.set(dso.optimismPortalImpl.selector, emptyAddr); dio.set(dio.optimismPortalImpl.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.optimismPortalImpl(); dio.optimismPortalImpl();
dso.set(dso.delayedWETHImpl.selector, emptyAddr); dio.set(dio.delayedWETHImpl.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.delayedWETHImpl(); dio.delayedWETHImpl();
dso.set(dso.preimageOracleSingleton.selector, emptyAddr); dio.set(dio.preimageOracleSingleton.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.preimageOracleSingleton(); dio.preimageOracleSingleton();
dso.set(dso.mipsSingleton.selector, emptyAddr); dio.set(dio.mipsSingleton.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.mipsSingleton(); dio.mipsSingleton();
dso.set(dso.systemConfigImpl.selector, emptyAddr); dio.set(dio.systemConfigImpl.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.systemConfigImpl(); dio.systemConfigImpl();
dso.set(dso.l1CrossDomainMessengerImpl.selector, emptyAddr); dio.set(dio.l1CrossDomainMessengerImpl.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.l1CrossDomainMessengerImpl(); dio.l1CrossDomainMessengerImpl();
dso.set(dso.l1ERC721BridgeImpl.selector, emptyAddr); dio.set(dio.l1ERC721BridgeImpl.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.l1ERC721BridgeImpl(); dio.l1ERC721BridgeImpl();
dso.set(dso.l1StandardBridgeImpl.selector, emptyAddr); dio.set(dio.l1StandardBridgeImpl.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.l1StandardBridgeImpl(); dio.l1StandardBridgeImpl();
dso.set(dso.optimismMintableERC20FactoryImpl.selector, emptyAddr); dio.set(dio.optimismMintableERC20FactoryImpl.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.optimismMintableERC20FactoryImpl(); dio.optimismMintableERC20FactoryImpl();
} }
} }
contract DeployImplementations_Test is Test { contract DeployImplementations_Test is Test {
DeployImplementations deployImplementations; DeployImplementations deployImplementations;
DeployImplementationsInput dsi; DeployImplementationsInput dii;
DeployImplementationsOutput dso; DeployImplementationsOutput dio;
// Define a default input struct for testing. // Define a default input struct for testing.
DeployImplementationsInput.Input input = DeployImplementationsInput.Input({ DeployImplementationsInput.Input input = DeployImplementationsInput.Input({
...@@ -236,7 +236,7 @@ contract DeployImplementations_Test is Test { ...@@ -236,7 +236,7 @@ contract DeployImplementations_Test is Test {
function setUp() public virtual { function setUp() public virtual {
deployImplementations = new DeployImplementations(); deployImplementations = new DeployImplementations();
(dsi, dso) = deployImplementations.getIOContracts(); (dii, dio) = deployImplementations.getIOContracts();
} }
// By deploying the `DeployImplementations` contract with this virtual function, we provide a // By deploying the `DeployImplementations` contract with this virtual function, we provide a
...@@ -246,37 +246,37 @@ contract DeployImplementations_Test is Test { ...@@ -246,37 +246,37 @@ contract DeployImplementations_Test is Test {
return new DeployImplementations(); return new DeployImplementations();
} }
function test_run_succeeds(DeployImplementationsInput.Input memory _input) public { function testFuzz_run_succeeds(DeployImplementationsInput.Input memory _input) public {
// This is a requirement in the PreimageOracle contract. // This is a requirement in the PreimageOracle contract.
_input.challengePeriodSeconds = bound(_input.challengePeriodSeconds, 0, type(uint64).max); _input.challengePeriodSeconds = bound(_input.challengePeriodSeconds, 0, type(uint64).max);
DeployImplementationsOutput.Output memory output = deployImplementations.run(_input); DeployImplementationsOutput.Output memory output = deployImplementations.run(_input);
// Assert that individual input fields were properly set based on the input struct. // Assert that individual input fields were properly set based on the input struct.
assertEq(_input.withdrawalDelaySeconds, dsi.withdrawalDelaySeconds(), "100"); assertEq(_input.withdrawalDelaySeconds, dii.withdrawalDelaySeconds(), "100");
assertEq(_input.minProposalSizeBytes, dsi.minProposalSizeBytes(), "200"); assertEq(_input.minProposalSizeBytes, dii.minProposalSizeBytes(), "200");
assertEq(_input.challengePeriodSeconds, dsi.challengePeriodSeconds(), "300"); assertEq(_input.challengePeriodSeconds, dii.challengePeriodSeconds(), "300");
assertEq(_input.proofMaturityDelaySeconds, dsi.proofMaturityDelaySeconds(), "400"); assertEq(_input.proofMaturityDelaySeconds, dii.proofMaturityDelaySeconds(), "400");
assertEq(_input.disputeGameFinalityDelaySeconds, dsi.disputeGameFinalityDelaySeconds(), "500"); assertEq(_input.disputeGameFinalityDelaySeconds, dii.disputeGameFinalityDelaySeconds(), "500");
// Assert that individual output fields were properly set based on the output struct. // Assert that individual output fields were properly set based on the output struct.
assertEq(address(output.optimismPortalImpl), address(dso.optimismPortalImpl()), "600"); assertEq(address(output.optimismPortalImpl), address(dio.optimismPortalImpl()), "600");
assertEq(address(output.delayedWETHImpl), address(dso.delayedWETHImpl()), "700"); assertEq(address(output.delayedWETHImpl), address(dio.delayedWETHImpl()), "700");
assertEq(address(output.preimageOracleSingleton), address(dso.preimageOracleSingleton()), "800"); assertEq(address(output.preimageOracleSingleton), address(dio.preimageOracleSingleton()), "800");
assertEq(address(output.mipsSingleton), address(dso.mipsSingleton()), "900"); assertEq(address(output.mipsSingleton), address(dio.mipsSingleton()), "900");
assertEq(address(output.systemConfigImpl), address(dso.systemConfigImpl()), "1000"); assertEq(address(output.systemConfigImpl), address(dio.systemConfigImpl()), "1000");
assertEq(address(output.l1CrossDomainMessengerImpl), address(dso.l1CrossDomainMessengerImpl()), "1100"); assertEq(address(output.l1CrossDomainMessengerImpl), address(dio.l1CrossDomainMessengerImpl()), "1100");
assertEq(address(output.l1ERC721BridgeImpl), address(dso.l1ERC721BridgeImpl()), "1200"); assertEq(address(output.l1ERC721BridgeImpl), address(dio.l1ERC721BridgeImpl()), "1200");
assertEq(address(output.l1StandardBridgeImpl), address(dso.l1StandardBridgeImpl()), "1300"); assertEq(address(output.l1StandardBridgeImpl), address(dio.l1StandardBridgeImpl()), "1300");
assertEq( assertEq(
address(output.optimismMintableERC20FactoryImpl), address(dso.optimismMintableERC20FactoryImpl()), "1400" address(output.optimismMintableERC20FactoryImpl), address(dio.optimismMintableERC20FactoryImpl()), "1400"
); );
assertEq(address(output.disputeGameFactoryImpl), address(dso.disputeGameFactoryImpl()), "1450"); assertEq(address(output.disputeGameFactoryImpl), address(dio.disputeGameFactoryImpl()), "1450");
// Assert that the full input and output structs were properly set. // Assert that the full input and output structs were properly set.
assertEq(keccak256(abi.encode(_input)), keccak256(abi.encode(DeployImplementationsInput(dsi).input())), "1500"); assertEq(keccak256(abi.encode(_input)), keccak256(abi.encode(DeployImplementationsInput(dii).input())), "1500");
assertEq( assertEq(
keccak256(abi.encode(output)), keccak256(abi.encode(DeployImplementationsOutput(dso).output())), "1600" keccak256(abi.encode(output)), keccak256(abi.encode(DeployImplementationsOutput(dio).output())), "1600"
); );
// Assert inputs were properly passed through to the contract initializers. // Assert inputs were properly passed through to the contract initializers.
...@@ -293,10 +293,10 @@ contract DeployImplementations_Test is Test { ...@@ -293,10 +293,10 @@ contract DeployImplementations_Test is Test {
// Ensure that `checkOutput` passes. This is called by the `run` function during execution, // Ensure that `checkOutput` passes. This is called by the `run` function during execution,
// so this just acts as a sanity check. It reverts on failure. // so this just acts as a sanity check. It reverts on failure.
dso.checkOutput(); dio.checkOutput();
} }
function test_run_largeChallengePeriodSeconds_reverts(uint256 _challengePeriodSeconds) public { function testFuzz_run_largeChallengePeriodSeconds_reverts(uint256 _challengePeriodSeconds) public {
input.challengePeriodSeconds = bound(_challengePeriodSeconds, uint256(type(uint64).max) + 1, type(uint256).max); input.challengePeriodSeconds = bound(_challengePeriodSeconds, uint256(type(uint64).max) + 1, type(uint256).max);
vm.expectRevert("DeployImplementationsInput: challenge period too large"); vm.expectRevert("DeployImplementationsInput: challenge period too large");
deployImplementations.run(input); deployImplementations.run(input);
......
...@@ -32,7 +32,7 @@ import { L1StandardBridge } from "src/L1/L1StandardBridge.sol"; ...@@ -32,7 +32,7 @@ import { L1StandardBridge } from "src/L1/L1StandardBridge.sol";
import { OptimismMintableERC20Factory } from "src/universal/OptimismMintableERC20Factory.sol"; import { OptimismMintableERC20Factory } from "src/universal/OptimismMintableERC20Factory.sol";
contract DeployOPChainInput_Test is Test { contract DeployOPChainInput_Test is Test {
DeployOPChainInput dsi; DeployOPChainInput doi;
DeployOPChainInput.Input input = DeployOPChainInput.Input({ DeployOPChainInput.Input input = DeployOPChainInput.Input({
roles: DeployOPChainInput.Roles({ roles: DeployOPChainInput.Roles({
...@@ -50,67 +50,67 @@ contract DeployOPChainInput_Test is Test { ...@@ -50,67 +50,67 @@ contract DeployOPChainInput_Test is Test {
}); });
function setUp() public { function setUp() public {
dsi = new DeployOPChainInput(); doi = new DeployOPChainInput();
} }
function test_loadInput_succeeds() public { function test_loadInput_succeeds() public {
dsi.loadInput(input); doi.loadInput(input);
assertTrue(dsi.inputSet(), "100"); assertTrue(doi.inputSet(), "100");
// Compare the test input struct to the getter methods. // Compare the test input struct to the getter methods.
assertEq(input.roles.opChainProxyAdminOwner, dsi.opChainProxyAdminOwner(), "200"); assertEq(input.roles.opChainProxyAdminOwner, doi.opChainProxyAdminOwner(), "200");
assertEq(input.roles.systemConfigOwner, dsi.systemConfigOwner(), "300"); assertEq(input.roles.systemConfigOwner, doi.systemConfigOwner(), "300");
assertEq(input.roles.batcher, dsi.batcher(), "400"); assertEq(input.roles.batcher, doi.batcher(), "400");
assertEq(input.roles.unsafeBlockSigner, dsi.unsafeBlockSigner(), "500"); assertEq(input.roles.unsafeBlockSigner, doi.unsafeBlockSigner(), "500");
assertEq(input.roles.proposer, dsi.proposer(), "600"); assertEq(input.roles.proposer, doi.proposer(), "600");
assertEq(input.roles.challenger, dsi.challenger(), "700"); assertEq(input.roles.challenger, doi.challenger(), "700");
assertEq(input.basefeeScalar, dsi.basefeeScalar(), "800"); assertEq(input.basefeeScalar, doi.basefeeScalar(), "800");
assertEq(input.blobBaseFeeScalar, dsi.blobBaseFeeScalar(), "900"); assertEq(input.blobBaseFeeScalar, doi.blobBaseFeeScalar(), "900");
assertEq(input.l2ChainId, dsi.l2ChainId(), "1000"); assertEq(input.l2ChainId, doi.l2ChainId(), "1000");
assertEq(address(input.opsm), address(dsi.opsm()), "1100"); assertEq(address(input.opsm), address(doi.opsm()), "1100");
// Compare the test input struct to the `input` getter method. // Compare the test input struct to the `input` getter method.
assertEq(keccak256(abi.encode(input)), keccak256(abi.encode(dsi.input())), "1200"); assertEq(keccak256(abi.encode(input)), keccak256(abi.encode(doi.input())), "1200");
} }
function test_getters_whenNotSet_revert() public { function test_getters_whenNotSet_revert() public {
bytes memory expectedErr = "DeployOPChainInput: input not set"; bytes memory expectedErr = "DeployOPChainInput: input not set";
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dsi.opChainProxyAdminOwner(); doi.opChainProxyAdminOwner();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dsi.systemConfigOwner(); doi.systemConfigOwner();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dsi.batcher(); doi.batcher();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dsi.unsafeBlockSigner(); doi.unsafeBlockSigner();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dsi.proposer(); doi.proposer();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dsi.challenger(); doi.challenger();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dsi.basefeeScalar(); doi.basefeeScalar();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dsi.blobBaseFeeScalar(); doi.blobBaseFeeScalar();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dsi.l2ChainId(); doi.l2ChainId();
} }
} }
contract DeployOPChainOutput_Test is Test { contract DeployOPChainOutput_Test is Test {
DeployOPChainOutput dso; DeployOPChainOutput doo;
function setUp() public { function setUp() public {
dso = new DeployOPChainOutput(); doo = new DeployOPChainOutput();
} }
function test_set_succeeds() public { function test_set_succeeds() public {
...@@ -150,170 +150,170 @@ contract DeployOPChainOutput_Test is Test { ...@@ -150,170 +150,170 @@ contract DeployOPChainOutput_Test is Test {
vm.etch(address(output.delayedWETHPermissionedGameProxy), hex"01"); vm.etch(address(output.delayedWETHPermissionedGameProxy), hex"01");
vm.etch(address(output.delayedWETHPermissionlessGameProxy), hex"01"); vm.etch(address(output.delayedWETHPermissionlessGameProxy), hex"01");
dso.set(dso.opChainProxyAdmin.selector, address(output.opChainProxyAdmin)); doo.set(doo.opChainProxyAdmin.selector, address(output.opChainProxyAdmin));
dso.set(dso.addressManager.selector, address(output.addressManager)); doo.set(doo.addressManager.selector, address(output.addressManager));
dso.set(dso.l1ERC721BridgeProxy.selector, address(output.l1ERC721BridgeProxy)); doo.set(doo.l1ERC721BridgeProxy.selector, address(output.l1ERC721BridgeProxy));
dso.set(dso.systemConfigProxy.selector, address(output.systemConfigProxy)); doo.set(doo.systemConfigProxy.selector, address(output.systemConfigProxy));
dso.set(dso.optimismMintableERC20FactoryProxy.selector, address(output.optimismMintableERC20FactoryProxy)); doo.set(doo.optimismMintableERC20FactoryProxy.selector, address(output.optimismMintableERC20FactoryProxy));
dso.set(dso.l1StandardBridgeProxy.selector, address(output.l1StandardBridgeProxy)); doo.set(doo.l1StandardBridgeProxy.selector, address(output.l1StandardBridgeProxy));
dso.set(dso.l1CrossDomainMessengerProxy.selector, address(output.l1CrossDomainMessengerProxy)); doo.set(doo.l1CrossDomainMessengerProxy.selector, address(output.l1CrossDomainMessengerProxy));
dso.set(dso.optimismPortalProxy.selector, address(output.optimismPortalProxy)); doo.set(doo.optimismPortalProxy.selector, address(output.optimismPortalProxy));
dso.set(dso.disputeGameFactoryProxy.selector, address(output.disputeGameFactoryProxy)); doo.set(doo.disputeGameFactoryProxy.selector, address(output.disputeGameFactoryProxy));
dso.set(dso.disputeGameFactoryImpl.selector, address(output.disputeGameFactoryImpl)); doo.set(doo.disputeGameFactoryImpl.selector, address(output.disputeGameFactoryImpl));
dso.set(dso.anchorStateRegistryProxy.selector, address(output.anchorStateRegistryProxy)); doo.set(doo.anchorStateRegistryProxy.selector, address(output.anchorStateRegistryProxy));
dso.set(dso.anchorStateRegistryImpl.selector, address(output.anchorStateRegistryImpl)); doo.set(doo.anchorStateRegistryImpl.selector, address(output.anchorStateRegistryImpl));
dso.set(dso.faultDisputeGame.selector, address(output.faultDisputeGame)); doo.set(doo.faultDisputeGame.selector, address(output.faultDisputeGame));
dso.set(dso.permissionedDisputeGame.selector, address(output.permissionedDisputeGame)); doo.set(doo.permissionedDisputeGame.selector, address(output.permissionedDisputeGame));
dso.set(dso.delayedWETHPermissionedGameProxy.selector, address(output.delayedWETHPermissionedGameProxy)); doo.set(doo.delayedWETHPermissionedGameProxy.selector, address(output.delayedWETHPermissionedGameProxy));
dso.set(dso.delayedWETHPermissionlessGameProxy.selector, address(output.delayedWETHPermissionlessGameProxy)); doo.set(doo.delayedWETHPermissionlessGameProxy.selector, address(output.delayedWETHPermissionlessGameProxy));
assertEq(address(output.opChainProxyAdmin), address(dso.opChainProxyAdmin()), "100"); assertEq(address(output.opChainProxyAdmin), address(doo.opChainProxyAdmin()), "100");
assertEq(address(output.addressManager), address(dso.addressManager()), "200"); assertEq(address(output.addressManager), address(doo.addressManager()), "200");
assertEq(address(output.l1ERC721BridgeProxy), address(dso.l1ERC721BridgeProxy()), "300"); assertEq(address(output.l1ERC721BridgeProxy), address(doo.l1ERC721BridgeProxy()), "300");
assertEq(address(output.systemConfigProxy), address(dso.systemConfigProxy()), "400"); assertEq(address(output.systemConfigProxy), address(doo.systemConfigProxy()), "400");
assertEq( assertEq(
address(output.optimismMintableERC20FactoryProxy), address(dso.optimismMintableERC20FactoryProxy()), "500" address(output.optimismMintableERC20FactoryProxy), address(doo.optimismMintableERC20FactoryProxy()), "500"
); );
assertEq(address(output.l1StandardBridgeProxy), address(dso.l1StandardBridgeProxy()), "600"); assertEq(address(output.l1StandardBridgeProxy), address(doo.l1StandardBridgeProxy()), "600");
assertEq(address(output.l1CrossDomainMessengerProxy), address(dso.l1CrossDomainMessengerProxy()), "700"); assertEq(address(output.l1CrossDomainMessengerProxy), address(doo.l1CrossDomainMessengerProxy()), "700");
assertEq(address(output.optimismPortalProxy), address(dso.optimismPortalProxy()), "800"); assertEq(address(output.optimismPortalProxy), address(doo.optimismPortalProxy()), "800");
assertEq(address(output.disputeGameFactoryProxy), address(dso.disputeGameFactoryProxy()), "900"); assertEq(address(output.disputeGameFactoryProxy), address(doo.disputeGameFactoryProxy()), "900");
assertEq(address(output.disputeGameFactoryImpl), address(dso.disputeGameFactoryImpl()), "1000"); assertEq(address(output.disputeGameFactoryImpl), address(doo.disputeGameFactoryImpl()), "1000");
assertEq(address(output.anchorStateRegistryProxy), address(dso.anchorStateRegistryProxy()), "1100"); assertEq(address(output.anchorStateRegistryProxy), address(doo.anchorStateRegistryProxy()), "1100");
assertEq(address(output.anchorStateRegistryImpl), address(dso.anchorStateRegistryImpl()), "1200"); assertEq(address(output.anchorStateRegistryImpl), address(doo.anchorStateRegistryImpl()), "1200");
assertEq(address(output.faultDisputeGame), address(dso.faultDisputeGame()), "1300"); assertEq(address(output.faultDisputeGame), address(doo.faultDisputeGame()), "1300");
assertEq(address(output.permissionedDisputeGame), address(dso.permissionedDisputeGame()), "1400"); assertEq(address(output.permissionedDisputeGame), address(doo.permissionedDisputeGame()), "1400");
assertEq( assertEq(
address(output.delayedWETHPermissionedGameProxy), address(dso.delayedWETHPermissionedGameProxy()), "1500" address(output.delayedWETHPermissionedGameProxy), address(doo.delayedWETHPermissionedGameProxy()), "1500"
); );
assertEq( assertEq(
address(output.delayedWETHPermissionlessGameProxy), address(output.delayedWETHPermissionlessGameProxy),
address(dso.delayedWETHPermissionlessGameProxy()), address(doo.delayedWETHPermissionlessGameProxy()),
"1600" "1600"
); );
assertEq(keccak256(abi.encode(output)), keccak256(abi.encode(dso.output())), "1700"); assertEq(keccak256(abi.encode(output)), keccak256(abi.encode(doo.output())), "1700");
} }
function test_getters_whenNotSet_revert() public { function test_getters_whenNotSet_revert() public {
bytes memory expectedErr = "DeployUtils: zero address"; bytes memory expectedErr = "DeployUtils: zero address";
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.opChainProxyAdmin(); doo.opChainProxyAdmin();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.addressManager(); doo.addressManager();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.l1ERC721BridgeProxy(); doo.l1ERC721BridgeProxy();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.systemConfigProxy(); doo.systemConfigProxy();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.optimismMintableERC20FactoryProxy(); doo.optimismMintableERC20FactoryProxy();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.l1StandardBridgeProxy(); doo.l1StandardBridgeProxy();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.l1CrossDomainMessengerProxy(); doo.l1CrossDomainMessengerProxy();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.optimismPortalProxy(); doo.optimismPortalProxy();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.disputeGameFactoryProxy(); doo.disputeGameFactoryProxy();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.disputeGameFactoryImpl(); doo.disputeGameFactoryImpl();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.anchorStateRegistryProxy(); doo.anchorStateRegistryProxy();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.anchorStateRegistryImpl(); doo.anchorStateRegistryImpl();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.faultDisputeGame(); doo.faultDisputeGame();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.permissionedDisputeGame(); doo.permissionedDisputeGame();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.delayedWETHPermissionedGameProxy(); doo.delayedWETHPermissionedGameProxy();
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.delayedWETHPermissionlessGameProxy(); doo.delayedWETHPermissionlessGameProxy();
} }
function test_getters_whenAddrHasNoCode_reverts() public { function test_getters_whenAddrHasNoCode_reverts() public {
address emptyAddr = makeAddr("emptyAddr"); address emptyAddr = makeAddr("emptyAddr");
bytes memory expectedErr = bytes(string.concat("DeployUtils: no code at ", vm.toString(emptyAddr))); bytes memory expectedErr = bytes(string.concat("DeployUtils: no code at ", vm.toString(emptyAddr)));
dso.set(dso.opChainProxyAdmin.selector, emptyAddr); doo.set(doo.opChainProxyAdmin.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.opChainProxyAdmin(); doo.opChainProxyAdmin();
dso.set(dso.addressManager.selector, emptyAddr); doo.set(doo.addressManager.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.addressManager(); doo.addressManager();
dso.set(dso.l1ERC721BridgeProxy.selector, emptyAddr); doo.set(doo.l1ERC721BridgeProxy.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.l1ERC721BridgeProxy(); doo.l1ERC721BridgeProxy();
dso.set(dso.systemConfigProxy.selector, emptyAddr); doo.set(doo.systemConfigProxy.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.systemConfigProxy(); doo.systemConfigProxy();
dso.set(dso.optimismMintableERC20FactoryProxy.selector, emptyAddr); doo.set(doo.optimismMintableERC20FactoryProxy.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.optimismMintableERC20FactoryProxy(); doo.optimismMintableERC20FactoryProxy();
dso.set(dso.l1StandardBridgeProxy.selector, emptyAddr); doo.set(doo.l1StandardBridgeProxy.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.l1StandardBridgeProxy(); doo.l1StandardBridgeProxy();
dso.set(dso.l1CrossDomainMessengerProxy.selector, emptyAddr); doo.set(doo.l1CrossDomainMessengerProxy.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.l1CrossDomainMessengerProxy(); doo.l1CrossDomainMessengerProxy();
dso.set(dso.optimismPortalProxy.selector, emptyAddr); doo.set(doo.optimismPortalProxy.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.optimismPortalProxy(); doo.optimismPortalProxy();
dso.set(dso.disputeGameFactoryProxy.selector, emptyAddr); doo.set(doo.disputeGameFactoryProxy.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.disputeGameFactoryProxy(); doo.disputeGameFactoryProxy();
dso.set(dso.disputeGameFactoryImpl.selector, emptyAddr); doo.set(doo.disputeGameFactoryImpl.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.disputeGameFactoryImpl(); doo.disputeGameFactoryImpl();
dso.set(dso.anchorStateRegistryProxy.selector, emptyAddr); doo.set(doo.anchorStateRegistryProxy.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.anchorStateRegistryProxy(); doo.anchorStateRegistryProxy();
dso.set(dso.anchorStateRegistryImpl.selector, emptyAddr); doo.set(doo.anchorStateRegistryImpl.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.anchorStateRegistryImpl(); doo.anchorStateRegistryImpl();
dso.set(dso.faultDisputeGame.selector, emptyAddr); doo.set(doo.faultDisputeGame.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.faultDisputeGame(); doo.faultDisputeGame();
dso.set(dso.permissionedDisputeGame.selector, emptyAddr); doo.set(doo.permissionedDisputeGame.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.permissionedDisputeGame(); doo.permissionedDisputeGame();
dso.set(dso.delayedWETHPermissionedGameProxy.selector, emptyAddr); doo.set(doo.delayedWETHPermissionedGameProxy.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.delayedWETHPermissionedGameProxy(); doo.delayedWETHPermissionedGameProxy();
dso.set(dso.delayedWETHPermissionlessGameProxy.selector, emptyAddr); doo.set(doo.delayedWETHPermissionlessGameProxy.selector, emptyAddr);
vm.expectRevert(expectedErr); vm.expectRevert(expectedErr);
dso.delayedWETHPermissionlessGameProxy(); doo.delayedWETHPermissionlessGameProxy();
} }
} }
...@@ -401,7 +401,7 @@ contract DeployOPChain_TestBase is Test { ...@@ -401,7 +401,7 @@ contract DeployOPChain_TestBase is Test {
} }
contract DeployOPChain_Test is DeployOPChain_TestBase { contract DeployOPChain_Test is DeployOPChain_TestBase {
function test_run_succeeds(DeployOPChainInput.Input memory _input) public { function testFuzz_run_succeeds(DeployOPChainInput.Input memory _input) public {
vm.assume(_input.roles.opChainProxyAdminOwner != address(0)); vm.assume(_input.roles.opChainProxyAdminOwner != address(0));
vm.assume(_input.roles.systemConfigOwner != address(0)); vm.assume(_input.roles.systemConfigOwner != address(0));
vm.assume(_input.roles.batcher != address(0)); vm.assume(_input.roles.batcher != address(0));
......
...@@ -206,7 +206,7 @@ contract DeploySuperchain_Test is Test { ...@@ -206,7 +206,7 @@ contract DeploySuperchain_Test is Test {
return keccak256(abi.encode(_seed, _i)); return keccak256(abi.encode(_seed, _i));
} }
function test_run_memory_succeeds(bytes32 _seed) public { function testFuzz_run_memory_succeeds(bytes32 _seed) public {
// Generate random input values from the seed. This doesn't give us the benefit of the forge // Generate random input values from the seed. This doesn't give us the benefit of the forge
// fuzzer's dictionary, but that's ok because we are just testing that values are set and // fuzzer's dictionary, but that's ok because we are just testing that values are set and
// passed correctly. // passed correctly.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment