@@ -9,8 +9,6 @@ import { IResourceMetering } from "interfaces/L1/IResourceMetering.sol";
99import { ISuperchainConfig } from "interfaces/L1/ISuperchainConfig.sol " ;
1010import { IProtocolVersions } from "interfaces/L1/IProtocolVersions.sol " ;
1111
12- import { Bytes } from "src/libraries/Bytes.sol " ;
13-
1412import { IDelayedWETH } from "interfaces/dispute/IDelayedWETH.sol " ;
1513import { IPreimageOracle } from "interfaces/cannon/IPreimageOracle.sol " ;
1614import { IMIPS } from "interfaces/cannon/IMIPS.sol " ;
@@ -493,14 +491,22 @@ contract DeployImplementations is Script {
493491 bytes32 salt = _dii.salt ();
494492 OPContractsManager.Blueprints memory blueprints;
495493
494+ address checkAddress;
496495 vm.startBroadcast (msg .sender );
497- blueprints.addressManager = deployBytecode (Blueprint.blueprintDeployerBytecode (vm.getCode ("AddressManager " )), salt);
498- blueprints.proxy = deployBytecode (Blueprint.blueprintDeployerBytecode (vm.getCode ("Proxy " )), salt);
499- blueprints.proxyAdmin = deployBytecode (Blueprint.blueprintDeployerBytecode (vm.getCode ("ProxyAdmin " )), salt);
500- blueprints.l1ChugSplashProxy = deployBytecode (Blueprint.blueprintDeployerBytecode (vm.getCode ("L1ChugSplashProxy " )), salt);
501- blueprints.resolvedDelegateProxy = deployBytecode (Blueprint.blueprintDeployerBytecode (vm.getCode ("ResolvedDelegateProxy " )), salt);
502- blueprints.anchorStateRegistry = deployBytecode (Blueprint.blueprintDeployerBytecode (vm.getCode ("AnchorStateRegistry " )), salt);
503- (blueprints.permissionedDisputeGame1, blueprints.permissionedDisputeGame2) = deployBigBytecode (vm.getCode ("PermissionedDisputeGame " ), salt);
496+ (blueprints.addressManager, checkAddress) = Blueprint.create (vm.getCode ("AddressManager " ), salt);
497+ require (checkAddress == address (0 ), "OPCM-10 " );
498+ (blueprints.proxy, checkAddress) = Blueprint.create (vm.getCode ("Proxy " ), salt);
499+ require (checkAddress == address (0 ), "OPCM-20 " );
500+ (blueprints.proxyAdmin, checkAddress) = Blueprint.create (vm.getCode ("ProxyAdmin " ), salt);
501+ require (checkAddress == address (0 ), "OPCM-30 " );
502+ (blueprints.l1ChugSplashProxy, checkAddress) = Blueprint.create (vm.getCode ("L1ChugSplashProxy " ), salt);
503+ require (checkAddress == address (0 ), "OPCM-40 " );
504+ (blueprints.resolvedDelegateProxy, checkAddress) = Blueprint.create (vm.getCode ("ResolvedDelegateProxy " ), salt);
505+ require (checkAddress == address (0 ), "OPCM-50 " );
506+ (blueprints.anchorStateRegistry, checkAddress) = Blueprint.create (vm.getCode ("AnchorStateRegistry " ), salt);
507+ require (checkAddress == address (0 ), "OPCM-60 " );
508+ (blueprints.permissionedDisputeGame1, blueprints.permissionedDisputeGame2) = Blueprint.create (vm.getCode ("PermissionedDisputeGame " ), salt);
509+ (blueprints.permissionlessDisputeGame1, blueprints.permissionlessDisputeGame2) = Blueprint.create (vm.getCode ("FaultDisputeGame " ), salt);
504510 vm.stopBroadcast ();
505511 // forgefmt: disable-end
506512
@@ -862,33 +868,6 @@ contract DeployImplementations is Script {
862868 dio_ = DeployImplementationsOutput (DeployUtils.toIOAddress (msg .sender , "optimism.DeployImplementationsOutput " ));
863869 }
864870
865- function deployBytecode (bytes memory _bytecode , bytes32 _salt ) public returns (address newContract_ ) {
866- assembly ("memory-safe" ) {
867- newContract_ := create2 (0 , add (_bytecode, 0x20 ), mload (_bytecode), _salt)
868- }
869- require (newContract_ != address (0 ), "DeployImplementations: create2 failed " );
870- }
871-
872- function deployBigBytecode (
873- bytes memory _bytecode ,
874- bytes32 _salt
875- )
876- public
877- returns (address newContract1_ , address newContract2_ )
878- {
879- // Preamble needs 3 bytes.
880- uint256 maxInitCodeSize = 24576 - 3 ;
881- require (_bytecode.length > maxInitCodeSize, "DeployImplementations: Use deployBytecode instead " );
882-
883- bytes memory part1Slice = Bytes.slice (_bytecode, 0 , maxInitCodeSize);
884- bytes memory part1 = Blueprint.blueprintDeployerBytecode (part1Slice);
885- bytes memory part2Slice = Bytes.slice (_bytecode, maxInitCodeSize, _bytecode.length - maxInitCodeSize);
886- bytes memory part2 = Blueprint.blueprintDeployerBytecode (part2Slice);
887-
888- newContract1_ = deployBytecode (part1, _salt);
889- newContract2_ = deployBytecode (part2, _salt);
890- }
891-
892871 // Zero address is returned if the address is not found in '_standardVersionsToml'.
893872 function getReleaseAddress (
894873 string memory _version ,
0 commit comments