★ Public initialize() without initializer modifier
Euler V2's assessment for RD-F-022 — scored green on the v1.7.0 rubric. The evidence below is the curator's reasoning for this score.
Evidence summary #
initialize(address proxyCreator) is public virtual reentrantOK in InitializeModule — no OZ initializer modifier. But re-init is prevented by custom boolean guard: constructor() { initialized = true; } (sets flag on implementation, blocks any re-init); initialize() checks if (initialized) revert E_Initialized(). Functionally equivalent to OZ _disableInitializers(). Pattern reviewed by 12+ audit firms including Spearbit and OZ with no critical findings.
Sources #
- URLOpenZeppelin EVC AuditOZ EVC audit — 0 critical/high findings on initialization patternsretrieved 2026-05-04
- EVK Initialize Module SourceInitialize.sol — constructor sets initialized=true, initialize() checks guardretrieved 2026-05-04
Methodology #
Determine whether any implementation contract exposes `initialize(…)` without the OpenZeppelin `initializer` modifier or equivalent initialization lock.
See the full factor methodology and distribution across all protocols →