The contract's fee mechanism can be bypassed by transferring NFTs, allowing users to reset their deposit value and avoid paying uplift fees on gains.
In the afterUpdate function, called during NFT transfers, the contract updates the deposit value to the current value:
in onAfterRemoveLiquidity, the fee calculation is based on the change since deposit:
This creates an exploitable scenario where users can avoid paying uplift fees by:
Depositing when price is low (e.g., 100)
Price increases (e.g., to 150)
Instead of withdrawing and paying uplift fees on the 50% gain, user:
Transfers NFT to another wallet
During transfer, lpTokenDepositValue is updated to 150
Withdraws immediately after
Pays only minimum fee since there's no gain from new deposit value
HIGH - This vulnerability fundamentally breaks the economic model of the protocol by allowing users to bypass the uplift fee mechanism entirely through a simple transfer. The protocol loses revenue, and the intended fee structure becomes optional.
manual review
Remove the lpTokenDepositValue update during transfers:
Likelihood: High, any transfer will trigger the bug. Impact: High, will update lpTokenDepositValue to the new current value without taking fees on profit.
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.