★ Reinitializable implementation (no _disableInitializers)
Curve Finance's assessment for RD-F-143 — scored green on the v1.7.0 rubric. The evidence below is the curator's reasoning for this score.
Evidence summary #
Core Curve contracts are Vyper non-proxy contracts (VotingEscrow, GaugeController, Minter, CRV token, pool contracts) — no OZ _disableInitializers() pattern applicable. Pool contracts are immutable Vyper deployments. Aragon Voting Apps use Aragon OS AppProxyUpgradeable with Aragon's own initialization guard (not OZ). No OZ-style reinitialization risk. Methodological note: factor is written for Solidity OZ pattern; Vyper immutable contracts are structurally equivalent to the green outcome.
Sources #
- DocsCurve Finance protocol profile §1, §3profile.md §1 — Vyper codebase confirmed; VotingEscrow 'Vyper 0.2.4, immutable' per profile §3retrieved 2026-04-28
- Aragon OS AppProxyUpgradeablearagon/aragonOS AppProxyUpgradeable — Aragon's own init guard, not OZretrieved 2026-04-28
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 →