UPDATE: since rinkeby testnet has been deprecated this collection no longer shows on testnet opensea
This project demonstrates a complete onchain art ERC721 NFT using SVG for image generation in the tokenURI function and Chainlink VRF random values as random input.
Deployed on rinkeby testnet
Mint one by calling the Create function on the Write Contract Page on Rinkeby.Etherscan connected to your metamask.
https://rinkeby.etherscan.io/address/0x53D5001FEe2EDbbb194b278621e8934888626c8E#writeContract
Takes about 3 minutes for the Chainlink VRF node to respond to the request, after that you can view it here on testnets.opensea
https://testnets.opensea.io/collection/randomsvg-tgyc2jbbye
Alternatively you can also paste the response from the tokenURI function into your browser to view the Base64 encoded JSON metadata , which contains the Base64 encoded SVG image
For example tokenURI of token #0 : data:application/json;base64,eyJuYW1lIjogIlNWRyBORlQiLCAiZGVzY3JpcHRpb24iOiAiQW4gTkZUIHdpdGggU1ZHIG9uIGNoYWluISIsICJhdHRyaWJ1dGVzIjoiIiwgImltYWdlIjogImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owbmFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jbklHaGxhV2RvZEQwbk5UQXdKeUIzYVdSMGFEMG5OVEF3Sno0OFkybHlZMnhsSUdONFBTYzVNQ1VuSUdONVBTYzNNQ1VuSUhJOUp6UXdKeUJ6ZEhKdmEyVTlKMkpzWVdOckp5QnpkSEp2YTJVdGQybGtkR2c5SnpFbklHWnBiR3c5SjJKc2RXVW5JQzgrUEdOcGNtTnNaU0JqZUQwbk5qQWxKeUJqZVQwbk16QWxKeUJ5UFNjeU1DY2djM1J5YjJ0bFBTZGliR0ZqYXljZ2MzUnliMnRsTFhkcFpIUm9QU2N4SnlCbWFXeHNQU2RpYkhWbEp5QXZQanhqYVhKamJHVWdZM2c5SnpZd0pTY2dZM2s5SnpZd0pTY2djajBuTWpBbklITjBjbTlyWlQwbllteGhZMnNuSUhOMGNtOXJaUzEzYVdSMGFEMG5NU2NnWm1sc2JEMG5ZbXhoWTJzbklDOCtQR05wY21Oc1pTQmplRDBuTmpBbEp5QmplVDBuTlRBbEp5QnlQU2MwTUNjZ2MzUnliMnRsUFNkaWJHRmpheWNnYzNSeWIydGxMWGRwWkhSb1BTY3hKeUJtYVd4c1BTZG5jbVZsYmljZ0x6NDhZMmx5WTJ4bElHTjRQU2N6TUNVbklHTjVQU2MxTUNVbklISTlKelF3SnlCemRISnZhMlU5SjJKc1lXTnJKeUJ6ZEhKdmEyVXRkMmxrZEdnOUp6RW5JR1pwYkd3OUozSmxaQ2NnTHo0OFkybHlZMnhsSUdONFBTYzRNQ1VuSUdONVBTY3lNQ1VuSUhJOUp6WXdKeUJ6ZEhKdmEyVTlKMkpzWVdOckp5QnpkSEp2YTJVdGQybGtkR2c5SnpFbklHWnBiR3c5SjJkeVpXVnVKeUF2UGp3dmMzWm5QZz09In0=
containing the image: data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGhlaWdodD0nNTAwJyB3aWR0aD0nNTAwJz48Y2lyY2xlIGN4PSc5MCUnIGN5PSc3MCUnIHI9JzQwJyBzdHJva2U9J2JsYWNrJyBzdHJva2Utd2lkdGg9JzEnIGZpbGw9J2JsdWUnIC8+PGNpcmNsZSBjeD0nNjAlJyBjeT0nMzAlJyByPScyMCcgc3Ryb2tlPSdibGFjaycgc3Ryb2tlLXdpZHRoPScxJyBmaWxsPSdibHVlJyAvPjxjaXJjbGUgY3g9JzYwJScgY3k9JzYwJScgcj0nMjAnIHN0cm9rZT0nYmxhY2snIHN0cm9rZS13aWR0aD0nMScgZmlsbD0nYmxhY2snIC8+PGNpcmNsZSBjeD0nNjAlJyBjeT0nNTAlJyByPSc0MCcgc3Ryb2tlPSdibGFjaycgc3Ryb2tlLXdpZHRoPScxJyBmaWxsPSdncmVlbicgLz48Y2lyY2xlIGN4PSczMCUnIGN5PSc1MCUnIHI9JzQwJyBzdHJva2U9J2JsYWNrJyBzdHJva2Utd2lkdGg9JzEnIGZpbGw9J3JlZCcgLz48Y2lyY2xlIGN4PSc4MCUnIGN5PScyMCUnIHI9JzYwJyBzdHJva2U9J2JsYWNrJyBzdHJva2Utd2lkdGg9JzEnIGZpbGw9J2dyZWVuJyAvPjwvc3ZnPg==