IMPACT : HIGH
Likelihood : medium
The createEstateNFT function allows the contract owner to set the price of an NFT in a specific asset. However, the _asset is stored in a single contract-wide variable assetToPay rather than being uniquely linked to each NFT. As a result, if the owner later creates another NFT with a different _asset, the price of all previously minted NFTs will be expressed in the newly assigned asset, causing incorrect valuations.
The pricing of previously minted NFTs retroactively changes when a new NFT is minted with a different payment asset. This can lead to significant valuation discrepancies, such as a house initially priced in Bitcoin being mistakenly re-evaluated in USDT, or vice versa, causing severe inconsistencies in asset representation and potential financial losses. Additionally, if an NFT was originally priced in a low-value asset but later gets reassigned to a high-value asset (e.g., switching from USDT to Bitcoin), the cost to buy it out may become unaffordable, effectively trapping the NFT in the contract forever.
add a mapping to connect each NFT to an asset
update createEstateNFT
update buyOutEstateNFT
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.