The WAGMIGOTCHI Experience
Update: In the time between my original Discord thread and this post, someone has offered me 1.2 Ethereum for my NFT. That is currently worth about $4000 USD. 🤯
I recently had a conversation about NFTs with some friends from outside the space, and ended up doing a discord thread on the topic. I wanted to share that writeup here as well, in case it helps anyone else make sense of this whole space. In this case, I was writing for a group of philosophers, so it does wax a bit philosophical at the end!
I recently minted an NFT. It currently exists in my wallet. I could look at the data a few different ways. First, I could view its raw data by interfacing directly with the blockchain. If we want to move up a level of abstraction, we could interact with the smart contract on a website like EtherScan. Here, I can enter the address for a wallet, transaction, token, etc, and view information on it in a nicely parsed format. EtherScan itself interfaces directly with the blockchain on their backend, and serves nicely formatted data up as a service to developers and individual users. Here is the interface for the smart contract for my NFT: https://etherscan.io/token/0x75c3b1035b1898dc96c22481f886a80adfd69c7a?a=61#readContract
If you scroll down to the “tokenURI” section and expand it, you can enter my token ID (61) and click the “Query” button to see the Uniform Resource Identifier (URI) for my token. The URI is used to specify either the location of data to be associated with the NFT (so, a website URL), or the data itself, which is the case here. If you check out my token’s URI, it looks like complete gibberish unless you speak a verify specific language called Base64.
Luckily, we don’t need to learn how to speak Base64, there are websites that translate this language into something that’s a bit more readable. We can decode the tokenURI data for my NFT on https://www.base64decode.net. If I copy and paste the Base64-encoded data from my token into the website, I can get a better sense of what that data represents. Let’s see what we have:
Ok, so it looks like we can see that the NFT exists on the blockchain as an actual entity in and of itself, it is not pointing elsewhere. It has a name, a description, and an attribute named “Love” with a value of 16. There’s also more Base64 data! There are hints in this data as to how we should interpret it. Those hints are used both by people and software when it comes time to decide how to process a given blob of data. This one looks like it’s an image:
The “data:image/svg+xml;base64” prefix tells us that this data should be interpreted as an image, in a graphics file format known as SVG (Scalable Vector Graphics) that is written in XML (Extensible Markup Language). The SVG format allows resizing of an image without loss in resolution. If you’ve ever tried scaling an image that uses a Vector format (such as a .jpeg or .png file), you’ll know that the results are generally pretty pixelated and terrible looking. XML is another language that both humans and machines can read, and much readily than Base64.
So, taking what we already know, let’s copy this hidden Base64-encoded data we just uncovered (not including the “data:image/svg+xml;base64” prefix) and paste in back into the same Base64 decoding website as before. Here is the result:
Let’s take a minute to orient ourselves here. So far we’ve located my specific NFT token on the blockchain, extracted the data it contained, and decoded it into a format that we can somewhat understand. We know it’s an entity that has a name, a description, an attribute named “Love” with a value of 16, and an image that is associated with it. When we decoded the image data, we found something that’s more readable, but not by much.
If you’ve ever written a webpage (or accidentally clicked “view source” on a webpage), the revealed text might look familiar, but for the vast majority this will still just look like gibberish. So, what should we do in this situation? Well, luckily we live in the 21st century and Wikipedia is just a hop away. If we take a look at the Wikipedia page for the SVG file format, we find that there is a helpful example that shows the relationship between these cryptic strings of text and their representation as an image:
All of the information needed to draw the entire image is present in the XML text, including setting the position, dimensions, and color of the various visual elements. Ignore the strange syntax in the text, and let your eyes pass over it until they pick out familiar words. Then, see if you can identify where or how that word relates to the example image. Do you see where the orange circle, as represented in the image above, is defined in the XML text?
This example is pretty basic, and doesn’t show many of the capabilities we could utilize, such as color gradients, opacity settings (allowing visual layers to be represented with varying degrees of transparency to the layers below), and image component manipulation (stretching, rotating, etc). These are all things that are utilized by the SVG embedded in my NFT as it exists on the blockchain.
I’m not going to make anyone suffer by trying to step through that nightmare of an example! Instead, let’s just skip directly to the next step where we enlist the aid of a website to do the heavy lifting for us, and translate this code into an image that can be represented visually.
So, taking the output from step 5, let’s paste it into the “Code:” box on https://www.freecodeformat.com/svg-editor.php, and click the “Draw” button. Lo and behold, an image doth appear!
So now we know what this little entity, who has a name, a description, and an attribute called Love, also has a visual representation. And it’s surprisingly cute compared to those strings of gibberish we were looking at just a minute ago. Ok, great you say, there’s this data on the blockchain that encapsulates a self-contained representation of…something. So what exactly is this thing?
We’ll come back to that question a bit later, so keep chewing on it in the back of your head for now.
A common argument against NFTs is that they don’t really “exist” on the blockchain, that the blockchain simply points to something outside itself and says “All meaning is derived from this externality.” What happens if the website hosting that representation goes down? The meaning is erased, obliterated. There is nothing being pointed at by the blockchain anymore. (One could argue that anything the blockchain points to outside itself is devoid of meaning for this very reason). Well, you could argue, what if we were sure the website would stay up. What if… what if a really big company was running this external store of representational data, wouldn’t that solve the problem? Oh…wait…
If the data representing our NFT is actually stored in the blockchain itself, we don’t have to worry about threats to an external records custodian; as long as the blockchain itself exists the data will permanently be a part of it. Now, there are practical size limits to what can actually be encoded in the blockchain from a cost and performance perspective, so we don’t have unlimited capability here — there’s a reason most projects link to an external tokenURI.
However, some people are looking at NFTs in a different way. Loot Project, which launched at the end of August, took a different approach — instead of relying on meaning being derived from a single external source (and thus single point of failure), all meaning is encapsulated within the NFT itself, and a bottom-up approach is then taken by the community as a whole, to build meaning in whatever way they see fit. Any single token takes on whatever meaning the community decides to give it, and over the past month a ton of developers, writers, musicians, and artists have come together to build just that.
So far a ton of content has been created from scratch by a community that is open and sharing, building on each others success and source code. It is the true essence of a collaborative internet, and it exists in different times and different places online. I’ve been lucky to witness the process firsthand (and even participate to a small extent) back right before the App Store caught on and everyone realized just how big “Apps” were going to be in all of our lives within a very short time period.
This period of cooperation won’t last forever, but it is the burning ember of creativity that always exists at the forefront of new spaces, and right now is a period of intense creation in this space. It’s pretty amazing to watch, and this time around I’m actively participating in the discourse and experience itself.
So, let’s go back to the NFT I minted. What is it, exactly? We know it’s not like most NFTs, that it is encoded in its entirety on the blockchain. We figured out a way to decode that data, and view a visual representation of the token. We had to jump through a bunch of hoops to do that. I know I wouldn’t be very interested in NFTs if I had to take those steps every time I wanted to take a look at one. Well, of course someone encountered that problem and said “I’m going to make that into a website!” and so they did. Here is the NFT I minted as viewable on OpenSea, a website that acts as a digital marketplace where you can buy, sell, and view NFTs:
We can see that the Love value is a variable, on a scale of 1–85. We can also see that someone made me on offer on my NFT. They want to pay me $255.32 for it. What in the world?! Why is this little piece of data, that exists on the blockchain, worth so much money? Well, let’s take a look at the entire collection that this particular NFT belongs to: https://opensea.io/collection/postcards-from-paradise
The project is described thusly: “postcards from paradise (aka “PFPs”) are proof of kindness. feel free to use them in any way you want”
They came from an online experiment that took place last month, where you could take care of a virtual blockchain pet (a la the Tamagotchi craze from the 90’s) by feeding it, playing with it, cleaning it, and getting it to sleep.
These interactions were all very simplified at first — you had to interact directly with the blockchain to take these actions.
But soon enough someone in the community made a front-end:
You had to pay an ethereum network fee to take these actions. That fee varied depending on the time of day and volume of traffic on the ethereum network, and there was no expectation of reward, as this was posited as an experiment:
So in September, there was a small digital creature that lived on the blockchain. It was code that had the capacity for introspection, and self-modification to some extent (still following within the rules of its smart contract). Some people took care of it, checking in on it to see if it needed to be fed, or played with. These interactions technically meant nothing. It was just data being passed around on various networks. But something happened during the experiment, especially after the cute website frontend was created — people got attached to the little creature.
Myself included.
I participated in the experiment, checking in when I thought about the little guy, and taking care of him when I could. At first there were many people participating in the experiment, and the creature stayed happy, healthy, and clean. During this time, the experiment’s creator was on his honeymoon. I think there was this unspoken feeling that it would be cool to see if we could keep this little digital entity alive at least until the project creator returned from his honeymoon.
Over time fewer and fewer people thought to check in on him.
I wasn’t surprised by my emotional response to that. There was something to the communal responsibility of caring for this little digital entity that resonated on a level often missing in our discourse and interactions in real life these days.
So the epilogue is that anybody who participated in the experiment was able to mint an NFT to commemorate something that was, at its core, just an ethereum smart contract on the blockchain, but at the same time, a small group of people turned it into something more than just data for a brief period of time.
Now let’s look at the way this NFT is a status symbol, going back to the question of why anybody would want to offer me $250 for it.
First, these are relatively scare. Not too many people participated in this experiment, and they are limited to one-per-person (well, technically one per wallet address) as far as redemption goes. The “Love” attribute had to do with how many times you interacted with the digital pet while it was alive. Every time you took care of it, it kept track, and this count is reflected not only in the attribute data of the final NFT, but also in its visual representation.
The more you interacted with the experiment by taking care of the digital pet, the more intricate the art turned out to be on the NFT. People who interacted with the experiment 14 or more times were rewarded with a unique attribute in the art in the form of a halo. The conversation about collectibles and the NFT space requires its own separate writeup, but suffice it to say for now that artificial digital scarcity is a thing, and people act much the same way in online spaces that they do in physical ones. One of these tokens already sold for $7200, so to someone, somewhere, it represents something of quantifiable value.
One of my friends, Greg, asked “Could it, for example, be an algorithm or AI [that creates the NFT?]”. In this case, it literally is. When I minted my NFT by interacting with the smart contract, it checked how many times I had cared for the digital creature when determining how to visually represent it. This is the code where it generated all of the image attributes based off my interactions with it:
So, back to the original question: What does my NFT represent? It’s data on the blockchain, written in a language that machines understand and (most) people do not. It’s the underlying representation of that same data in a more human-readable format. It’s instructions on how to draw a visual representation of itself. It was an unexpected reward for a kindness given by humans in caring for a machine. It’s worth money to some people. Is it priceless for others? What are memories worth?
This experiment started from a level of abstraction that can be hard to understand, let alone visualize. And yet it became something more visceral and real as time went on. Why do I feel sad that a virtual pet died, when it was never alive in any sense of the word (as we generally conceive of it, at least)? I felt a sense of pride every time I checked on him only to find him happy, healthy, and well-fed, to see that visual confirmation that others were doing their part to care for our shared responsibility. Would I have felt the same had there not been an early visual representation of the experiment to interact with? That was born out of chance, out of the community seeing a way to create a better experience and embracing it.
Wrapping things up: This was just scratching the very surface of a huge topic. I am positive a lot of what I said went over a lot of heads. I’ve always been really interested in communicating technical topics on an accessible level, and y’all are my first audience for this piece. If there is anything I can clarify or explain in more detail please do not hesitate to ask. Any and all commentary, critiques, and feedback are heartily appreciated. Thanks for taking a dive into a topic I find fascinating!
I will be working on revising this piece further, so definitely let me know where I can work on trying to bring the technical aspects down to earth a bit. I tried to do so here, but oftentimes it is difficult to explain these topics in concrete terms when everything is so abstract at the technical level! Working on bridging that gap is one of my primary goals in technology education.
This is a space where all the things that I love exist together, from AR and VR to new experiments in music, community building, and creative expression. I want to be a part of this going forward, I want to write more pieces like this, and I want to write code to help bring usability and accessibility to the NFT space.
I’ve been trying to help when and where I can, and this is me giving back to the community. Thank you to everyone who shows up to make this community better, you are an inspiration to share knowledge each and every day.
References:
https://etherscan.io/token/0x75c3b1035b1898dc96c22481f886a80adfd69c7a?a=61#readContract
https://www.freecodeformat.com/svg-editor.php
https://www.theverge.com/2021/10/4/22708989/instagram-facebook-outage-messenger-whatsapp-error
https://opensea.io/assets/0x75c3b1035b1898dc96c22481f886a80adfd69c7a/61