From b187867068fe536161b7da8736376ceb5bd1befd Mon Sep 17 00:00:00 2001 From: Maurelian Date: Thu, 19 Sep 2024 10:43:24 -0400 Subject: [PATCH] feat: Return startingAnchorInputs as bytes The op-deployer tooling does not support structs, therefore we need to return a more generic type for compatibility. --- op-chain-ops/deployer/opsm/opchain.go | 9 +++++---- op-chain-ops/deployer/pipeline/opchain.go | 1 + packages/contracts-bedrock/scripts/DeployOPChain.s.sol | 6 ++++-- packages/contracts-bedrock/src/L1/OPStackManager.sol | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/op-chain-ops/deployer/opsm/opchain.go b/op-chain-ops/deployer/opsm/opchain.go index 4e970d455859..285708a0c6e2 100644 --- a/op-chain-ops/deployer/opsm/opchain.go +++ b/op-chain-ops/deployer/opsm/opchain.go @@ -17,10 +17,11 @@ type DeployOPChainInput struct { Proposer common.Address Challenger common.Address - BasefeeScalar uint32 - BlobBaseFeeScalar uint32 - L2ChainId *big.Int - Opsm common.Address + BasefeeScalar uint32 + BlobBaseFeeScalar uint32 + L2ChainId *big.Int + StartingAnchorRoots []byte + Opsm common.Address } func (input *DeployOPChainInput) InputSet() bool { diff --git a/op-chain-ops/deployer/pipeline/opchain.go b/op-chain-ops/deployer/pipeline/opchain.go index f3f577cf26a8..0197fbe04a06 100644 --- a/op-chain-ops/deployer/pipeline/opchain.go +++ b/op-chain-ops/deployer/pipeline/opchain.go @@ -62,6 +62,7 @@ func DeployOPChain(ctx context.Context, env *Env, intent *state.Intent, st *stat BasefeeScalar: 1368, BlobBaseFeeScalar: 801949, L2ChainId: chainID.Big(), + StartingAnchorRoots: []byte{}, Opsm: st.ImplementationsDeployment.OpsmAddress, }, ) diff --git a/packages/contracts-bedrock/scripts/DeployOPChain.s.sol b/packages/contracts-bedrock/scripts/DeployOPChain.s.sol index 971c17180dcb..b1a879e472d2 100644 --- a/packages/contracts-bedrock/scripts/DeployOPChain.s.sol +++ b/packages/contracts-bedrock/scripts/DeployOPChain.s.sol @@ -133,13 +133,15 @@ contract DeployOPChainInput is BaseDeployIO { return _l2ChainId; } - function startingAnchorRoots() public view returns (AnchorStateRegistry.StartingAnchorRoot[] memory) { + function startingAnchorRoots() public view returns (bytes memory) { // TODO: figure out how to assert this properly. // Per mofi: It may make sense to not set any startingAnchor roots if you're running permissioned games for a // new chain and you don't yet have a genesis state available for the initial anchor. // And provided it'll remain permissioned unless the anchor state is fixed. require(_startingAnchorRoots.length > 0, "DeployOPChainInput: not set"); - return _startingAnchorRoots; + // The op-deployer tooling does not support structs, therefore we need to + // return a more generic type for compatibility. + return abi.encode(_startingAnchorRoots); } // TODO: Check that opsm is proxied and it has an implementation. diff --git a/packages/contracts-bedrock/src/L1/OPStackManager.sol b/packages/contracts-bedrock/src/L1/OPStackManager.sol index 12746e139216..bd542a92574a 100644 --- a/packages/contracts-bedrock/src/L1/OPStackManager.sol +++ b/packages/contracts-bedrock/src/L1/OPStackManager.sol @@ -55,7 +55,7 @@ contract OPStackManager is ISemver, Initializable { uint32 basefeeScalar; uint32 blobBasefeeScalar; uint256 l2ChainId; - AnchorStateRegistry.StartingAnchorRoot[] startingAnchorRoots; + bytes startingAnchorRoots; } /// @notice The full set of outputs from deploying a new OP Stack chain.