The RAACNFT contract lacks a withdrawal mechanism for funds received from house sales (NFT minting), resulting in permanently locked ERC20 tokens in the contract.
The RAACNFT contract implements a system where users can mint NFTs representing houses by paying with ERC20 tokens. When a user mints an NFT through the mint()
function, they transfer tokens to the contract based on the house price:
The critical issue is that while the contract accepts payments for houses (in the form of ERC20 tokens), it provides no mechanism to withdraw these funds. This means:
The tokens received as payment are permanently locked in the contract
The original house owners cannot receive their payment for selling their properties
Even the contract owner has no way to access these funds
Each successful mint operation increases the amount of locked tokens
The absence of a withdrawal function means that all value transferred to the contract becomes permanently inaccessible, essentially creating a token burn mechanism rather than a proper payment system.
Alice wants to sell her house and lists it for 100,000 USDC
Bob mints the NFT by sending 100,000 USDC to the contract
Bob receives the NFT representing the house
The 100,000 USDC remains locked in the contract
Alice never receives payment for her house
This process repeats with each house sale, accumulating locked tokens
Critical loss of funds as all payments for house sales become permanently locked in the contract, making the protocol economically unfeasible and resulting in direct financial losses for house sellers.
Manual review
Implement mechanism to withdraw the 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.