Commit 654ea959 authored by Kelvin Fichter's avatar Kelvin Fichter

fix(ctb): initialize L2OO in dictator step 1

Initializes the L2OutputOracle in step 1 of the SystemDictator. This
makes it possible for the proposer to spin up without starting the rest
of the system.
parent 4f54bcdb
......@@ -205,6 +205,19 @@ contract SystemDictator is OwnableUpgradeable {
)
)
);
// Upgrade and initialize the L2OutputOracle so the Proposer can start up.
config.globalConfig.proxyAdmin.upgradeAndCall(
payable(config.proxyAddressConfig.l2OutputOracleProxy),
address(config.implementationAddressConfig.l2OutputOracleImpl),
abi.encodeCall(
L2OutputOracle.initialize,
(
l2OutputOracleDynamicConfig.l2OutputOracleStartingBlockNumber,
l2OutputOracleDynamicConfig.l2OutputOracleStartingTimestamp
)
)
);
}
/**
......@@ -290,19 +303,6 @@ contract SystemDictator is OwnableUpgradeable {
// Dynamic config must be set before we can initialize the L2OutputOracle.
require(dynamicConfigSet, "SystemDictator: dynamic oracle config is not yet initialized");
// Upgrade and initialize the L2OutputOracle.
config.globalConfig.proxyAdmin.upgradeAndCall(
payable(config.proxyAddressConfig.l2OutputOracleProxy),
address(config.implementationAddressConfig.l2OutputOracleImpl),
abi.encodeCall(
L2OutputOracle.initialize,
(
l2OutputOracleDynamicConfig.l2OutputOracleStartingBlockNumber,
l2OutputOracleDynamicConfig.l2OutputOracleStartingTimestamp
)
)
);
// Upgrade and initialize the OptimismPortal.
config.globalConfig.proxyAdmin.upgradeAndCall(
payable(config.proxyAddressConfig.optimismPortalProxy),
......
......@@ -29,6 +29,7 @@ const deployFn: DeployFunction = async (hre) => {
L1ERC721BridgeProxy,
L1ERC721BridgeProxyWithSigner,
SystemConfigProxy,
L2OutputOracleProxy,
] = await getContractsFromArtifacts(hre, [
{
name: 'SystemDictatorProxy',
......@@ -67,6 +68,11 @@ const deployFn: DeployFunction = async (hre) => {
iface: 'SystemConfig',
signerOrProvider: deployer,
},
{
name: 'L2OutputOracleProxy',
iface: 'L2OutputOracle',
signerOrProvider: deployer,
},
])
// If we have the key for the controller then we don't need to wait for external txns.
......@@ -287,6 +293,13 @@ const deployFn: DeployFunction = async (hre) => {
'gasLimit',
hre.deployConfig.l2GenesisBlockGasLimit
)
// Check L2OutputOracle was initialized properly.
await assertContractVariable(
L2OutputOracleProxy,
'latestBlockNumber',
hre.deployConfig.l2OutputOracleStartingBlockNumber
)
},
})
......
......@@ -26,7 +26,6 @@ const deployFn: DeployFunction = async (hre) => {
L1CrossDomainMessenger,
L1StandardBridgeProxy,
L1StandardBridge,
L2OutputOracle,
OptimismPortal,
OptimismMintableERC20Factory,
L1ERC721Bridge,
......@@ -57,11 +56,6 @@ const deployFn: DeployFunction = async (hre) => {
iface: 'L1StandardBridge',
signerOrProvider: deployer,
},
{
name: 'L2OutputOracleProxy',
iface: 'L2OutputOracle',
signerOrProvider: deployer,
},
{
name: 'OptimismPortalProxy',
iface: 'OptimismPortal',
......@@ -213,13 +207,6 @@ const deployFn: DeployFunction = async (hre) => {
submit L2 outputs to the L2OutputOracle.
`,
checks: async () => {
// Check L2OutputOracle was initialized properly.
await assertContractVariable(
L2OutputOracle,
'latestBlockNumber',
hre.deployConfig.l2OutputOracleStartingBlockNumber
)
// Check OptimismPortal was initialized properly.
await assertContractVariable(
OptimismPortal,
......
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