The contract claims to be ERC4626-compliant but only implements deposit() while missing other required functions, breaking composability with DeFi protocols.
Normal behavior for an ERC4626 vault expects implementation of all standard functions: deposit(), mint(), withdraw(), redeem(), and their preview functions. This enables seamless integration with aggregators, routers, and other DeFi protocols.
The current implementation only overrides deposit() with custom logic and leaves the base ERC4626 functions potentially broken or with default behavior that doesn't match the tournament mechanics.
Likelihood:
DeFi protocols attempting to integrate will call standard ERC4626 functions
Base implementations may allow actions that should be restricted
Users familiar with ERC4626 may expect standard behavior
Impact:
Calling withdraw() from base contract may bypass winner checks
Calling redeem() may allow extraction before event ends
Calling mint() may allow share creation without deposits
Aggregators and routers will malfunction when integrating
Claiming ERC4626 compliance while not fully implementing it is misleading
Security assumptions about restricted withdrawals may be violated
Protocol cannot integrate with Yearn, Beefy, or other vault aggregators
Option 1: Disable base ERC4626 functions
Option 2: Don't inherit ERC4626
Option 3: Properly implement ERC4626 (complex)
Recommendation: Option 1 or 2 is safer. Properly implementing ERC4626 for a tournament vault is complex and may not be worth the compatibility if standard vault integrations don't make sense for this use case.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.