About
Symbiosis explores the symbiotic relationship that exists between an art piece and its associated NFT on the blockchain. In this work, this relation is made essential as each art generates itself automatically based on its own NFT history available publicly on the Ethereum blockchain. Each art piece thus evolves over time and morphs uniquely so as to be a visual representation of themselves as seen through the publicly available ledger.

Architecture Details
Symbiosis is made of two components that work together:
- The smart contract is an ERC-721 (NFT) that is hosted on the public Ethereum blockchain. The NFT points to the IPFS hash of the generator (it can be checked here in the method generatorIpfsHash). For every token, the smart contract can output a seed (the tokenArtSeed method) that can be fed to the generator off-chain to generate the art in the browser. The seed is a compact representation of the NFT token's history in hexadecimal form so it does change over time.
- The Generator is a javascript code that can run in the browser and is hosted on IPFS. Given a token ID, the generator queries the smart contract on Ethereum in order to fetch details about its own history and generates the art accordingly. Alternatively, one can also manually input a seed provided by the smart contract to generate the art as the seed contains the same information. The art can thus execute even offline.
The smart contract on Ethereum references the hash of the generator on IPFS. Similarly, the generator code statically references the smart contract's address on the Ethereum blockchain. They thus both form a symbiotic relationship.

Art Visual Mechanic
Each art piece is a visual animation that evolves over time based on the following mechanic:
- mint: The look and feel (traits) of the art are set during the minting process
- time: The NFT automatically generate new frames as time passes
- transfer: Each transfer of the NFT adds some visible features to the art.
Minting
Each NFT piece has some properties that gives them a distinct "look and feel". Trails fade, morph, and scroll in a very lively fashion, following properties that are set during the minting process. Those parameters are derived from the first owner's public key, timestamp and token ID. The morphing is driven by a parameterized algorithm inspired by the famous Conway's Game of Life.
Time
Once a piece is created through the minting process, a new animation is created and will automatically generates a new frame every 12 hours (2 frames per day). Since the animation is played at 20 frames per second (1 frame every 50 msec), this means that every 10 days, 1 second of art is generated for each minted NFT.
Transfer
Each transfer of the NFT visually affect the animation from this moment on while keeping the past intact. A transfer of the token will be rendered as a moving brush whose sweeping motion is based on a parameterized lorenz strange attractor. Each brush has its own color, direction and speed, all derived from a pseudo-random seed calculated from the new owner's public key, the timestamp of the transfer and the token ID. Essentially, the art will grow in visual complexity as it is being passed around but will remain visually simple for those who hodl.