Oct 3 2021
Token, Hash

To buy an NFT is to pay to put your wallet address beside a number in a distributed database. This database becomes the point from which all the social and emotional dynamics of ownership emerge, yet the link between this distributed database and its visual representation can be quite tenuous. 

CryptoPunks attempt to solidify this link between ID and image by embedding an encoded version of all the punks in their contract. This image circulates freely online, but the authenticity of any image can be verified by entering its data into a cryptographic hash function and comparing the output to the hash encoded in the contract.

 

Artists such as Deafbeef have taken further steps to strengthen the link between token ID and artwork by encoding the parameters for each audio-visual artwork on-chain, and embedding the scripts used to generate the work on each transaction. This provides the collector with all the code necessary to recreate the artwork, should the original render be lost or damaged.  

Projects such as Loot are considered fully ‘on-chain,’ storing all data on the blockchain and generating the visual components of the artwork on the blockchain. This removes the need for a collector to run parameters through scripts, but introduces new challenges.

Randomness is key to generative work, but typical random functions return different values each time they are called. If these functions were used in on-chain generative projects, the image for a given token ID would change each time it was viewed.

To solve this issue, artists working on-chain generate their random values deterministically. Deterministic number generation relies on the same cryptographic hash function which CrytoPunks used to encode their image of all punks; provided with a consistent input, the function returns a consistent output. Important, though is that any small change in the input will result in a wildly and randomly different output.

In the case of Loot, randomness is obtained by feeding a hash function a piece of in combination with the token ID. The hash function will return the same value each time WEAPON56 is input but will give a non-predictably different value if WEAPON57 is entered.

The resulting number output from the hash function is very long, and to become useful as a selector for a list of weapons, the hash is divided by the number of items in a list, and the remainder is used as an index for that list of weapons. This approach can be applied to different lists of items of varying lengths, a single hash branching into a new random value for each list.

Autoglyphs, Loot, Artblocks et al. each input different values to their deterministic generation functions, but the central concept remains the same; use a stable input to return a stable, random value.

Images for on-chain NFT projects are drawn anew each time they are requested, all randomness growing from the token ID and its hashed value.

In Token Hash these two values which originate the complex structure of the generative on-chain NFT are laid bare. The hash is rounded to the size of the collection, allowing these two numbers to express the core characteristics of the on-chain generative NFT; rarity, symmetry and beauty.



Token Hash public sale opens Thursday Oct 7 at 10 am EST.
1000 tokens will be available for sequential minting, at 0.02 ETH each.


http://tokenhash.jonathanchomko.com/
https://opensea.io/collection/token-hash