The FeeCollector::_initializeFeeTypes
function sets initial fee type configurations without validating that share percentages sum to 100% (10000 basis points). This creates a discrepancy with the FeeCollector::updateFeeType
function which properly validates share totals, allowing invalid initial fee configurations that break core protocol functionality.
The contract initializes fee type 6 (Swap Tax) with shares totaling 2000 basis points (20%) instead of 10000:
To verify the impact:
Deploy contract with default initialization
Collect swap tax fees
Distribute collected fees:
High Severity - Causes permanent protocol fee misallocations:
80% of swap tax fees remain stuck in contract
Treasury/rewards receive incorrect percentages
Violates core protocol economic model
Add validation to initialization function:
Correct initial share allocations:
Create separate initialization function with access control that performs validation checks before setting initial state
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.