Core Contracts

Regnum Aurum Acquisition Corp
HardhatReal World AssetsNFT
77,280 USDC
View results
Submission Details
Severity: high
Invalid

Incorrect Inheritance Order Causes Broken NFT Enumeration Functionality.

Summary

The RAACNFT contract inherits from both ERC721 and ERC721Enumerable, but since ERC721 is inherited first, function calls using super. default to ERC721 instead of ERC721Enumerable. This results in enumeration functions not working as expected, breaking the NFT tracking functionality.

Vulnerability Details

Since in docs it is given that RAACNFT is enumeration type, but it will not work as enumeration.

Provide enumeration capabilities for NFTs

In the contract:

contract RAACNFT is ERC721, ERC721Enumerable, Ownable, IRAACNFT

Since ERC721 is inherited first, functions using super. will reference ERC721 rather than ERC721Enumerable.

For example, in _update():

function _update(address to, uint256 tokenId, address auth)
internal override(ERC721, ERC721Enumerable) returns (address) {
if (to == address(0)) revert RAACNFT__InvalidAddress();
return super._update(to, tokenId, auth);
}

Here, super._update() calls the ERC721 version instead of ERC721Enumerable, making enumeration functions like tokenOfOwnerByIndex() unusable.

Impact

  • Breaks enumeration capabilities for NFTs, contradicting the protocol's intended functionality.

Tools Used

  • Manual Code Review

Recommendations

  1. Change the inheritance order to ensure ERC721Enumerable is listed first:

    contract RAACNFT is ERC721Enumerable, ERC721, Ownable, IRAACNFT

    This ensures super. calls prioritize ERC721Enumerable.

Updates

Lead Judging Commences

inallhonesty Lead Judge 6 months ago
Submission Judgement Published
Invalidated
Reason: Incorrect statement

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.