The contract collects ETH through the requestMintWeatherNFT payable function, but it does not implement any withdrawal mechanism to retrieve this ETH. As a result, the ETH becomes permanently locked in the contract’s balance.
• Funds paid by users during minting are permanently locked and cannot be retrieved by the contract owner or protocol treasury.
• This undermines the financial utility of the protocol — if ETH was intended as payment or revenue, it becomes irretrievably stuck, resulting in lost funds.
• In a live deployment, this could lead to real monetary losses, protocol mismanagement, or a negative trust perception from users and contributors.
The contract allows users to mint NFTs by sending ETH through the WeatherNft::requestMintWeatherNFT
function, which is marked payable.
However, the contract does not implement any mechanism for withdrawing the accumulated ETH, effectively locking the funds in the contract permanently.
Likelihood:
Users regularly interact with the requestMintWeatherNFT function during normal minting operations.
Each call to this function transfers ETH to the contract, but with no retrieval mechanism, this ETH will accumulate and be permanently inaccessible.
Impact:
ETH sent to the contract is locked and cannot be withdrawn or reused, resulting in a permanent loss of funds.
If ETH was intended to be collected for protocol operations (e.g., treasury, revenue), this breaks financial functionality.
The contract collects funds for minting a WeatherNFT, but there is no function that allows the owner to withdraw these funds.
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.