The UpliftOnlyExample contract incorrectly stores block numbers instead of timestamps in the blockTimestampDeposit variable during LP position transfers. This mismatch between the variable's intended purpose (tracking deposit time) and its actual stored value (block number) leads to invalid temporal tracking of LP positions.
In the afterUpdate function of UpliftOnlyExample.sol, the contract incorrectly stores block numbers when it should store timestamps:
The issue manifests as follows:
Transfer Impact:
When positions are transferred, the new timestamp becomes a block number
This invalidates any time-based calculations for transferred positions
The contract can no longer accurately track how long positions have been held once a transfer occurs
Loss of yield - Incorrect temporal tracking leads to inaccurate fee calculations and yield attribution for transferred LP positions, directly affecting user returns and protocol revenue.
Manual Review
Update the afterUpdate function to store timestamps instead of block numbers:
This ensures:
Accurate temporal tracking of LP positions
Consistent time-based calculations
Valid transfer preservation
Likelihood: Medium/High, any NFT transfer will change this variable. Impact: Informational/Very Low. This variable is unused and won’t impact anything, but the array is public and its getter will return a variable with inconsistencies.
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.