Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
144a7750
Unverified
Commit
144a7750
authored
Sep 11, 2024
by
Matt Solomon
Committed by
GitHub
Sep 11, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
test: fix test and variable naming conventions (#11845)
parent
84b1cde3
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
341 additions
and
333 deletions
+341
-333
DeployImplementations.s.sol
...ges/contracts-bedrock/scripts/DeployImplementations.s.sol
+84
-84
DeployOPChain.s.sol
packages/contracts-bedrock/scripts/DeployOPChain.s.sol
+46
-46
DeploySuperchain.s.sol
packages/contracts-bedrock/scripts/DeploySuperchain.s.sol
+9
-1
DeployImplementations.t.sol
packages/contracts-bedrock/test/DeployImplementations.t.sol
+92
-92
DeployOPChain.t.sol
packages/contracts-bedrock/test/DeployOPChain.t.sol
+109
-109
DeploySuperchain.t.sol
packages/contracts-bedrock/test/DeploySuperchain.t.sol
+1
-1
No files found.
packages/contracts-bedrock/scripts/DeployImplementations.s.sol
View file @
144a7750
...
@@ -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 d
si, DeployImplementationsOutput ds
o) = etchIOContracts();
(DeployImplementationsInput d
ii, DeployImplementationsOutput di
o) = etchIOContracts();
d
s
i.loadInputFile(_infile);
d
i
i.loadInputFile(_infile);
run(d
si, ds
o);
run(d
ii, di
o);
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`
d
s
o.writeOutputFile(outfile);
d
i
o.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 d
si, DeployImplementationsOutput ds
o) = etchIOContracts();
(DeployImplementationsInput d
ii, DeployImplementationsOutput di
o) = etchIOContracts();
d
s
i.loadInput(_input);
d
i
i.loadInput(_input);
run(d
si, ds
o);
run(d
ii, di
o);
return d
s
o.output();
return d
i
o.output();
}
}
function run(DeployImplementationsInput _d
si, DeployImplementationsOutput _ds
o) public {
function run(DeployImplementationsInput _d
ii, DeployImplementationsOutput _di
o) public {
require(_d
s
i.inputSet(), "DeployImplementations: input not set");
require(_d
i
i.inputSet(), "DeployImplementations: input not set");
// Deploy the implementations.
// Deploy the implementations.
deploySystemConfigImpl(_d
si, _ds
o);
deploySystemConfigImpl(_d
ii, _di
o);
deployL1CrossDomainMessengerImpl(_d
si, _ds
o);
deployL1CrossDomainMessengerImpl(_d
ii, _di
o);
deployL1ERC721BridgeImpl(_d
si, _ds
o);
deployL1ERC721BridgeImpl(_d
ii, _di
o);
deployL1StandardBridgeImpl(_d
si, _ds
o);
deployL1StandardBridgeImpl(_d
ii, _di
o);
deployOptimismMintableERC20FactoryImpl(_d
si, _ds
o);
deployOptimismMintableERC20FactoryImpl(_d
ii, _di
o);
deployOptimismPortalImpl(_d
si, _ds
o);
deployOptimismPortalImpl(_d
ii, _di
o);
deployDelayedWETHImpl(_d
si, _ds
o);
deployDelayedWETHImpl(_d
ii, _di
o);
deployPreimageOracleSingleton(_d
si, _ds
o);
deployPreimageOracleSingleton(_d
ii, _di
o);
deployMipsSingleton(_d
si, _ds
o);
deployMipsSingleton(_d
ii, _di
o);
deployDisputeGameFactoryImpl(_d
si, _ds
o);
deployDisputeGameFactoryImpl(_d
ii, _di
o);
// Deploy the OP Stack Manager with the new implementations set.
// Deploy the OP Stack Manager with the new implementations set.
deployOPStackManager(_d
si, _ds
o);
deployOPStackManager(_d
ii, _di
o);
_d
s
o.checkOutput();
_d
i
o.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 _d
s
o
DeployImplementationsOutput _d
i
o
)
)
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(_d
s
o.systemConfigImpl()), SystemConfig.initialize.selector)
info: OPStackManager.Implementation(address(_d
i
o.systemConfigImpl()), SystemConfig.initialize.selector)
});
});
}
}
function createOPSMContract(
function createOPSMContract(
DeployImplementationsInput _d
s
i,
DeployImplementationsInput _d
i
i,
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 = _d
s
i.superchainConfigProxy();
SuperchainConfig superchainConfigProxy = _d
i
i.superchainConfigProxy();
ProtocolVersions protocolVersionsProxy = _d
s
i.protocolVersionsProxy();
ProtocolVersions protocolVersionsProxy = _d
i
i.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 _d
si, DeployImplementationsOutput _ds
o) public virtual {
function deployOPStackManager(DeployImplementationsInput _d
ii, DeployImplementationsOutput _di
o) public virtual {
string memory release = _d
s
i.release();
string memory release = _d
i
i.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(_d
si, _ds
o, blueprints);
OPStackManager opsm = createOPSMContract(_d
ii, _di
o, 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(_d
s
o.l1ERC721BridgeImpl()), L1ERC721Bridge.initialize.selector)
info: OPStackManager.Implementation(address(_d
i
o.l1ERC721BridgeImpl()), L1ERC721Bridge.initialize.selector)
});
});
setters[1] = OPStackManager.ImplementationSetter({
setters[1] = OPStackManager.ImplementationSetter({
name: "OptimismPortal",
name: "OptimismPortal",
info: OPStackManager.Implementation(address(_d
s
o.optimismPortalImpl()), OptimismPortal2.initialize.selector)
info: OPStackManager.Implementation(address(_d
i
o.optimismPortalImpl()), OptimismPortal2.initialize.selector)
});
});
setters[2] = opsmSystemConfigSetter(_d
si, _ds
o);
setters[2] = opsmSystemConfigSetter(_d
ii, _di
o);
setters[3] = OPStackManager.ImplementationSetter({
setters[3] = OPStackManager.ImplementationSetter({
name: "OptimismMintableERC20Factory",
name: "OptimismMintableERC20Factory",
info: OPStackManager.Implementation(
info: OPStackManager.Implementation(
address(_d
s
o.optimismMintableERC20FactoryImpl()), OptimismMintableERC20Factory.initialize.selector
address(_d
i
o.optimismMintableERC20FactoryImpl()), OptimismMintableERC20Factory.initialize.selector
)
)
});
});
setters[4] = OPStackManager.ImplementationSetter({
setters[4] = OPStackManager.ImplementationSetter({
name: "L1CrossDomainMessenger",
name: "L1CrossDomainMessenger",
info: OPStackManager.Implementation(
info: OPStackManager.Implementation(
address(_d
s
o.l1CrossDomainMessengerImpl()), L1CrossDomainMessenger.initialize.selector
address(_d
i
o.l1CrossDomainMessengerImpl()), L1CrossDomainMessenger.initialize.selector
)
)
});
});
setters[5] = OPStackManager.ImplementationSetter({
setters[5] = OPStackManager.ImplementationSetter({
name: "L1StandardBridge",
name: "L1StandardBridge",
info: OPStackManager.Implementation(address(_d
s
o.l1StandardBridgeImpl()), L1StandardBridge.initialize.selector)
info: OPStackManager.Implementation(address(_d
i
o.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");
_d
so.set(_ds
o.opsm.selector, address(opsm));
_d
io.set(_di
o.opsm.selector, address(opsm));
}
}
// --- Core Contracts ---
// --- Core Contracts ---
function deploySystemConfigImpl(DeployImplementationsInput, DeployImplementationsOutput _d
s
o) public virtual {
function deploySystemConfigImpl(DeployImplementationsInput, DeployImplementationsOutput _d
i
o) 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");
_d
so.set(_ds
o.systemConfigImpl.selector, address(systemConfigImpl));
_d
io.set(_di
o.systemConfigImpl.selector, address(systemConfigImpl));
}
}
function deployL1CrossDomainMessengerImpl(
function deployL1CrossDomainMessengerImpl(
DeployImplementationsInput,
DeployImplementationsInput,
DeployImplementationsOutput _d
s
o
DeployImplementationsOutput _d
i
o
)
)
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");
_d
so.set(_ds
o.l1CrossDomainMessengerImpl.selector, address(l1CrossDomainMessengerImpl));
_d
io.set(_di
o.l1CrossDomainMessengerImpl.selector, address(l1CrossDomainMessengerImpl));
}
}
function deployL1ERC721BridgeImpl(DeployImplementationsInput, DeployImplementationsOutput _d
s
o) public virtual {
function deployL1ERC721BridgeImpl(DeployImplementationsInput, DeployImplementationsOutput _d
i
o) 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");
_d
so.set(_ds
o.l1ERC721BridgeImpl.selector, address(l1ERC721BridgeImpl));
_d
io.set(_di
o.l1ERC721BridgeImpl.selector, address(l1ERC721BridgeImpl));
}
}
function deployL1StandardBridgeImpl(DeployImplementationsInput, DeployImplementationsOutput _d
s
o) public virtual {
function deployL1StandardBridgeImpl(DeployImplementationsInput, DeployImplementationsOutput _d
i
o) 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");
_d
so.set(_ds
o.l1StandardBridgeImpl.selector, address(l1StandardBridgeImpl));
_d
io.set(_di
o.l1StandardBridgeImpl.selector, address(l1StandardBridgeImpl));
}
}
function deployOptimismMintableERC20FactoryImpl(
function deployOptimismMintableERC20FactoryImpl(
DeployImplementationsInput,
DeployImplementationsInput,
DeployImplementationsOutput _d
s
o
DeployImplementationsOutput _d
i
o
)
)
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");
_d
so.set(_ds
o.optimismMintableERC20FactoryImpl.selector, address(optimismMintableERC20FactoryImpl));
_d
io.set(_di
o.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 _d
s
i,
DeployImplementationsInput _d
i
i,
DeployImplementationsOutput _d
s
o
DeployImplementationsOutput _d
i
o
)
)
public
public
virtual
virtual
{
{
uint256 proofMaturityDelaySeconds = _d
s
i.proofMaturityDelaySeconds();
uint256 proofMaturityDelaySeconds = _d
i
i.proofMaturityDelaySeconds();
uint256 disputeGameFinalityDelaySeconds = _d
s
i.disputeGameFinalityDelaySeconds();
uint256 disputeGameFinalityDelaySeconds = _d
i
i.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");
_d
so.set(_ds
o.optimismPortalImpl.selector, address(optimismPortalImpl));
_d
io.set(_di
o.optimismPortalImpl.selector, address(optimismPortalImpl));
}
}
function deployDelayedWETHImpl(DeployImplementationsInput _d
si, DeployImplementationsOutput _ds
o) public virtual {
function deployDelayedWETHImpl(DeployImplementationsInput _d
ii, DeployImplementationsOutput _di
o) public virtual {
uint256 withdrawalDelaySeconds = _d
s
i.withdrawalDelaySeconds();
uint256 withdrawalDelaySeconds = _d
i
i.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");
_d
so.set(_ds
o.delayedWETHImpl.selector, address(delayedWETHImpl));
_d
io.set(_di
o.delayedWETHImpl.selector, address(delayedWETHImpl));
}
}
function deployPreimageOracleSingleton(
function deployPreimageOracleSingleton(
DeployImplementationsInput _d
s
i,
DeployImplementationsInput _d
i
i,
DeployImplementationsOutput _d
s
o
DeployImplementationsOutput _d
i
o
)
)
public
public
virtual
virtual
{
{
uint256 minProposalSizeBytes = _d
s
i.minProposalSizeBytes();
uint256 minProposalSizeBytes = _d
i
i.minProposalSizeBytes();
uint256 challengePeriodSeconds = _d
s
i.challengePeriodSeconds();
uint256 challengePeriodSeconds = _d
i
i.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");
_d
so.set(_ds
o.preimageOracleSingleton.selector, address(preimageOracleSingleton));
_d
io.set(_di
o.preimageOracleSingleton.selector, address(preimageOracleSingleton));
}
}
function deployMipsSingleton(DeployImplementationsInput, DeployImplementationsOutput _d
s
o) public virtual {
function deployMipsSingleton(DeployImplementationsInput, DeployImplementationsOutput _d
i
o) public virtual {
IPreimageOracle preimageOracle = IPreimageOracle(_d
s
o.preimageOracleSingleton());
IPreimageOracle preimageOracle = IPreimageOracle(_d
i
o.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");
_d
so.set(_ds
o.mipsSingleton.selector, address(mipsSingleton));
_d
io.set(_di
o.mipsSingleton.selector, address(mipsSingleton));
}
}
function deployDisputeGameFactoryImpl(
function deployDisputeGameFactoryImpl(
DeployImplementationsInput,
DeployImplementationsInput,
DeployImplementationsOutput _d
s
o
DeployImplementationsOutput _d
i
o
)
)
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");
_d
so.set(_ds
o.disputeGameFactoryImpl.selector, address(disputeGameFactoryImpl));
_d
io.set(_di
o.disputeGameFactoryImpl.selector, address(disputeGameFactoryImpl));
}
}
// -------- Utilities --------
// -------- Utilities --------
function etchIOContracts() internal returns (DeployImplementationsInput d
si_, DeployImplementationsOutput ds
o_) {
function etchIOContracts() internal returns (DeployImplementationsInput d
ii_, DeployImplementationsOutput di
o_) {
(d
si_, ds
o_) = getIOContracts();
(d
ii_, di
o_) = getIOContracts();
vm.etch(address(d
s
i_), type(DeployImplementationsInput).runtimeCode);
vm.etch(address(d
i
i_), type(DeployImplementationsInput).runtimeCode);
vm.etch(address(d
s
o_), type(DeployImplementationsOutput).runtimeCode);
vm.etch(address(d
i
o_), type(DeployImplementationsOutput).runtimeCode);
}
}
function getIOContracts() public view returns (DeployImplementationsInput d
si_, DeployImplementationsOutput ds
o_) {
function getIOContracts() public view returns (DeployImplementationsInput d
ii_, DeployImplementationsOutput di
o_) {
d
s
i_ = DeployImplementationsInput(DeployUtils.toIOAddress(msg.sender, "optimism.DeployImplementationsInput"));
d
i
i_ = DeployImplementationsInput(DeployUtils.toIOAddress(msg.sender, "optimism.DeployImplementationsInput"));
d
s
o_ = DeployImplementationsOutput(DeployUtils.toIOAddress(msg.sender, "optimism.DeployImplementationsOutput"));
d
i
o_ = 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 _d
s
i,
DeployImplementationsInput _d
i
i,
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 = _d
s
i.superchainConfigProxy();
SuperchainConfig superchainConfigProxy = _d
i
i.superchainConfigProxy();
ProtocolVersions protocolVersionsProxy = _d
s
i.protocolVersionsProxy();
ProtocolVersions protocolVersionsProxy = _d
i
i.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 _d
s
i,
DeployImplementationsInput _d
i
i,
DeployImplementationsOutput _d
s
o
DeployImplementationsOutput _d
i
o
)
)
public
public
override
override
{
{
uint256 proofMaturityDelaySeconds = _d
s
i.proofMaturityDelaySeconds();
uint256 proofMaturityDelaySeconds = _d
i
i.proofMaturityDelaySeconds();
uint256 disputeGameFinalityDelaySeconds = _d
s
i.disputeGameFinalityDelaySeconds();
uint256 disputeGameFinalityDelaySeconds = _d
i
i.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");
_d
so.set(_ds
o.optimismPortalImpl.selector, address(optimismPortalImpl));
_d
io.set(_di
o.optimismPortalImpl.selector, address(optimismPortalImpl));
}
}
function deploySystemConfigImpl(DeployImplementationsInput, DeployImplementationsOutput _d
s
o) public override {
function deploySystemConfigImpl(DeployImplementationsInput, DeployImplementationsOutput _d
i
o) 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");
_d
so.set(_ds
o.systemConfigImpl.selector, address(systemConfigImpl));
_d
io.set(_di
o.systemConfigImpl.selector, address(systemConfigImpl));
}
}
function opsmSystemConfigSetter(
function opsmSystemConfigSetter(
DeployImplementationsInput,
DeployImplementationsInput,
DeployImplementationsOutput _d
s
o
DeployImplementationsOutput _d
i
o
)
)
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(_d
s
o.systemConfigImpl()), SystemConfigInterop.initialize.selector)
info: OPStackManager.Implementation(address(_d
i
o.systemConfigImpl()), SystemConfigInterop.initialize.selector)
});
});
}
}
}
}
packages/contracts-bedrock/scripts/DeployOPChain.s.sol
View file @
144a7750
...
@@ -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 d
si, DeployOPChainOutput ds
o) = etchIOContracts();
(DeployOPChainInput d
oi, DeployOPChainOutput do
o) = etchIOContracts();
d
s
i.loadInputFile(_infile);
d
o
i.loadInputFile(_infile);
run(d
si, ds
o);
run(d
oi, do
o);
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`
d
s
o.writeOutputFile(outfile);
d
o
o.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 d
si, DeployOPChainOutput ds
o) = etchIOContracts();
(DeployOPChainInput d
oi, DeployOPChainOutput do
o) = etchIOContracts();
d
s
i.loadInput(_input);
d
o
i.loadInput(_input);
run(d
si, ds
o);
run(d
oi, do
o);
return d
s
o.output();
return d
o
o.output();
}
}
function run(DeployOPChainInput _d
si, DeployOPChainOutput _ds
o) public {
function run(DeployOPChainInput _d
oi, DeployOPChainOutput _do
o) public {
require(_d
s
i.inputSet(), "DeployOPChain: input not set");
require(_d
o
i.inputSet(), "DeployOPChain: input not set");
OPStackManager opsm = _d
s
i.opsm();
OPStackManager opsm = _d
o
i.opsm();
OPStackManager.Roles memory roles = OPStackManager.Roles({
OPStackManager.Roles memory roles = OPStackManager.Roles({
opChainProxyAdminOwner: _d
s
i.opChainProxyAdminOwner(),
opChainProxyAdminOwner: _d
o
i.opChainProxyAdminOwner(),
systemConfigOwner: _d
s
i.systemConfigOwner(),
systemConfigOwner: _d
o
i.systemConfigOwner(),
batcher: _d
s
i.batcher(),
batcher: _d
o
i.batcher(),
unsafeBlockSigner: _d
s
i.unsafeBlockSigner(),
unsafeBlockSigner: _d
o
i.unsafeBlockSigner(),
proposer: _d
s
i.proposer(),
proposer: _d
o
i.proposer(),
challenger: _d
s
i.challenger()
challenger: _d
o
i.challenger()
});
});
OPStackManager.DeployInput memory deployInput = OPStackManager.DeployInput({
OPStackManager.DeployInput memory deployInput = OPStackManager.DeployInput({
roles: roles,
roles: roles,
basefeeScalar: _d
s
i.basefeeScalar(),
basefeeScalar: _d
o
i.basefeeScalar(),
blobBasefeeScalar: _d
s
i.blobBaseFeeScalar(),
blobBasefeeScalar: _d
o
i.blobBaseFeeScalar(),
l2ChainId: _d
s
i.l2ChainId()
l2ChainId: _d
o
i.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");
_d
so.set(_ds
o.opChainProxyAdmin.selector, address(deployOutput.opChainProxyAdmin));
_d
oo.set(_do
o.opChainProxyAdmin.selector, address(deployOutput.opChainProxyAdmin));
_d
so.set(_ds
o.addressManager.selector, address(deployOutput.addressManager));
_d
oo.set(_do
o.addressManager.selector, address(deployOutput.addressManager));
_d
so.set(_ds
o.l1ERC721BridgeProxy.selector, address(deployOutput.l1ERC721BridgeProxy));
_d
oo.set(_do
o.l1ERC721BridgeProxy.selector, address(deployOutput.l1ERC721BridgeProxy));
_d
so.set(_ds
o.systemConfigProxy.selector, address(deployOutput.systemConfigProxy));
_d
oo.set(_do
o.systemConfigProxy.selector, address(deployOutput.systemConfigProxy));
_d
s
o.set(
_d
o
o.set(
_d
s
o.optimismMintableERC20FactoryProxy.selector, address(deployOutput.optimismMintableERC20FactoryProxy)
_d
o
o.optimismMintableERC20FactoryProxy.selector, address(deployOutput.optimismMintableERC20FactoryProxy)
);
);
_d
so.set(_ds
o.l1StandardBridgeProxy.selector, address(deployOutput.l1StandardBridgeProxy));
_d
oo.set(_do
o.l1StandardBridgeProxy.selector, address(deployOutput.l1StandardBridgeProxy));
_d
so.set(_ds
o.l1CrossDomainMessengerProxy.selector, address(deployOutput.l1CrossDomainMessengerProxy));
_d
oo.set(_do
o.l1CrossDomainMessengerProxy.selector, address(deployOutput.l1CrossDomainMessengerProxy));
_d
so.set(_ds
o.optimismPortalProxy.selector, address(deployOutput.optimismPortalProxy));
_d
oo.set(_do
o.optimismPortalProxy.selector, address(deployOutput.optimismPortalProxy));
_d
so.set(_ds
o.disputeGameFactoryProxy.selector, address(deployOutput.disputeGameFactoryProxy));
_d
oo.set(_do
o.disputeGameFactoryProxy.selector, address(deployOutput.disputeGameFactoryProxy));
_d
so.set(_ds
o.disputeGameFactoryImpl.selector, address(deployOutput.disputeGameFactoryImpl));
_d
oo.set(_do
o.disputeGameFactoryImpl.selector, address(deployOutput.disputeGameFactoryImpl));
_d
so.set(_ds
o.anchorStateRegistryProxy.selector, address(deployOutput.anchorStateRegistryProxy));
_d
oo.set(_do
o.anchorStateRegistryProxy.selector, address(deployOutput.anchorStateRegistryProxy));
_d
so.set(_ds
o.anchorStateRegistryImpl.selector, address(deployOutput.anchorStateRegistryImpl));
_d
oo.set(_do
o.anchorStateRegistryImpl.selector, address(deployOutput.anchorStateRegistryImpl));
_d
so.set(_ds
o.faultDisputeGame.selector, address(deployOutput.faultDisputeGame));
_d
oo.set(_do
o.faultDisputeGame.selector, address(deployOutput.faultDisputeGame));
_d
so.set(_ds
o.permissionedDisputeGame.selector, address(deployOutput.permissionedDisputeGame));
_d
oo.set(_do
o.permissionedDisputeGame.selector, address(deployOutput.permissionedDisputeGame));
_d
so.set(_ds
o.delayedWETHPermissionedGameProxy.selector, address(deployOutput.delayedWETHPermissionedGameProxy));
_d
oo.set(_do
o.delayedWETHPermissionedGameProxy.selector, address(deployOutput.delayedWETHPermissionedGameProxy));
_d
s
o.set(
_d
o
o.set(
_d
s
o.delayedWETHPermissionlessGameProxy.selector, address(deployOutput.delayedWETHPermissionlessGameProxy)
_d
o
o.delayedWETHPermissionlessGameProxy.selector, address(deployOutput.delayedWETHPermissionlessGameProxy)
);
);
_d
s
o.checkOutput();
_d
o
o.checkOutput();
}
}
// -------- Utilities --------
// -------- Utilities --------
function etchIOContracts() internal returns (DeployOPChainInput d
si_, DeployOPChainOutput ds
o_) {
function etchIOContracts() internal returns (DeployOPChainInput d
oi_, DeployOPChainOutput do
o_) {
(d
si_, ds
o_) = getIOContracts();
(d
oi_, do
o_) = getIOContracts();
vm.etch(address(d
s
i_), type(DeployOPChainInput).runtimeCode);
vm.etch(address(d
o
i_), type(DeployOPChainInput).runtimeCode);
vm.etch(address(d
s
o_), type(DeployOPChainOutput).runtimeCode);
vm.etch(address(d
o
o_), type(DeployOPChainOutput).runtimeCode);
}
}
function getIOContracts() public view returns (DeployOPChainInput d
si_, DeployOPChainOutput ds
o_) {
function getIOContracts() public view returns (DeployOPChainInput d
oi_, DeployOPChainOutput do
o_) {
d
s
i_ = DeployOPChainInput(DeployUtils.toIOAddress(msg.sender, "optimism.DeployOPChainInput"));
d
o
i_ = DeployOPChainInput(DeployUtils.toIOAddress(msg.sender, "optimism.DeployOPChainInput"));
d
s
o_ = DeployOPChainOutput(DeployUtils.toIOAddress(msg.sender, "optimism.DeployOPChainOutput"));
d
o
o_ = DeployOPChainOutput(DeployUtils.toIOAddress(msg.sender, "optimism.DeployOPChainOutput"));
}
}
}
}
packages/contracts-bedrock/scripts/DeploySuperchain.s.sol
View file @
144a7750
...
@@ -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;
...
...
packages/contracts-bedrock/test/DeployImplementations.t.sol
View file @
144a7750
...
@@ -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 d
s
i;
DeployImplementationsInput d
i
i;
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 {
d
s
i = new DeployImplementationsInput();
d
i
i = new DeployImplementationsInput();
}
}
function test_loadInput_succeeds() public {
function test_loadInput_succeeds() public {
d
s
i.loadInput(input);
d
i
i.loadInput(input);
assertTrue(d
s
i.inputSet(), "100");
assertTrue(d
i
i.inputSet(), "100");
// Compare the test input struct to the getter methods.
// Compare the test input struct to the getter methods.
assertEq(input.withdrawalDelaySeconds, d
s
i.withdrawalDelaySeconds(), "200");
assertEq(input.withdrawalDelaySeconds, d
i
i.withdrawalDelaySeconds(), "200");
assertEq(input.minProposalSizeBytes, d
s
i.minProposalSizeBytes(), "300");
assertEq(input.minProposalSizeBytes, d
i
i.minProposalSizeBytes(), "300");
assertEq(input.challengePeriodSeconds, d
s
i.challengePeriodSeconds(), "400");
assertEq(input.challengePeriodSeconds, d
i
i.challengePeriodSeconds(), "400");
assertEq(input.proofMaturityDelaySeconds, d
s
i.proofMaturityDelaySeconds(), "500");
assertEq(input.proofMaturityDelaySeconds, d
i
i.proofMaturityDelaySeconds(), "500");
assertEq(input.disputeGameFinalityDelaySeconds, d
s
i.disputeGameFinalityDelaySeconds(), "600");
assertEq(input.disputeGameFinalityDelaySeconds, d
i
i.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(d
s
i.input())), "800");
assertEq(keccak256(abi.encode(input)), keccak256(abi.encode(d
i
i.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);
d
s
i.withdrawalDelaySeconds();
d
i
i.withdrawalDelaySeconds();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
i.minProposalSizeBytes();
d
i
i.minProposalSizeBytes();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
i.challengePeriodSeconds();
d
i
i.challengePeriodSeconds();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
i.proofMaturityDelaySeconds();
d
i
i.proofMaturityDelaySeconds();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
i.disputeGameFinalityDelaySeconds();
d
i
i.disputeGameFinalityDelaySeconds();
}
}
}
}
contract DeployImplementationsOutput_Test is Test {
contract DeployImplementationsOutput_Test is Test {
DeployImplementationsOutput d
s
o;
DeployImplementationsOutput d
i
o;
function setUp() public {
function setUp() public {
d
s
o = new DeployImplementationsOutput();
d
i
o = 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");
d
so.set(ds
o.opsm.selector, address(output.opsm));
d
io.set(di
o.opsm.selector, address(output.opsm));
d
so.set(ds
o.optimismPortalImpl.selector, address(output.optimismPortalImpl));
d
io.set(di
o.optimismPortalImpl.selector, address(output.optimismPortalImpl));
d
so.set(ds
o.delayedWETHImpl.selector, address(output.delayedWETHImpl));
d
io.set(di
o.delayedWETHImpl.selector, address(output.delayedWETHImpl));
d
so.set(ds
o.preimageOracleSingleton.selector, address(output.preimageOracleSingleton));
d
io.set(di
o.preimageOracleSingleton.selector, address(output.preimageOracleSingleton));
d
so.set(ds
o.mipsSingleton.selector, address(output.mipsSingleton));
d
io.set(di
o.mipsSingleton.selector, address(output.mipsSingleton));
d
so.set(ds
o.systemConfigImpl.selector, address(output.systemConfigImpl));
d
io.set(di
o.systemConfigImpl.selector, address(output.systemConfigImpl));
d
so.set(ds
o.l1CrossDomainMessengerImpl.selector, address(output.l1CrossDomainMessengerImpl));
d
io.set(di
o.l1CrossDomainMessengerImpl.selector, address(output.l1CrossDomainMessengerImpl));
d
so.set(ds
o.l1ERC721BridgeImpl.selector, address(output.l1ERC721BridgeImpl));
d
io.set(di
o.l1ERC721BridgeImpl.selector, address(output.l1ERC721BridgeImpl));
d
so.set(ds
o.l1StandardBridgeImpl.selector, address(output.l1StandardBridgeImpl));
d
io.set(di
o.l1StandardBridgeImpl.selector, address(output.l1StandardBridgeImpl));
d
so.set(ds
o.optimismMintableERC20FactoryImpl.selector, address(output.optimismMintableERC20FactoryImpl));
d
io.set(di
o.optimismMintableERC20FactoryImpl.selector, address(output.optimismMintableERC20FactoryImpl));
d
so.set(ds
o.disputeGameFactoryImpl.selector, address(output.disputeGameFactoryImpl));
d
io.set(di
o.disputeGameFactoryImpl.selector, address(output.disputeGameFactoryImpl));
assertEq(address(output.opsm), address(d
s
o.opsm()), "50");
assertEq(address(output.opsm), address(d
i
o.opsm()), "50");
assertEq(address(output.optimismPortalImpl), address(d
s
o.optimismPortalImpl()), "100");
assertEq(address(output.optimismPortalImpl), address(d
i
o.optimismPortalImpl()), "100");
assertEq(address(output.delayedWETHImpl), address(d
s
o.delayedWETHImpl()), "200");
assertEq(address(output.delayedWETHImpl), address(d
i
o.delayedWETHImpl()), "200");
assertEq(address(output.preimageOracleSingleton), address(d
s
o.preimageOracleSingleton()), "300");
assertEq(address(output.preimageOracleSingleton), address(d
i
o.preimageOracleSingleton()), "300");
assertEq(address(output.mipsSingleton), address(d
s
o.mipsSingleton()), "400");
assertEq(address(output.mipsSingleton), address(d
i
o.mipsSingleton()), "400");
assertEq(address(output.systemConfigImpl), address(d
s
o.systemConfigImpl()), "500");
assertEq(address(output.systemConfigImpl), address(d
i
o.systemConfigImpl()), "500");
assertEq(address(output.l1CrossDomainMessengerImpl), address(d
s
o.l1CrossDomainMessengerImpl()), "600");
assertEq(address(output.l1CrossDomainMessengerImpl), address(d
i
o.l1CrossDomainMessengerImpl()), "600");
assertEq(address(output.l1ERC721BridgeImpl), address(d
s
o.l1ERC721BridgeImpl()), "700");
assertEq(address(output.l1ERC721BridgeImpl), address(d
i
o.l1ERC721BridgeImpl()), "700");
assertEq(address(output.l1StandardBridgeImpl), address(d
s
o.l1StandardBridgeImpl()), "800");
assertEq(address(output.l1StandardBridgeImpl), address(d
i
o.l1StandardBridgeImpl()), "800");
assertEq(
assertEq(
address(output.optimismMintableERC20FactoryImpl), address(d
s
o.optimismMintableERC20FactoryImpl()), "900"
address(output.optimismMintableERC20FactoryImpl), address(d
i
o.optimismMintableERC20FactoryImpl()), "900"
);
);
assertEq(address(output.disputeGameFactoryImpl), address(d
s
o.disputeGameFactoryImpl()), "950");
assertEq(address(output.disputeGameFactoryImpl), address(d
i
o.disputeGameFactoryImpl()), "950");
assertEq(keccak256(abi.encode(output)), keccak256(abi.encode(d
s
o.output())), "1000");
assertEq(keccak256(abi.encode(output)), keccak256(abi.encode(d
i
o.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);
d
s
o.optimismPortalImpl();
d
i
o.optimismPortalImpl();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.delayedWETHImpl();
d
i
o.delayedWETHImpl();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.preimageOracleSingleton();
d
i
o.preimageOracleSingleton();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.mipsSingleton();
d
i
o.mipsSingleton();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.systemConfigImpl();
d
i
o.systemConfigImpl();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.l1CrossDomainMessengerImpl();
d
i
o.l1CrossDomainMessengerImpl();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.l1ERC721BridgeImpl();
d
i
o.l1ERC721BridgeImpl();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.l1StandardBridgeImpl();
d
i
o.l1StandardBridgeImpl();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.optimismMintableERC20FactoryImpl();
d
i
o.optimismMintableERC20FactoryImpl();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.disputeGameFactoryImpl();
d
i
o.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)));
d
so.set(ds
o.optimismPortalImpl.selector, emptyAddr);
d
io.set(di
o.optimismPortalImpl.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.optimismPortalImpl();
d
i
o.optimismPortalImpl();
d
so.set(ds
o.delayedWETHImpl.selector, emptyAddr);
d
io.set(di
o.delayedWETHImpl.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.delayedWETHImpl();
d
i
o.delayedWETHImpl();
d
so.set(ds
o.preimageOracleSingleton.selector, emptyAddr);
d
io.set(di
o.preimageOracleSingleton.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.preimageOracleSingleton();
d
i
o.preimageOracleSingleton();
d
so.set(ds
o.mipsSingleton.selector, emptyAddr);
d
io.set(di
o.mipsSingleton.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.mipsSingleton();
d
i
o.mipsSingleton();
d
so.set(ds
o.systemConfigImpl.selector, emptyAddr);
d
io.set(di
o.systemConfigImpl.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.systemConfigImpl();
d
i
o.systemConfigImpl();
d
so.set(ds
o.l1CrossDomainMessengerImpl.selector, emptyAddr);
d
io.set(di
o.l1CrossDomainMessengerImpl.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.l1CrossDomainMessengerImpl();
d
i
o.l1CrossDomainMessengerImpl();
d
so.set(ds
o.l1ERC721BridgeImpl.selector, emptyAddr);
d
io.set(di
o.l1ERC721BridgeImpl.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.l1ERC721BridgeImpl();
d
i
o.l1ERC721BridgeImpl();
d
so.set(ds
o.l1StandardBridgeImpl.selector, emptyAddr);
d
io.set(di
o.l1StandardBridgeImpl.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.l1StandardBridgeImpl();
d
i
o.l1StandardBridgeImpl();
d
so.set(ds
o.optimismMintableERC20FactoryImpl.selector, emptyAddr);
d
io.set(di
o.optimismMintableERC20FactoryImpl.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.optimismMintableERC20FactoryImpl();
d
i
o.optimismMintableERC20FactoryImpl();
}
}
}
}
contract DeployImplementations_Test is Test {
contract DeployImplementations_Test is Test {
DeployImplementations deployImplementations;
DeployImplementations deployImplementations;
DeployImplementationsInput d
s
i;
DeployImplementationsInput d
i
i;
DeployImplementationsOutput d
s
o;
DeployImplementationsOutput d
i
o;
// 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();
(d
si, ds
o) = deployImplementations.getIOContracts();
(d
ii, di
o) = 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 test
Fuzz
_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, d
s
i.withdrawalDelaySeconds(), "100");
assertEq(_input.withdrawalDelaySeconds, d
i
i.withdrawalDelaySeconds(), "100");
assertEq(_input.minProposalSizeBytes, d
s
i.minProposalSizeBytes(), "200");
assertEq(_input.minProposalSizeBytes, d
i
i.minProposalSizeBytes(), "200");
assertEq(_input.challengePeriodSeconds, d
s
i.challengePeriodSeconds(), "300");
assertEq(_input.challengePeriodSeconds, d
i
i.challengePeriodSeconds(), "300");
assertEq(_input.proofMaturityDelaySeconds, d
s
i.proofMaturityDelaySeconds(), "400");
assertEq(_input.proofMaturityDelaySeconds, d
i
i.proofMaturityDelaySeconds(), "400");
assertEq(_input.disputeGameFinalityDelaySeconds, d
s
i.disputeGameFinalityDelaySeconds(), "500");
assertEq(_input.disputeGameFinalityDelaySeconds, d
i
i.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(d
s
o.optimismPortalImpl()), "600");
assertEq(address(output.optimismPortalImpl), address(d
i
o.optimismPortalImpl()), "600");
assertEq(address(output.delayedWETHImpl), address(d
s
o.delayedWETHImpl()), "700");
assertEq(address(output.delayedWETHImpl), address(d
i
o.delayedWETHImpl()), "700");
assertEq(address(output.preimageOracleSingleton), address(d
s
o.preimageOracleSingleton()), "800");
assertEq(address(output.preimageOracleSingleton), address(d
i
o.preimageOracleSingleton()), "800");
assertEq(address(output.mipsSingleton), address(d
s
o.mipsSingleton()), "900");
assertEq(address(output.mipsSingleton), address(d
i
o.mipsSingleton()), "900");
assertEq(address(output.systemConfigImpl), address(d
s
o.systemConfigImpl()), "1000");
assertEq(address(output.systemConfigImpl), address(d
i
o.systemConfigImpl()), "1000");
assertEq(address(output.l1CrossDomainMessengerImpl), address(d
s
o.l1CrossDomainMessengerImpl()), "1100");
assertEq(address(output.l1CrossDomainMessengerImpl), address(d
i
o.l1CrossDomainMessengerImpl()), "1100");
assertEq(address(output.l1ERC721BridgeImpl), address(d
s
o.l1ERC721BridgeImpl()), "1200");
assertEq(address(output.l1ERC721BridgeImpl), address(d
i
o.l1ERC721BridgeImpl()), "1200");
assertEq(address(output.l1StandardBridgeImpl), address(d
s
o.l1StandardBridgeImpl()), "1300");
assertEq(address(output.l1StandardBridgeImpl), address(d
i
o.l1StandardBridgeImpl()), "1300");
assertEq(
assertEq(
address(output.optimismMintableERC20FactoryImpl), address(d
s
o.optimismMintableERC20FactoryImpl()), "1400"
address(output.optimismMintableERC20FactoryImpl), address(d
i
o.optimismMintableERC20FactoryImpl()), "1400"
);
);
assertEq(address(output.disputeGameFactoryImpl), address(d
s
o.disputeGameFactoryImpl()), "1450");
assertEq(address(output.disputeGameFactoryImpl), address(d
i
o.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(d
s
i).input())), "1500");
assertEq(keccak256(abi.encode(_input)), keccak256(abi.encode(DeployImplementationsInput(d
i
i).input())), "1500");
assertEq(
assertEq(
keccak256(abi.encode(output)), keccak256(abi.encode(DeployImplementationsOutput(d
s
o).output())), "1600"
keccak256(abi.encode(output)), keccak256(abi.encode(DeployImplementationsOutput(d
i
o).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.
d
s
o.checkOutput();
d
i
o.checkOutput();
}
}
function test_run_largeChallengePeriodSeconds_reverts(uint256 _challengePeriodSeconds) public {
function test
Fuzz
_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);
...
...
packages/contracts-bedrock/test/DeployOPChain.t.sol
View file @
144a7750
...
@@ -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 d
s
i;
DeployOPChainInput d
o
i;
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 {
d
s
i = new DeployOPChainInput();
d
o
i = new DeployOPChainInput();
}
}
function test_loadInput_succeeds() public {
function test_loadInput_succeeds() public {
d
s
i.loadInput(input);
d
o
i.loadInput(input);
assertTrue(d
s
i.inputSet(), "100");
assertTrue(d
o
i.inputSet(), "100");
// Compare the test input struct to the getter methods.
// Compare the test input struct to the getter methods.
assertEq(input.roles.opChainProxyAdminOwner, d
s
i.opChainProxyAdminOwner(), "200");
assertEq(input.roles.opChainProxyAdminOwner, d
o
i.opChainProxyAdminOwner(), "200");
assertEq(input.roles.systemConfigOwner, d
s
i.systemConfigOwner(), "300");
assertEq(input.roles.systemConfigOwner, d
o
i.systemConfigOwner(), "300");
assertEq(input.roles.batcher, d
s
i.batcher(), "400");
assertEq(input.roles.batcher, d
o
i.batcher(), "400");
assertEq(input.roles.unsafeBlockSigner, d
s
i.unsafeBlockSigner(), "500");
assertEq(input.roles.unsafeBlockSigner, d
o
i.unsafeBlockSigner(), "500");
assertEq(input.roles.proposer, d
s
i.proposer(), "600");
assertEq(input.roles.proposer, d
o
i.proposer(), "600");
assertEq(input.roles.challenger, d
s
i.challenger(), "700");
assertEq(input.roles.challenger, d
o
i.challenger(), "700");
assertEq(input.basefeeScalar, d
s
i.basefeeScalar(), "800");
assertEq(input.basefeeScalar, d
o
i.basefeeScalar(), "800");
assertEq(input.blobBaseFeeScalar, d
s
i.blobBaseFeeScalar(), "900");
assertEq(input.blobBaseFeeScalar, d
o
i.blobBaseFeeScalar(), "900");
assertEq(input.l2ChainId, d
s
i.l2ChainId(), "1000");
assertEq(input.l2ChainId, d
o
i.l2ChainId(), "1000");
assertEq(address(input.opsm), address(d
s
i.opsm()), "1100");
assertEq(address(input.opsm), address(d
o
i.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(d
s
i.input())), "1200");
assertEq(keccak256(abi.encode(input)), keccak256(abi.encode(d
o
i.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);
d
s
i.opChainProxyAdminOwner();
d
o
i.opChainProxyAdminOwner();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
i.systemConfigOwner();
d
o
i.systemConfigOwner();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
i.batcher();
d
o
i.batcher();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
i.unsafeBlockSigner();
d
o
i.unsafeBlockSigner();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
i.proposer();
d
o
i.proposer();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
i.challenger();
d
o
i.challenger();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
i.basefeeScalar();
d
o
i.basefeeScalar();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
i.blobBaseFeeScalar();
d
o
i.blobBaseFeeScalar();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
i.l2ChainId();
d
o
i.l2ChainId();
}
}
}
}
contract DeployOPChainOutput_Test is Test {
contract DeployOPChainOutput_Test is Test {
DeployOPChainOutput d
s
o;
DeployOPChainOutput d
o
o;
function setUp() public {
function setUp() public {
d
s
o = new DeployOPChainOutput();
d
o
o = 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");
d
so.set(ds
o.opChainProxyAdmin.selector, address(output.opChainProxyAdmin));
d
oo.set(do
o.opChainProxyAdmin.selector, address(output.opChainProxyAdmin));
d
so.set(ds
o.addressManager.selector, address(output.addressManager));
d
oo.set(do
o.addressManager.selector, address(output.addressManager));
d
so.set(ds
o.l1ERC721BridgeProxy.selector, address(output.l1ERC721BridgeProxy));
d
oo.set(do
o.l1ERC721BridgeProxy.selector, address(output.l1ERC721BridgeProxy));
d
so.set(ds
o.systemConfigProxy.selector, address(output.systemConfigProxy));
d
oo.set(do
o.systemConfigProxy.selector, address(output.systemConfigProxy));
d
so.set(ds
o.optimismMintableERC20FactoryProxy.selector, address(output.optimismMintableERC20FactoryProxy));
d
oo.set(do
o.optimismMintableERC20FactoryProxy.selector, address(output.optimismMintableERC20FactoryProxy));
d
so.set(ds
o.l1StandardBridgeProxy.selector, address(output.l1StandardBridgeProxy));
d
oo.set(do
o.l1StandardBridgeProxy.selector, address(output.l1StandardBridgeProxy));
d
so.set(ds
o.l1CrossDomainMessengerProxy.selector, address(output.l1CrossDomainMessengerProxy));
d
oo.set(do
o.l1CrossDomainMessengerProxy.selector, address(output.l1CrossDomainMessengerProxy));
d
so.set(ds
o.optimismPortalProxy.selector, address(output.optimismPortalProxy));
d
oo.set(do
o.optimismPortalProxy.selector, address(output.optimismPortalProxy));
d
so.set(ds
o.disputeGameFactoryProxy.selector, address(output.disputeGameFactoryProxy));
d
oo.set(do
o.disputeGameFactoryProxy.selector, address(output.disputeGameFactoryProxy));
d
so.set(ds
o.disputeGameFactoryImpl.selector, address(output.disputeGameFactoryImpl));
d
oo.set(do
o.disputeGameFactoryImpl.selector, address(output.disputeGameFactoryImpl));
d
so.set(ds
o.anchorStateRegistryProxy.selector, address(output.anchorStateRegistryProxy));
d
oo.set(do
o.anchorStateRegistryProxy.selector, address(output.anchorStateRegistryProxy));
d
so.set(ds
o.anchorStateRegistryImpl.selector, address(output.anchorStateRegistryImpl));
d
oo.set(do
o.anchorStateRegistryImpl.selector, address(output.anchorStateRegistryImpl));
d
so.set(ds
o.faultDisputeGame.selector, address(output.faultDisputeGame));
d
oo.set(do
o.faultDisputeGame.selector, address(output.faultDisputeGame));
d
so.set(ds
o.permissionedDisputeGame.selector, address(output.permissionedDisputeGame));
d
oo.set(do
o.permissionedDisputeGame.selector, address(output.permissionedDisputeGame));
d
so.set(ds
o.delayedWETHPermissionedGameProxy.selector, address(output.delayedWETHPermissionedGameProxy));
d
oo.set(do
o.delayedWETHPermissionedGameProxy.selector, address(output.delayedWETHPermissionedGameProxy));
d
so.set(ds
o.delayedWETHPermissionlessGameProxy.selector, address(output.delayedWETHPermissionlessGameProxy));
d
oo.set(do
o.delayedWETHPermissionlessGameProxy.selector, address(output.delayedWETHPermissionlessGameProxy));
assertEq(address(output.opChainProxyAdmin), address(d
s
o.opChainProxyAdmin()), "100");
assertEq(address(output.opChainProxyAdmin), address(d
o
o.opChainProxyAdmin()), "100");
assertEq(address(output.addressManager), address(d
s
o.addressManager()), "200");
assertEq(address(output.addressManager), address(d
o
o.addressManager()), "200");
assertEq(address(output.l1ERC721BridgeProxy), address(d
s
o.l1ERC721BridgeProxy()), "300");
assertEq(address(output.l1ERC721BridgeProxy), address(d
o
o.l1ERC721BridgeProxy()), "300");
assertEq(address(output.systemConfigProxy), address(d
s
o.systemConfigProxy()), "400");
assertEq(address(output.systemConfigProxy), address(d
o
o.systemConfigProxy()), "400");
assertEq(
assertEq(
address(output.optimismMintableERC20FactoryProxy), address(d
s
o.optimismMintableERC20FactoryProxy()), "500"
address(output.optimismMintableERC20FactoryProxy), address(d
o
o.optimismMintableERC20FactoryProxy()), "500"
);
);
assertEq(address(output.l1StandardBridgeProxy), address(d
s
o.l1StandardBridgeProxy()), "600");
assertEq(address(output.l1StandardBridgeProxy), address(d
o
o.l1StandardBridgeProxy()), "600");
assertEq(address(output.l1CrossDomainMessengerProxy), address(d
s
o.l1CrossDomainMessengerProxy()), "700");
assertEq(address(output.l1CrossDomainMessengerProxy), address(d
o
o.l1CrossDomainMessengerProxy()), "700");
assertEq(address(output.optimismPortalProxy), address(d
s
o.optimismPortalProxy()), "800");
assertEq(address(output.optimismPortalProxy), address(d
o
o.optimismPortalProxy()), "800");
assertEq(address(output.disputeGameFactoryProxy), address(d
s
o.disputeGameFactoryProxy()), "900");
assertEq(address(output.disputeGameFactoryProxy), address(d
o
o.disputeGameFactoryProxy()), "900");
assertEq(address(output.disputeGameFactoryImpl), address(d
s
o.disputeGameFactoryImpl()), "1000");
assertEq(address(output.disputeGameFactoryImpl), address(d
o
o.disputeGameFactoryImpl()), "1000");
assertEq(address(output.anchorStateRegistryProxy), address(d
s
o.anchorStateRegistryProxy()), "1100");
assertEq(address(output.anchorStateRegistryProxy), address(d
o
o.anchorStateRegistryProxy()), "1100");
assertEq(address(output.anchorStateRegistryImpl), address(d
s
o.anchorStateRegistryImpl()), "1200");
assertEq(address(output.anchorStateRegistryImpl), address(d
o
o.anchorStateRegistryImpl()), "1200");
assertEq(address(output.faultDisputeGame), address(d
s
o.faultDisputeGame()), "1300");
assertEq(address(output.faultDisputeGame), address(d
o
o.faultDisputeGame()), "1300");
assertEq(address(output.permissionedDisputeGame), address(d
s
o.permissionedDisputeGame()), "1400");
assertEq(address(output.permissionedDisputeGame), address(d
o
o.permissionedDisputeGame()), "1400");
assertEq(
assertEq(
address(output.delayedWETHPermissionedGameProxy), address(d
s
o.delayedWETHPermissionedGameProxy()), "1500"
address(output.delayedWETHPermissionedGameProxy), address(d
o
o.delayedWETHPermissionedGameProxy()), "1500"
);
);
assertEq(
assertEq(
address(output.delayedWETHPermissionlessGameProxy),
address(output.delayedWETHPermissionlessGameProxy),
address(d
s
o.delayedWETHPermissionlessGameProxy()),
address(d
o
o.delayedWETHPermissionlessGameProxy()),
"1600"
"1600"
);
);
assertEq(keccak256(abi.encode(output)), keccak256(abi.encode(d
s
o.output())), "1700");
assertEq(keccak256(abi.encode(output)), keccak256(abi.encode(d
o
o.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);
d
s
o.opChainProxyAdmin();
d
o
o.opChainProxyAdmin();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.addressManager();
d
o
o.addressManager();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.l1ERC721BridgeProxy();
d
o
o.l1ERC721BridgeProxy();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.systemConfigProxy();
d
o
o.systemConfigProxy();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.optimismMintableERC20FactoryProxy();
d
o
o.optimismMintableERC20FactoryProxy();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.l1StandardBridgeProxy();
d
o
o.l1StandardBridgeProxy();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.l1CrossDomainMessengerProxy();
d
o
o.l1CrossDomainMessengerProxy();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.optimismPortalProxy();
d
o
o.optimismPortalProxy();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.disputeGameFactoryProxy();
d
o
o.disputeGameFactoryProxy();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.disputeGameFactoryImpl();
d
o
o.disputeGameFactoryImpl();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.anchorStateRegistryProxy();
d
o
o.anchorStateRegistryProxy();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.anchorStateRegistryImpl();
d
o
o.anchorStateRegistryImpl();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.faultDisputeGame();
d
o
o.faultDisputeGame();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.permissionedDisputeGame();
d
o
o.permissionedDisputeGame();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.delayedWETHPermissionedGameProxy();
d
o
o.delayedWETHPermissionedGameProxy();
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.delayedWETHPermissionlessGameProxy();
d
o
o.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)));
d
so.set(ds
o.opChainProxyAdmin.selector, emptyAddr);
d
oo.set(do
o.opChainProxyAdmin.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.opChainProxyAdmin();
d
o
o.opChainProxyAdmin();
d
so.set(ds
o.addressManager.selector, emptyAddr);
d
oo.set(do
o.addressManager.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.addressManager();
d
o
o.addressManager();
d
so.set(ds
o.l1ERC721BridgeProxy.selector, emptyAddr);
d
oo.set(do
o.l1ERC721BridgeProxy.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.l1ERC721BridgeProxy();
d
o
o.l1ERC721BridgeProxy();
d
so.set(ds
o.systemConfigProxy.selector, emptyAddr);
d
oo.set(do
o.systemConfigProxy.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.systemConfigProxy();
d
o
o.systemConfigProxy();
d
so.set(ds
o.optimismMintableERC20FactoryProxy.selector, emptyAddr);
d
oo.set(do
o.optimismMintableERC20FactoryProxy.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.optimismMintableERC20FactoryProxy();
d
o
o.optimismMintableERC20FactoryProxy();
d
so.set(ds
o.l1StandardBridgeProxy.selector, emptyAddr);
d
oo.set(do
o.l1StandardBridgeProxy.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.l1StandardBridgeProxy();
d
o
o.l1StandardBridgeProxy();
d
so.set(ds
o.l1CrossDomainMessengerProxy.selector, emptyAddr);
d
oo.set(do
o.l1CrossDomainMessengerProxy.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.l1CrossDomainMessengerProxy();
d
o
o.l1CrossDomainMessengerProxy();
d
so.set(ds
o.optimismPortalProxy.selector, emptyAddr);
d
oo.set(do
o.optimismPortalProxy.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.optimismPortalProxy();
d
o
o.optimismPortalProxy();
d
so.set(ds
o.disputeGameFactoryProxy.selector, emptyAddr);
d
oo.set(do
o.disputeGameFactoryProxy.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.disputeGameFactoryProxy();
d
o
o.disputeGameFactoryProxy();
d
so.set(ds
o.disputeGameFactoryImpl.selector, emptyAddr);
d
oo.set(do
o.disputeGameFactoryImpl.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.disputeGameFactoryImpl();
d
o
o.disputeGameFactoryImpl();
d
so.set(ds
o.anchorStateRegistryProxy.selector, emptyAddr);
d
oo.set(do
o.anchorStateRegistryProxy.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.anchorStateRegistryProxy();
d
o
o.anchorStateRegistryProxy();
d
so.set(ds
o.anchorStateRegistryImpl.selector, emptyAddr);
d
oo.set(do
o.anchorStateRegistryImpl.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.anchorStateRegistryImpl();
d
o
o.anchorStateRegistryImpl();
d
so.set(ds
o.faultDisputeGame.selector, emptyAddr);
d
oo.set(do
o.faultDisputeGame.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.faultDisputeGame();
d
o
o.faultDisputeGame();
d
so.set(ds
o.permissionedDisputeGame.selector, emptyAddr);
d
oo.set(do
o.permissionedDisputeGame.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.permissionedDisputeGame();
d
o
o.permissionedDisputeGame();
d
so.set(ds
o.delayedWETHPermissionedGameProxy.selector, emptyAddr);
d
oo.set(do
o.delayedWETHPermissionedGameProxy.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.delayedWETHPermissionedGameProxy();
d
o
o.delayedWETHPermissionedGameProxy();
d
so.set(ds
o.delayedWETHPermissionlessGameProxy.selector, emptyAddr);
d
oo.set(do
o.delayedWETHPermissionlessGameProxy.selector, emptyAddr);
vm.expectRevert(expectedErr);
vm.expectRevert(expectedErr);
d
s
o.delayedWETHPermissionlessGameProxy();
d
o
o.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 test
Fuzz
_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));
...
...
packages/contracts-bedrock/test/DeploySuperchain.t.sol
View file @
144a7750
...
@@ -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 test
Fuzz
_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.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment