Normal behavior: tokenURI() should return a properly-formatted data URI that wallets/marketplaces can render directly.
Specific issue: _baseURI() is never overridden (defaults to OZ's empty string), so the returned Base64 payload has no data:application/json;base64, prefix.
Likelihood: Occurs on every single tokenURI() call, no exception.
Impact: Display/UX only — likely won't render correctly in standard wallets/marketplaces expecting a proper data URI; no fund or access-control consequence.
No PoC is included: tokenURI() returns exactly what the code says it returns — a raw Base64 string with no scheme prefix — which is directly verifiable by reading the function's output for any minted token and comparing it against the ERC-721/ERC-4906 data: URI convention; there's no state-dependent behavior to reproduce beyond that.
Overriding _baseURI() to return the standard data:application/json;base64, prefix is the idiomatic OZ pattern for fully on-chain metadata (the base is prepended automatically by tokenURI()'s existing abi.encodePacked(_baseURI(), ...) call, so no other logic needs to change).
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.