Hey George! You can define your own tokenURI
function, so you can theoretically make each each tokenId
have a different baseURI
if you wanted. You could even make them dynamic, but that would be a peculiar use case (for example, returning something depending on block.timestamp
).
I think it fell out of fashion, but OZ's ERC721
use to ship with something like this:
/**
* @dev Sets `_tokenURI` as the tokenURI of `tokenId`.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {
require(_exists(tokenId), "ERC721Metadata: URI set of nonexistent token");
_tokenURIs[tokenId] = _tokenURI;
}
Looks like there is more discussion here.