In Response to My first impressions of web3
Both gave me a feeling for how the space works. To be clear, there is nothing particularly “distributed” about the apps themselves: they’re just normal react websites. The “distributedness” refers to where the state and the logic/permissions for updating the state lives: on the blockchain instead of in a “centralized” database.
Just to clarify, this is what the author wanted to do. You can create distributed apps really easily using Fleek or by manually uploading to IPFS, Arweave or Filecoin.
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, along with providing analytics, enhanced APIs they’ve built on top of the default ethereum APIs, and access to historical transactions. Which sounds… familiar. At this point, there are basically two companies. 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!
This is true at the moment, but there is work being done on Light Clients which:
The purpose of the light client protocol is to allow users in low-capacity environments (embedded smart property environments, smartphones, browser extensions, some desktops, etc) to maintain a high-security assurance about the current state of some particular part of the Ethereum state or verify the execution of a transaction.
And also alternatives to Infura such as Pockt Network which is a decentralised Web3 infrastructurue company. Per Pockt Network’s website:
Instead of deploying to a single service provider, paying absurd fees for random outages and leaked data, tap into Pocket’s trustless API protocol and route your requests to 1000’s of independent full nodes. Available for all major blockchain networks.
Moxie then goes on to say….
These client APIs are not using anything to verify blockchain state or the authenticity of responses. The results aren’t even signed.
Both of the proposed solutions solve this.
Moxie then talks about:
Partisans of the blockchain might say that it’s okay if these types of centralized platforms emerge, because the state itself is available on the blockchain, so if these platforms misbehave clients can simply move elsewhere. However, I would suggest that this is a very simplistic view of the dynamics that make platforms what they are. 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.
This is true, most NFTs do not store data on-chain. But this is not always true, you can store the data on the chain. You can also use alterantive layer-1s such as Tezos, https://www.avax.network/ which makes it much more cost efficient to store on-chain data. However, I am not a fan of this. One of the big rebuttals we don’t have an answer for is “what if we store illegal images on the chain?” currently it is too expensive to do so, but genuinely there is no work being done on this that I can see and it is a concern for everyone.
You also have to consider sending NFTs to other people that’s prohibitivly expensive to sell. You can easily make an NFT that costs, say, $4000 to sell (just make it contain a lot of data) and this person will be stuck with it attached to their identity forever. Opensea let’s you “hide” them, but this only works on their frontend.
Looking at many of the NFTs on popular marketplaces being sold for tens, hundreds, or millions of dollars, that URL often just points to some VPS running Apache somewhere.
This is a lie. Most NFTs which sell for millions use IPFS, Arweave, Filecoin or others for decentralised storage of data. A lot of NFTs do use Google Drive or Imgur or whatever. However, I can promise you that one of the first things people do when making sure they are not rugged (crypto-term for scammed) is to make sure it’s not possible for the author to suddenly delete or change the image.
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.
I just wanted to point out that this was hillarious and I saw it was taken down by Opensea. My belief is that image changing is often related to scams, so Opensea took it down thinking it was a scam.
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. A wallet like MetaMask needs to do basic things like display your balance, your recent transactions, and your NFTs, as well as more complex things like constructing transactions, interacting with smart contracts, etc. In short, MetaMask needs to interact with the blockchain, but the blockchain has been built such that clients like MetaMask can’t interact with it. So like my dApp, MetaMask accomplishes this by making API calls to three companies that have consolidated in this space. All this means that if your NFT is removed from OpenSea, it also disappears from your wallet. It doesn’t functionally matter that my NFT is indelibly on the blockchain somewhere, because the wallet (and increasingly everything else in the ecosystem) is just using the OpenSea API to display NFTs, which began returning 304 No Content for the query of NFTs owned by my address!
This is true, wallets suck so much it’s actually funny. I was sent a £2k NFT the other day which I can’t sell because Opensea has glitched and my wallet won’t show me the NFT, which means I can’t send it or sell it! (they are working on this, and I have told them that relying on centralised Opensea is a very bad idea)
I think this is a very fair comment from Moxie and we should absolutely dunk on wallets and Opensea for this mess they’ve created. However, I wanted to point out that people in Web3 don’t sit idly by and enjoy this centralised mess. We are actively building alternatives!
Likewise, the web3 protocols are slow to evolve. When building First Derivative, it would have been great to price minting derivatives as a percentage of the underlying’s value. That data isn’t on chain, but it’s in an API that OpenSea will give you.
This is how markets work, and why arbitrage exists. See Flash Boys for how this works in the stock market. Your NFT is only worth what someone wants to pay. Someone on Opensea may pay 5 eth for it, but someone on Discord may pay 10 eth.
You chose to use Opensea to get the value of what people on Opensea will pay you for. That data isn’t on chain because that’s not how markets work. This is like saying that you expect the price of Apples to be the same in the UK as it is in China. They’re going to be priced differently and deciding on one single price is impossible.
People are excited about NFT royalties for the way that can benefit creators, but royalties aren’t specified in ERC-721
so OpenSea has its own way of configuring royalties that exists in web2 space. Iterating quickly on centralized platforms is already outpacing the distributed protocols and consolidating control into platforms.
This is true, but also, fuck Opensea.
“It’s early days still” is the most common refrain I see from people in the web3 space when discussing matters like these. In some ways, cryptocurrency’s failure to scale beyond relatively nascent engineering is what makes it possible to consider the days “early,” since objectively it has already been a decade or more.
This is because it is early days, still. As you could read from my article there is so much work being done. NFTs are only 3 years old. There is so much work being done on layer 2s and layer-1 solutions.
When you think about it, OpenSea would actually be much “better” in the immediate sense if all the web3 parts were gone. It would be faster, cheaper for everyone, and easier to use. For example, to accept a bid on my NFT, I would have had to pay over $80-$150+ just in ethereum transaction fees.
This sounds like you’re describing a layer-2 solution, thankfully Opensea supports polygon which does make it cheaper, faster, and easier to use. I am personally hoping for zk-rollups to really make it cheaper, easier to use.
So the money draws people into OpenSea, they improve the experience by building a platform that iterates on the underlying web3 protocols in web2 space, they eventually offer the ability to “mint” NFTs through OpenSea itself instead of through your own smart contract, and eventually this all opens the door for Coinbase to offer access to the validated NFT market with their own platform via your debit card. That opens the door to Coinbase managing the tokens themselves through dark pools that Coinbase holds, which helpfully eliminates the transaction fees and makes it possible to avoid having to interact with smart contracts at all. Eventually, all the web3 parts are gone, and you have a website for buying and selling JPEGS with your debit card. The project can’t start as a web2 platform because of the market dynamics, but the same market dynamics and the fundamental forces of centralization will likely drive it to end up there.
Moxie is right about this currently. It is harder to use true web3 stuff then it is to use a centralised platform. The user experience of Web3 is its biggest problem, and something we are all working very hard on. Things like Argent Wallet are working hard to improve this, but we still have a long way to go because we are in the early days.
I think was this a fair article that accurcately portrays some parts of web3 at this given moment in time. Moxie mentions:
I have only dipped my toe in the waters of web3.
Which is fair. I just thought I’d write this and explain what’s being done to fix this and go further. My personal pet hates for crypto are:
- Illegal images being sent to your wallet, forcing you to go to prison in some places.
- Fuck Opensea and fuck any provider who uses centralised tech.