# ERC721GenerativeOnchain

The ERC721GenerativeOnchain is very similar to the ERC721GeneralSequenceImplementation. The main difference is that we store the generative code URI on the contract. Additionally, this contract allows you to invoke a \`setCustomRenderer\` method which allows you to point your contract to a custom metadata renderer. This enables things like complex onchain rendering use cases. This contract allows you to invoke \`setTokenURI\` to override the metadata for specific tokens.&#x20;

Finally, this contract also implements an on-chain file storage system, which can point to files stored on-chain through our file deployer. You can add files, remove files, get files, get addresses of where file contents are stored, and get a string of the file. These files can then be pulled into your custom renderers and used to create on-chain works involving formats like HTML or SVG.

### Contract link

{% embed url="<https://github.com/highlightxyz/hl-evm-contracts/blob/main/contracts/erc721/ERC721Generative.sol>" %}
