Despite considering myself a cryptographer, I have not found myself
particularly drawn to “crypto.” I don’t think I’ve ever actually said
the words “get off my lawn,” but I’m much more likely to click on
Pepperidge Farm Remembers flavored memes about how “crypto” used to
mean “cryptography” than I am the latest NFT drop.

Also – cards on the table here – I don’t share the same generational
excitement for moving all aspects of life into an instrumented economy.

Even strictly on the technological level, though, I haven’t yet managed
to become a believer. So given all of the recent attention into what is
now being called web3, I decided to explore some of what has been
happening in that space more thoroughly to see what I may be missing.
[...]

It’s probably good to have some clarity on why centralized platforms
emerged to begin with, and in my mind the explanation is pretty simple:

1. People don’t want to run their own servers, and never will. [...]
2. A protocol moves much more slowly than a platform. [...]

But web3 intends to be different, so let’s take a look. In order to get
a quick feeling for the space and a better understanding for what the
future may hold, I decided to build a couple of dApps and create an NFT.

# Making some distributed apps

To get a feeling for the web3 world, I made a dApp called Autonomous
Art that lets anyone mint a token for an NFT by making a visual
contribution to it. The cost of making a visual contribution increases
over time, and the funds a contributor pays to mint are distributed to
all previous artists (visualizing this financial structure would
resemble something similar to a pyramid shape). At the time of this
writing, over $38k USD has gone into creating this collective art piece.

I also made a dApp called First Derivative that allows you to create,
discover, and exchange NFT derivatives which track an underlying NFT,
similar to financial derivatives which track an underlying asset ;-)
[...]

whether it’s running on mobile or the web, a dApp like Autonomous Art
or First Derivative needs to interact with the blockchain somehow [...]
That’s not really possible to do from the client, though, since the
blockchain can’t live on your mobile device (or in your desktop browser
realistically). So the only alternative is to interact with the
blockchain via a node that’s running remotely on a server somewhere.

A server! But, as we know, people don’t want to run their own servers.
As it happens, companies have emerged that sell API access to an
ethereum node they run as a service [...]

Almost all dApps use either Infura or Alchemy in order to interact with
the blockchain. In fact, even when you connect a wallet like MetaMask
to a dApp, and the dApp interacts with the blockchain via your wallet,
MetaMask is just making calls to Infura!

These client APIs are not using anything to verify blockchain state or
the authenticity of responses. The results aren’t even signed. An app
like Autonomous Art says “hey what’s the output of this view function
on this smart contract,” Alchemy or Infura responds with a JSON blob
that says “this is the output,” and the app renders it.

This was surprising to me. So much work, energy, and time has gone into
creating a trustless distributed consensus mechanism, but virtually all
clients that wish to access it do so by simply trusting the outputs
from these two companies without any further verification.

# Making an NFT

I also wanted to create a more traditional NFT. Most people think of
images and digital art when they think of NFTs, but NFTs generally do
not store that data on-chain. For most NFTs of most images, that would
be much too expensive.

Instead of storing the data on-chain, NFTs instead contain a URL that
points to the data. [...] Anyone with access to that machine, anyone
who buys that domain name in the future, or anyone who compromises that
machine can change the image, title, description, etc for the NFT to
whatever they’d like at any time (regardless of whether or not they
“own” the token).

So as an experiment, I made an NFT that changes based on who is looking
at it, since the web server that serves the image can choose to serve
different images based on the IP or User Agent of the requester. For
example, it looked one way on OpenSea, another way on Rarible, but when
you buy it and view it from your crypto wallet, it will always display
as a large [SMILING-SHIT] emoji.
There’s nothing unusual about this NFT, it’s how the NFT specifications
are built. Many of the highest priced NFTs could turn into
[SMILING-SHIT] emoji at any time; I just made it explicit.

After a few days, without warning or explanation, the NFT I made was
removed from OpenSea (an NFT marketplace) [...]

The takedown suggests that I violated some Term Of Service, but after
reading the terms, I don’t see any that prohibit an NFT which changes
based on where it is being looked at from, and I was openly describing
it that way.

What I found most interesting, though, is that after OpenSea removed my
NFT, it also no longer appeared in any crypto wallet on my device. 
This is web3, though, how is that possible? [...]
_______________________________________________
nexa mailing list
nexa@server-nexa.polito.it
https://server-nexa.polito.it/cgi-bin/mailman/listinfo/nexa

Reply via email to