diff --git a/src/L1/proofs/DisputeGameFactory.sol b/src/L1/proofs/DisputeGameFactory.sol index c79f3e9a4..c670dc71d 100644 --- a/src/L1/proofs/DisputeGameFactory.sol +++ b/src/L1/proofs/DisputeGameFactory.sol @@ -150,8 +150,10 @@ contract DisputeGameFactory is ProxyAdminOwnedBase, ReinitializableBase, Ownable returns (IDisputeGame proxy_) { proxy_ = _createGameImpl(_gameType, _rootClaim, _extraData); - proxy_.initialize{ value: msg.value }(); + // EFFECT: Finalize and register state first (CEI pattern) _finalizeGameCreation(_gameType, _rootClaim, _extraData, proxy_); + // INTERACTION: Perform external initialization call last + proxy_.initialize{ value: msg.value }(); } function createWithInitData( @@ -165,8 +167,10 @@ contract DisputeGameFactory is ProxyAdminOwnedBase, ReinitializableBase, Ownable returns (IDisputeGame proxy_) { proxy_ = _createGameImpl(_gameType, _rootClaim, _extraData); - proxy_.initializeWithInitData{ value: msg.value }(_initData); + // EFFECT: Finalize and register state first (CEI pattern) _finalizeGameCreation(_gameType, _rootClaim, _extraData, proxy_); + // INTERACTION: Perform external initialization call last + proxy_.initializeWithInitData{ value: msg.value }(_initData); } /// @notice Creates a new DisputeGame proxy contract.