The UpliftOnlyExample contract defines a public variable upliftFeeBps, but does not provide any function to update its value, but the contract give strong evidance that this value should be updated.
The variable upliftFeeBps represents a fee value in basis points (BPS), which is used in the contract to calculate feePerLP.
However, the contract lacks a function to update the upliftFeeBps value after deployment.
There is evidence in the code indicating that upliftFeeBps is intended to be updatable. Specifically, when a user transfers an NFT,
the line feeDataArray[tokenIdIndex].upliftFeeBps is updated with the current value of upliftFeeBps.
However, since no function exists to update the upliftFeeBps value, this line of code has no practical effect. It highlights that upliftFeeBps is designed to be modifiable,
yet the absence of an update mechanism renders this logic non functional.
If was not intended to be updatable then no need to update upliftFeeBps here.
Without an update mechanism, the contract is unable to reflect changes in fee structures.
Fee structures that remain static in a dynamic market environment may lead to a mismatch between the protocol's offerings and market expectations, reducing competitiveness.
File: https://github.com/Cyfrin/2024-12-quantamm/blob/main/pkg/pool-hooks/contracts/hooks-quantamm/UpliftOnlyExample.sol
Add a function to update the upliftFeeBps variable, controlled by appropriate access restrictions to ensure security. Below is a sample implementation:
Likelihood: Low, it cannot be changed but should not need to be changed often. Impact: Low, the code still works with fees.
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.