Skip to content

Commit 9ed902f

Browse files
committed
fix(ev-deployer): remove deterministic deployer from deploy init template
The deterministic deployer cannot be deployed via CREATE2 (circular dependency). The deploy pipeline already verifies it exists on-chain, so including it in the deploy config template was misleading.
1 parent 01815ea commit 9ed902f

1 file changed

Lines changed: 13 additions & 22 deletions

File tree

bin/ev-deployer/src/init.rs

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,9 @@ pub fn generate_template(params: &InitParams) -> String {
3030

3131
let is_genesis = params.mode == InitMode::Genesis;
3232

33-
// In deploy mode, deterministic deployer is always required.
34-
let deterministic_deployer = params.deterministic_deployer || !is_genesis;
33+
// In deploy mode, the deterministic deployer must already exist on-chain
34+
// (verified by the pipeline) — it cannot be deployed via CREATE2 itself.
35+
let deterministic_deployer = params.deterministic_deployer && is_genesis;
3536

3637
// Header
3738
let mode_label = if is_genesis { "genesis" } else { "deploy" };
@@ -88,27 +89,21 @@ pub fn generate_template(params: &InitParams) -> String {
8889
}
8990
}
9091

91-
// Deterministic deployer
92-
out.push('\n');
92+
// Deterministic deployer (only relevant for genesis mode — in deploy mode
93+
// the pipeline verifies it exists on-chain, it cannot be deployed via CREATE2).
9394
if is_genesis {
95+
out.push('\n');
9496
out.push_str(
9597
"# Deterministic deployer (Nick's factory): CREATE2 factory for deploy mode.\n",
9698
);
9799
out.push_str(
98100
"# Required in genesis for post-merge chains where the keyless tx cannot land.\n",
99101
);
100-
} else {
101-
out.push_str("# Deterministic deployer (Nick's factory): required for CREATE2 deploys.\n");
102-
out.push_str("# Automatically included — must be present on-chain before deploying.\n");
103-
}
104-
if deterministic_deployer {
105-
out.push_str("[contracts.deterministic_deployer]\n");
106-
if is_genesis {
102+
if deterministic_deployer {
103+
out.push_str("[contracts.deterministic_deployer]\n");
107104
out.push_str("address = \"0x4e59b44847b379578588920cA78FbF26c0B4956C\"\n");
108-
}
109-
} else {
110-
out.push_str("# [contracts.deterministic_deployer]\n");
111-
if is_genesis {
105+
} else {
106+
out.push_str("# [contracts.deterministic_deployer]\n");
112107
out.push_str("# address = \"0x4e59b44847b379578588920cA78FbF26c0B4956C\"\n");
113108
}
114109
}
@@ -281,7 +276,7 @@ mod tests {
281276
}
282277

283278
#[test]
284-
fn deploy_auto_includes_deterministic_deployer() {
279+
fn deploy_excludes_deterministic_deployer() {
285280
let params = InitParams {
286281
mode: InitMode::Deploy,
287282
chain_id: 1234,
@@ -291,12 +286,8 @@ mod tests {
291286
};
292287
let output = generate_template(&params);
293288
assert!(
294-
output.contains("[contracts.deterministic_deployer]\n"),
295-
"deploy mode should auto-include deterministic deployer\n{output}"
296-
);
297-
assert!(
298-
!output.contains("address = \"0x4e59b44847b379578588920cA78FbF26c0B4956C\""),
299-
"deploy mode should not include address for deterministic deployer\n{output}"
289+
!output.contains("deterministic_deployer"),
290+
"deploy mode should not include deterministic deployer section\n{output}"
300291
);
301292
}
302293

0 commit comments

Comments
 (0)