F-2025-0010·missing-initializer

Call __ReentrancyGuard_init() and __ERC721Enumerable_init() in initialize() for best practices

Fixednftstakingeip-712
TL;DR

Inherited upgradeable modules (ReentrancyGuard, ERC721Enumerable, ERC721Holder) are not explicitly initialized in initialize(). Works today but is fragile across future inheritance changes.

Severity
INFO
Impact
LOW
Likelihood
LOW
Method
MManual review
CAT.
Complexity
LOW
Exploitability
LOW
02Section · Description

Description

In GenesisLicense.sol, the calls to __ReentrancyGuard_init() and __ERC721Enumerable_init() are commented out in the initialize() function. Although the contract works without them, it is best practice to call these initializer functions to properly set up inherited upgradeable modules.

GenesisLicenseStaking presents the same situation with ReentrancyGuardUpgradeable and ERC721HolderUpgradeable.

03Section · Recommendation

Recommendation

Uncomment and call these initialization functions in initialize() to ensure all inherited modules are correctly initialized, avoiding potential issues in future upgrades or code changes.

Status
Fixed
F-2025-0010

oog
zealynx

Smart Contract Security Digest

Monthly exploit breakdowns, audit checklists, and DeFi security research — straight to your inbox

© 2026 Zealynx