Essentials
Welcome to fxhash
Web3 Fundamentals
The fxhash Ecosystem
Getting Started
Artist Guides
By now, you likely have a basic understanding of what fxhash is and how generative art functions - in a nutshell, fxhash is a platform that enables generative artists to sell generative artworks via blockchain technology.
If these concepts are new to you, they might raise several questions: how does that actually work? How do generative artists make generative art on fxhash? How do collectors collect generative art on fxhash? And what does "collecting a generative artwork" actually mean?
All of this can be better explained by having a look at the central digital token that fx(hash) revolves around: the Generative Token. Understanding the workings of these digital 'generative' tokens will also clarify the fxhash paradigm, and serve as an entry point to more technical blockchain related topics.
We defined generative artworks as code based systems that have the ability to generate different kinds of media artifacts - on fxhash this most commonly occurs under the form of static and animated computer graphics. In this scenario, Generative Tokens are simply generative artworks that live on fxhash.
Because fxhash is a web-based platform that serves content over the internet, generative artworks that are created on fxhash are small self-contained web projects, which are presented on fxhash via the interface that it provides and that allows various manners of interaction with them. This means that generative tokens are little bundles of code that represent tiny websites, with the purpose of displaying visuals, occasionally play sounds, and are sometimes even interactive. Depending on what the artist aims to express, these generative tokens can come in many shapes and forms.
<aside> <img src="https://prod-files-secure.s3.us-west-2.amazonaws.com/f9d1e984-50ed-4650-a543-95d2b6c0ba90/b3a5826e-515d-4bf5-b0cf-9237f4db9c3c/fx_doc-icon_info_001.png" alt="https://prod-files-secure.s3.us-west-2.amazonaws.com/f9d1e984-50ed-4650-a543-95d2b6c0ba90/b3a5826e-515d-4bf5-b0cf-9237f4db9c3c/fx_doc-icon_info_001.png" width="40px" /> What is a Generative Token/GENTK?
The term 'Generative Token,' abbreviated as GENTK, essentially refers to a generative artwork produced by a project on fxhash. It is created by leveraging the artist created code, the fxhash platform and blockchain technology.
</aside>
It is also important to explain how artist created generative art projects exist on fxhash. Traditionally, storing files directly on the blockchain is uncommon - due to cost and storage reasons. For Web3 purposes a solution like IPFS is usually used; a peer-to-peer distributed file storage and retrieval protocol. How IPFS works is explained in more detail in the IPFS section. With the release of ONCHFS it is now also possible to store project files directly on the blockchain - covered in detail in the ONCHFS section. When creating a new project on fxhash, artists now have the option to choose between these two storage methods.
So what is actually stored on the blockchain when an fx(hash) project is created? In essence it is a metadata file that holds descriptive information about the NFT that represents this project, alongside a pointer to the actual project files/code that is stored on IPFS or ONCHFS.
Yes, GENTKs are NFTs. The best way to put it is that the artist created projects on fxhash are generators for NFTs.
Although a project on fxhash is itself a Non-Fungible Token; when a collector collects a generative token, they obtain an individual output generated by this generative token. Once collected, we also often refer to these outputs as iterations:
<aside> <img src="https://prod-files-secure.s3.us-west-2.amazonaws.com/f9d1e984-50ed-4650-a543-95d2b6c0ba90/568aedec-6562-431a-bd30-366b3bf6bbd3/fx_doc-icon_info_001.png" alt="https://prod-files-secure.s3.us-west-2.amazonaws.com/f9d1e984-50ed-4650-a543-95d2b6c0ba90/568aedec-6562-431a-bd30-366b3bf6bbd3/fx_doc-icon_info_001.png" width="40px" /> Iteration: A unique output that is created by the generative token for the collectors that purchase a copy of a generative token.
With the term iteration we're indirectly alluding to the notion of repetition in programming - we often use the term iteration or iterating in the context of instructions that are repeated a certain number of times.
</aside>
This collected iteration is a GENTK and an NFT.
In contrast to traditional NFTs, where the NFT is simply transferred from the seller to buyer during a blockchain transaction - on fx(hash) a project acts as a generator that creates/spawns a new NFT when it is collected (limited to an artist specified number of editions). Naturally, collected iterations can later on be traded and resold just like normal NFTs.
And just like most other NFTs (that aren't stored directly on-chain), a GENTK isn't simply a PNG/JPEG version of the collected generative artwork - but rather, by virtue of how the blockchain functions, constitutes a proof of ownership.
This means that when a collector collects an iteration, what actually happens is that they obtain ownership of a metadata token that is written to the blockchain. This metadata holds a pointer to the project files of the collected GENTK on IPFS or ONCHFS - in addition to information that allows the collector to query their own unique output from this generator.
<aside> <img src="https://prod-files-secure.s3.us-west-2.amazonaws.com/f9d1e984-50ed-4650-a543-95d2b6c0ba90/19155339-0c56-4da6-b1ff-bf1258d34794/fx_doc-icon_info_001.png" alt="https://prod-files-secure.s3.us-west-2.amazonaws.com/f9d1e984-50ed-4650-a543-95d2b6c0ba90/19155339-0c56-4da6-b1ff-bf1258d34794/fx_doc-icon_info_001.png" width="40px" /> Metadata: Data that provides information about other data. It describes various aspects of data, such as its content, structure, and context, making it easier to organize, search for, and understand. In this scenario the metadata at hand describes the iteration that has been collected.
</aside>
So, if a collected iteration is simply some metadata on the blockchain, and not the image itself, how does this metadata information allow us to retrieve the actual artwork? Let's break this down.
To repeat - traditionally, generative artworks are generators that produce visually distinct outputs every time their program code is executed - that's why we call them generative! This process typically involves random number generators and other random decision-making procedures. In this setting randomness becomes an important ingredient to allow for a large variety of outputs.
However, once a GENTK is collected, the generator must be able to re-create that exact GENTK in the future.
In other words, we want to be able to query certain outputs from a generative token, such that the token isn't just a random generator that spits out outputs only for them to be never seen again. In the world of computing, the generator would be considered a deterministic system:
<aside> <img src="https://prod-files-secure.s3.us-west-2.amazonaws.com/f9d1e984-50ed-4650-a543-95d2b6c0ba90/4cb7f633-e360-4e3a-9245-9e50a96f35af/fx_doc-icon_info_001.png" alt="https://prod-files-secure.s3.us-west-2.amazonaws.com/f9d1e984-50ed-4650-a543-95d2b6c0ba90/4cb7f633-e360-4e3a-9245-9e50a96f35af/fx_doc-icon_info_001.png" width="40px" /> Deterministic System: "Deterministic" is an adjective used to describe systems, processes, or events that are predictable and governed by fixed rules or deterministic algorithms. In a deterministic system, given the same initial conditions and inputs, the outcome or behavior is certain and follows a specific, predefined path.
</aside>
How does this work? Naturally, we can't expect a generative token to just magically be able to guess which output we're expecting - we need to at least provide it with some starting information to go off of, and also have it built in such a manner that it can turn this starting condition into the desired output consistently and reliably.
In other words, we need a mechanism to query specific GENTKs.
Although it might seem that random number generators used in GENTKs generate arbitrary sequences of random numbers, they are in actuality not truly random - they are in fact pseudorandom:
<aside> <img src="https://prod-files-secure.s3.us-west-2.amazonaws.com/f9d1e984-50ed-4650-a543-95d2b6c0ba90/c413485c-ae53-477f-8d1d-1e8a7e6097f3/fx_doc-icon_info_001.png" alt="https://prod-files-secure.s3.us-west-2.amazonaws.com/f9d1e984-50ed-4650-a543-95d2b6c0ba90/c413485c-ae53-477f-8d1d-1e8a7e6097f3/fx_doc-icon_info_001.png" width="40px" /> Pseudorandom Number Generators: abbreviated with the acronym PRNG, pseudorandom number generators are mathematical functions with the ability to generate sequences of random numbers that appear to be random but are actually generated in a deterministic manner. This means that the generated sequences are in reality predictable and reproducible - which is an important property for many applications; especially in the context of generative tokens.
</aside>
The exact sequence of "random" numbers generated by a PRNG is usually determined by an initial seed value:
<aside> <img src="https://prod-files-secure.s3.us-west-2.amazonaws.com/f9d1e984-50ed-4650-a543-95d2b6c0ba90/c9512939-9373-4012-8fba-9a323b31e282/fx_doc-icon_info_001.png" alt="https://prod-files-secure.s3.us-west-2.amazonaws.com/f9d1e984-50ed-4650-a543-95d2b6c0ba90/c9512939-9373-4012-8fba-9a323b31e282/fx_doc-icon_info_001.png" width="40px" />
Random Seed: the initial input value fed to a random number generator that determines the sequence of random numbers generated.
</aside>
In this manner, given the same initial seed value, we can accurately and reliably guarantee that a GENTK will always re-generate the same output iteration.
<aside> <img src="https://prod-files-secure.s3.us-west-2.amazonaws.com/f9d1e984-50ed-4650-a543-95d2b6c0ba90/09ff7592-3c66-45aa-92f8-4eb6a37efbd3/fx_doc-icon_warning_001.png" alt="https://prod-files-secure.s3.us-west-2.amazonaws.com/f9d1e984-50ed-4650-a543-95d2b6c0ba90/09ff7592-3c66-45aa-92f8-4eb6a37efbd3/fx_doc-icon_warning_001.png" width="40px" /> It's important to point out here that artists hold the responsibility for creating and correctly implementing such deterministic generative artworks - if not done with care, this can lead to a plethora of issues. Although fx(hash) provides the tools to create and publish generative tokens, it can not be guaranteed that these generative tokens always work correctly. Collector discretion is advised.
The artist guides provide comprehensive instructions to this end.
</aside>
However, one question remains: where does this seed value originate?
You might've guessed it already - this random seed is contained within the iteration's metadata that was written to the blockchain. Originally this used to be the blockchain operation hash of the collect transaction that is used as a seed value. This has changed since then however due to some security concerns and a more complex system is in place. More details about this process can be found in the Randomization page.
But to talk about hashes that are used to seed GENTKs generators, they mainly come in the form of long alphanumeric strings - strings of letters and numbers essentially:
<aside> <img src="https://prod-files-secure.s3.us-west-2.amazonaws.com/f9d1e984-50ed-4650-a543-95d2b6c0ba90/9229958a-0213-4504-aabd-ce40d656c090/fx_doc-icon_info_001.png" alt="https://prod-files-secure.s3.us-west-2.amazonaws.com/f9d1e984-50ed-4650-a543-95d2b6c0ba90/9229958a-0213-4504-aabd-ce40d656c090/fx_doc-icon_info_001.png" width="40px" /> Hash: A blockchain operation hash, often simply referred to as a "transaction hash" or "tx hash". It is a unique identifier for a specific transaction on a blockchain. It is a long string of alphanumeric characters that is generated through cryptographic algorithms, and serves as a digital fingerprint for that transaction.
In the context of generative tokens on fx(hash), it's the initial input value that determines the specific iteration a GENTK will produce.
</aside>
Now it should also makes sense why the platform is called fx(hash)!
This is essentially how the fx(hash) paradigm comes to life - immutable blockchain transactions make it possible to distribute unique outputs of deterministic generative artworks to collectors.
Summary
We've covered a lot of ground already, and hopefully you have a much better idea of how fx(hash) works at this point. Although there's still a lot to unpack and talk about- we've set the stage for what's to come in the next sections where we'll discuss some of the introduced notions in greater detail.
Let's slow down for a second and recap everything that we've covered in this section:
If you're an artist and feel a bit intimidated at this point - don't - we've put together the artist guides specifically for this purpose, in which we'll guide through all of the steps to create such a generative token: the tools that fxhash provides to this end, the ins and outs of developing a deterministic generative artwork, as well as artist strategies and best practices for the successful release of your first generative token.
Read on to learn more about the fx(hash) eco-system.
← Previous
Next →