★ Reinitializable implementation (no _disableInitializers)
Aerodrome Finance's assessment for RD-F-143 — scored yellow on the v1.7.0 rubric. The evidence below is the curator's reasoning for this score.
Evidence summary #
Minter.sol has an initialize(AirdropParams) function protected only by a manual 'initialized' bool flag (not OZ initializer modifier). Constructor does NOT call _disableInitializers(). Core contracts (VotingEscrow, Voter, PoolFactory) are non-proxy and have no initialize function — reinit risk does not apply to them. Minter is also not behind a proxy (directly deployed), limiting practical reinit exposure. Yellow: non-standard pattern but low practical risk given non-proxy deployment.
Sources #
- GitHubMinter.sol initialize functionMinter.sol — initialize() with manual initialized bool; no _disableInitializers() in constructorretrieved 2026-05-04
- VotingEscrow — no initializer riskVotingEscrow BaseScan — no initialize function, no proxy patternretrieved 2026-05-04
Methodology #
Determine whether the implementation contract does not call `_disableInitializers()` in its constructor, leaving re-initialization possible.
See the full factor methodology and distribution across all protocols →