he contract manages various operations, including adding new treats (addTreat
), setting treat costs (setTreatCost
), handling ETH payments and NFT minting (trickOrTreat
and resolveTrick
), and withdrawing accumulated fees (withdrawFees
). In scenarios where users attempt to purchase treats but do not send the required amount of ETH, the contract mints the NFT to itself and stores the purchase as pending. Users are expected to complete these pending purchases by calling the resolveTrick
function to fulfill the remaining ETH requirement.
The contract permits NFTs to be minted to itself and held in a pending state when users send insufficient ETH during the trickOrTreat
function. However, there is no mechanism for the contract owner to manage or reclaim these pending NFTs if users fail to complete their purchases by calling resolveTrick
.
Users are required to call resolveTrick
to complete their purchase by sending the remaining ETH. However, there is no enforced timeframe or automated mechanism to handle scenarios where users neglect or are unable to complete this step.
The contract lacks any administrative functions that allow the owner to manage, reclaim, or interact with NFTs held by the contract itself. This includes no functions to transfer these NFTs to another address, burn them, or otherwise handle them if the pending purchase is never resolved.
The primary consequence of NFTs being locked within the SpookySwap
contract is that these assets become permanently inaccessible to users. When NFTs are minted to the contract itself and remain unclaimed due to incomplete purchases, users lose control over their intended digital assets.
Manual review
Introduce functions that allow the contract owner to reclaim or transfer NFTs held by the contract
The protocol can work correctly with more than 20000 tokens in it. It is informational.
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.