diff --git a/packages/contracts-bedrock/scripts/DeployOPChain.s.sol b/packages/contracts-bedrock/scripts/DeployOPChain.s.sol index ea285c95f4b3f..dfc6eddaad997 100644 --- a/packages/contracts-bedrock/scripts/DeployOPChain.s.sol +++ b/packages/contracts-bedrock/scripts/DeployOPChain.s.sol @@ -161,15 +161,10 @@ contract DeployOPChainInput is BaseDeployIO { // because to to update to the permissionless game, we will need to update its starting // anchor root and deploy a new permissioned dispute game contract anyway. // - // You can `console.logBytes(abi.encode(defaultStartingAnchorRoots))` to get the bytes that + // You can `console.logBytes(abi.encode(Constants.DEFAULT_STARTING_ANCHOR_ROOTS()))` to get the bytes that // are hardcoded into `op-chain-ops/deployer/opcm/opchain.go` - IAnchorStateRegistry.StartingAnchorRoot[] memory defaultStartingAnchorRoots = - new IAnchorStateRegistry.StartingAnchorRoot[](1); - defaultStartingAnchorRoots[0] = IAnchorStateRegistry.StartingAnchorRoot({ - gameType: GameTypes.PERMISSIONED_CANNON, - outputRoot: OutputRoot({ root: Hash.wrap(bytes32(hex"dead")), l2BlockNumber: 0 }) - }); - return abi.encode(defaultStartingAnchorRoots); + + return abi.encode(Constants.DEFAULT_STARTING_ANCHOR_ROOTS()); } function opcmProxy() public returns (OPContractsManager) { diff --git a/packages/contracts-bedrock/src/libraries/Constants.sol b/packages/contracts-bedrock/src/libraries/Constants.sol index 1cbd61d21a5e0..c99256da652b5 100644 --- a/packages/contracts-bedrock/src/libraries/Constants.sol +++ b/packages/contracts-bedrock/src/libraries/Constants.sol @@ -2,6 +2,8 @@ pragma solidity ^0.8.0; import { IResourceMetering } from "src/L1/interfaces/IResourceMetering.sol"; +import { IAnchorStateRegistry } from "src/dispute/interfaces/IAnchorStateRegistry.sol"; +import { GameTypes, OutputRoot, Hash } from "src/dispute/lib/Types.sol"; /// @title Constants /// @notice Constants is a library for storing constants. Simple! Don't put everything in here, just @@ -50,4 +52,14 @@ library Constants { }); return config; } + + function DEFAULT_STARTING_ANCHOR_ROOTS() internal pure returns (IAnchorStateRegistry.StartingAnchorRoot[] memory) { + IAnchorStateRegistry.StartingAnchorRoot[] memory defaultStartingAnchorRoots = + new IAnchorStateRegistry.StartingAnchorRoot[](1); + defaultStartingAnchorRoots[0] = IAnchorStateRegistry.StartingAnchorRoot({ + gameType: GameTypes.PERMISSIONED_CANNON, + outputRoot: OutputRoot({ root: Hash.wrap(bytes32(hex"dead")), l2BlockNumber: 0 }) + }); + return defaultStartingAnchorRoots; + } }